dc.contributor.advisor | Li, Jingyue | |
dc.contributor.author | Sørensen, Elias Brattli | |
dc.date.accessioned | 2021-09-15T16:15:13Z | |
dc.date.available | 2021-09-15T16:15:13Z | |
dc.date.issued | 2020 | |
dc.identifier | no.ntnu:inspera:57320302:17872701 | |
dc.identifier.uri | https://hdl.handle.net/11250/2777851 | |
dc.description.abstract | OpenID Connect has blitt en bransjestandard for å håndtere autentisering og autorisering
i 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 hjelper
dem 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 denne
datavalideringen er gjort skikkelig.
Tidligere løsninger på sikkerhetsanlyse og automatiske detekteringsverkøy for OpenID
er 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 bruke
disse 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 mot
det som angår utvikleren, og (2) viser at enkle statiske kodeanalyser som er basert på denne
modellen, 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” ble
avdekket. Analysen for validering av ID-tokens fikk en precision på 61%, recall på 95% og en
falsk-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. | |
dc.description.abstract | 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 along
the 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 detection
tools.
Previous solutions on security analysis and tools for vulnerability detection of OpenID
are mostly based on complex, formal models and comprehensive penetration testing frame-
works that cover the whole protocol. These often require much work to understand, develop
and use.
The objective of this thesis is to introduce a more developer-oriented way to ensure fewer
vulnerabilities in such client applications. This thesis proposes (1) a pragmatic model of the
authorization code flow, as a straightforward checklist targeted specifically at the concerns
of 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 regarding
incomplete or missing token validation were detected. The analyzer for token validation
had a precision of 61%, recall of 100% and a true negative rate of 90%. Its precision may be
improved 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. | |
dc.language | | |
dc.publisher | NTNU | |
dc.title | Using Static Analysis To Detect Vulnerabilities in OpenID Connect Clients | |
dc.type | Master thesis | |