Using Static Analysis To Detect Vulnerabilities in OpenID Connect Clients
Master thesis
Permanent lenke
https://hdl.handle.net/11250/2777851Utgivelsesdato
2020Metadata
Vis full innførselSamlinger
Sammendrag
OpenID Connect has blitt en bransjestandard for å håndtere autentisering og autoriseringi Web-applikasjoner. Likevel er det vanskelig for utviklere å forstå protokollen og imple-mentere en klient-applikasjon på en sikker måte. Selv om de bruker en SDK som hjelperdem med detaljene, er utviklerne ansvarlige for å presist håndtere datavalidering. Sikkerhet-sanalyse og automatiske verktøy for å finne svakheter kan bli brukt til å sørge for at dennedatavalideringen er gjort skikkelig.Tidligere løsninger på sikkerhetsanlyse og automatiske detekteringsverkøy for OpenIDer for det meste bygget på komplekse, formelle modeller og helhetlige rammeverk for “pene-tration testing”, som dekker hele protokollen. Det er ofte krevende å forstå, utvikle og brukedisse løsningene.Målet med denne masteroppgaven er å introdusere en mer utvikler-orientert måte forå begrense mengden sikkerhetshull i klient-applikasjoner. Denne oppgaven presenterer (1)en pragmatisk modell av protokollflyten, formet som en direkte sjekkliste som er rettet motdet som angår utvikleren, og (2) viser at enkle statiske kodeanalyser som er basert på dennemodellen, kan brukes til å finne svakheter relatert til disse sikkerhetsjekkene.Styrken til analyseteknikkene presenteres eksperimentelt på seks klienter med åpen kildekode.Fire av disse har svakheter. 20 svakheter knyttet til usikker validering av “ID-tokens” bleavdekket. Analysen for validering av ID-tokens fikk en precision på 61%, recall på 95% og enfalsk-negativ-rate på 90%. Presisjonen kan økes ytterligere med noen ukers ingeniørarbeid.Mer pålitelige metrikker kan bli funnet i en stor-skala empirisk studie. OpenID Connect has become a de facto standard for managing authentication and autho-rization in Web applications. It is however challenging for developers to understand the pro-tocol and securely implement a client application. Even using an SDK that helps them alongthe way, developers are responsible for doing data validation in a precise manner. The cor-rectness of this validation can be ensured using security analysis and vulnerability detectiontools.Previous solutions on security analysis and tools for vulnerability detection of OpenIDare mostly based on complex, formal models and comprehensive penetration testing frame-works that cover the whole protocol. These often require much work to understand, developand use.The objective of this thesis is to introduce a more developer-oriented way to ensure fewervulnerabilities in such client applications. This thesis proposes (1) a pragmatic model of theauthorization code flow, as a straightforward checklist targeted specifically at the concernsof the developer, and (2) a demonstration that relatively simple static analysis techniques,based on this model, can be used to find vulnerabilities related to the needed security checks.The effectiveness of the analysis techniques is demonstrated experimentally on six open-source clients, of which four were found to have vulnerabilities. 20 vulnerabilities regardingincomplete or missing token validation were detected. The analyzer for token validationhad a precision of 61%, recall of 100% and a true negative rate of 90%. Its precision may beimproved further with a few weeks of engineering effort. More reliable metrics of its perfor-mance can be found by doing a large-scale empirical study.