SAML, under the hood: signaturen inne i brevet
SAML logger deg på nesten alle arbeidsapper, og signaturen ligger inne i XML-en den signerer.
SAML logger deg på nesten alle arbeidsapper, og signaturen ligger inne i XML-en den signerer. Under panseret: påloggingsdansen mellom app, nettleser og identitetsleverandør, hvordan en påstand ser ut, hvorfor kanoniskgjøring må være enig om hver byte, og hvorfor den samme feilklassen fortsetter å komme tilbake fra 2012 til 2025. Fremprovosert av Trail of Bits' "SAML: A fractal of bad design" (312 poeng på Hacker News).
Les den skriftlige utgaven (engelsk) ↗
Hva denne videoen dekker
- SAML: påloggingen som signerer seg selv fra innsiden
- 2002: fire XML-formater, én komité, en hel bransje
- Påloggingsdansen: app → identitetsleverandør → tilbake via nettleseren din
- Påstanden: signaturen lever inne i det den signerer
- Kanoniskgjøring: enig om hver byte, ellers logger ingen inn
Oversatt transkripsjon
Oversatt fra den originale engelske fortellingen. Tilgjengelig lyd og undertekster kontrolleres av YouTube.
SAML: påloggingen som signerer seg selv fra innsiden
0:00 SAML er XML-en som logger deg på nesten alle arbeidsapper du eier, og signaturen ligger inne i dokumentet den signerer, som en notarius som stifter sitt stempel inne i konvolutten han forsegler. Ti år etter at en komité skrev det, testet forskere fjorten SAML rammeverk. Elleve falt. Og denne uken traff et Trail of Bits-innlegg som kalte det et fraktal av dårlig design forsiden av Hacker News. På tre minutter: hvordan påloggingsdansen fungerer, hvor signaturen skjuler seg,
0:27 og hvorfor løsningen alle er enige om er en annen protokoll. Dette er The Daily Diff, under panseret.
2002: fire XML-formater, én komité, en hel bransje
0:34 To tusen og to. En sikkerhetskomité i Oasis slår sammen fire leverandør-XML-formater til ett. Universiteter tar det i bruk først, så bygger Okta et selskap på det, den raskeste et komitédokument noensinne ble til inntekt. Du åpner appen.
Påloggingsdansen: app → identitetsleverandør → tilbake via nettleseren din
0:46 Den har ingen anelse om hvem du er, så den sender nettleseren din til identitetsleverandøren, si selskapets Okta. Du logger inn der. Okta gir nettleseren din et signert XML-dokument som sier hvem du er, og nettleseren legger det ut igjen.
Påstanden: signaturen lever inne i det den signerer
0:59 Det dokumentet er påstanden. Det navngir brukeren, og signaturen sitter inne i det, som peker tilbake til påstanden med dens ID. Og hele greia går gjennom nettleseren din, det vil si, gjennom brukeren. For å sjekke det, bygger appen
Kanoniskgjøring: enig om hver byte, ellers logger ingen inn
1:11 de nøyaktige bytene som ble signert. Den kutter ut signaturen, normaliserer mellomrom og attributt- rekkefølgen, og hasjerer resultatet. Det er kanoniskgjøring, og hvis de to sidene er uenige om en eneste byte, logger ingen inn. En JSON-webtoken gjør det annerledes. Header, nyttelast og signatur sitter side om side med prikker imellom. Ingenting å kutte ut først.
2012: sjekkeren og leseren ser på forskjellige elementer
1:32 Her er sprekken. Koden som sjekker signaturen og koden som leser brukernavnet er ofte to forskjellige deler. I to tusen og tolv, viste en artikkel kalt On Breaking SAML at du kunne flytte den signerte påstanden dit leseren ignorerer den, og legge en ny der den ser. Salesforce og Shibboleth var blant de elleve som falt for det. I to tusen og atten, viste Duo at en kommentar inne i et brukernavn kunne få noen
2018 og 2025: to parsere, to forskjellige svar
1:55 biblioteker til å lese bare halvparten av navnet, mens signaturen fortsatt stemte. I to tusen og tjuefem, fant GitHub to XML-parsere inne i Ruby SAML uenige om det samme dokumentet. Samme feil, nytt tiår. Trail of Bits kaller det et fraktal, fordi hvert nivå du zoomer inn på har den
Hvorfor det fortsetter å bryte: et fraktal av dårlig design
2:12 samme feilen. Det er bygget på XML, signaturen er omsluttet, og ekte pålogginger bruker kanskje en tidel av spesifikasjonen. Og det øverste svaret på Hacker News kommer fra kjøperen. Hvis du ikke har SAML-støtte, kan jeg finne et produkt som har det. Begge er sanne, noe som er problemet. Så, mandag. SHIP IT OpenID Connect først, Fly og Tailscale selger til
Mandag: OIDC først, et vedlikeholdt bibliotek, strenge former
2:31 bedrifter helt uten SAML. Hvis en kunde tvinger det, bruk et vedlikeholdt bibliotek, hold det lappet, og avvis meldinger som ikke ser ut som det Okta eller Google sender. Skriv aldri din egen signatursjekk.
Dom, under panseret: REVERT
2:43 Dom, under panseret. REVERT. Nesten tjuefem år, én feilklasse som aldri dør, og løsningen alle er enige om er en annen protokoll. Sist lørdag tok jeg fra hverandre passnøkler, så fortell meg hva jeg skal åpne opp neste gang i kommentarene. Og det er The Daily Diff for i dag. Jeg er Niko fra Axrisi. Slå sammen ansvarlig.
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



