SAML, under the hood: signaturen inde i brevet
SAML logger dig ind på næsten alle arbejdsapps, og dens signatur lever inde i den XML, den underskriver.
SAML logger dig ind på næsten alle arbejdsapps, og dens signatur lever inde i den XML, den underskriver. Under overfladen: login-dansen mellem app, browser og identitetsudbyder, hvordan en "assertion" ser ud, hvorfor kanonisering skal være enig om hver byte, og hvorfor den samme fejlklasse bliver ved med at dukke op fra 2012 til 2025. Fremprovokeret af Trail of Bits' "SAML: A fractal of bad design" (312 point på Hacker News).
Læs den skriftlige udgave (engelsk) ↗
Hvad denne video dækker
- SAML: login'et, der signerer sig selv indefra
- 2002: fire XML-formater, én komité, en hel industri
- Login-dansen: app → identitetsudbyder → tilbage via din browser
- Assertionen: signaturen lever inde i det, den signerer
- Kanonisering: vær enig om hver byte, ellers kan ingen logge ind
Oversat udskrift
Oversat fra den originale engelske fortælling. Tilgængelig lyd og undertekster styres af YouTube.
SAML: login'et, der signerer sig selv indefra
0:00 SAML er den XML, der logger dig ind på næsten alle arbejdsapps, du ejer, og dens signatur lever inde i det dokument, den underskriver, som en notar, der hæfter sit stempel inde i den kuvert, han forsegler. Ti år efter en komité skrev den, testede forskere fjorten SAML- rammeværker. Elleve faldt. Og denne uge ramte et Trail of Bits-indlæg, der kaldte det et fraktal af dårligt design, forsiden af Hacker News. På tre minutter: hvordan login-dansen fungerer, hvor signaturen gemmer sig,
0:27 og hvorfor den løsning, alle er enige om, er en anden protokol. Dette er The Daily Diff, under overfladen.
2002: fire XML-formater, én komité, en hel industri
0:34 To tusind og to. En sikkerhedskomité hos Oasis slår fire leverandør-XML-formater sammen til ét. Universiteter tager det først i brug, derefter bygger Okta en virksomhed på det, det hurtigste en komité-dokument nogensinde blev til indtægter. Du åbner appen.
Login-dansen: app → identitetsudbyder → tilbage via din browser
0:46 Den har ingen idé om, hvem du er, så den sender din browser videre til identitetsudbyderen, sig dit firmas Okta. Du logger ind der. Okta giver din browser et underskrevet XML-dokument, der siger, hvem du er, og browseren poster det tilbage.
Assertionen: signaturen lever inde i det, den signerer
0:59 Dette dokument er "assertionen". Den navngiver brugeren, og signaturen sidder inde i den, og peger tilbage på "assertionen" med dens ID. Og hele sagen går gennem din browser, det vil sige, gennem brugeren. For at kontrollere det, appen
Kanonisering: vær enig om hver byte, ellers kan ingen logge ind
1:11 genopbygger de nøjagtige bytes, der blev underskrevet. Den skærer signaturen ud igen, normaliserer mellemrum og attribut- rækkefølge og hasher resultatet. Det er kanonisering, og hvis de to sider er uenige om en eneste byte, logger ingen ind. Et JSON-web-token gør det anderledes. Header, payload og signatur sidder side om side med prikker imellem. Intet at skære ud først.
2012: checker og læser kigger på forskellige elementer
1:32 Her er fejlen. Koden, der kontrollerer signaturen, og koden, der læser brugernavnet, er ofte to forskellige dele. I 2012 viste et papir kaldet On Breaking SAML, at man kunne flytte den underskrevne "assertion" derhen, hvor læseren ignorerer den, og placere en anden derhen, hvor den leder. Salesforce og Shibboleth var blandt de elleve, der faldt for det. I 2018 viste Duo, at en kommentar inde i et brugernavn kunne få nogle
2018 og 2025: to parsere, to forskellige svar
1:55 biblioteker til kun at læse halvdelen af navnet, mens signaturen stadig passede. I 2025 fandt GitHub to XML-parsere inde i Ruby SAML, der var uenige om det samme dokument. Samme fejl, nyt årti. Trail of Bits kalder det et fraktal, fordi hvert niveau, du zoomer ind på, har den
Hvorfor det bliver ved med at gå i stykker: et fraktal af dårligt design
2:12 samme fejl. Det er bygget på XML, signaturen er indkapslet, og rigtige logins bruger måske en tiendedel af specifikationen. Og det øverste svar på Hacker News kommer fra køberen. Hvis du ikke har SAML-understøttelse, kan jeg finde et produkt, der har. Begge er sandt, hvilket er problemet. Så, mandag. SHIP IT OpenID Connect først, Fly og Tailscale sælger til
Mandag: OIDC først, et vedligeholdt bibliotek, strenge former
2:31 virksomheder helt uden SAML. Hvis en kunde tvinger det, brug et vedligeholdt bibliotek, hold det patchet, og afvis beskeder, der ikke ligner dem, Okta eller Google sender. Skriv aldrig din egen signaturkontrol.
Dom, under overfladen: REVERT
2:43 Dom, under overfladen. REVERT. Næsten femogtyve år, én fejlklasse, der aldrig dør, og den løsning, alle er enige om, er en anden protokol. Sidste lørdag pillede jeg passkeys fra hinanden, så fortæl mig, hvad jeg skal åbne næste gang i kommentarerne. Og det er The Daily Diff for i dag. Jeg er Niko fra Axrisi. Flet ansvarligt.
Kilder
- Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)blog.trailofbits.com
- Hacker News threadnews.ycombinator.com
- Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012www.usenix.org
- Duo Labs, SAML vulnerabilities affecting multiple implementations (2018): https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations · CERT VU#475445www.kb.cert.org
- GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)github.blog



