SAML, ispod haube: potpis unutar pisma
SAML vas prijavljuje u gotovo svaku poslovnu aplikaciju, a njegov potpis živi unutar XML-a koji potpisuje.
SAML vas prijavljuje u gotovo svaku poslovnu aplikaciju, a njegov potpis živi unutar XML-a koji potpisuje. Ispod haube: ples prijave između aplikacije, preglednika i pružatelja identiteta, kako izgleda potvrda, zašto se kanonizacija mora složiti oko svakog bajta i zašto se ista klasa grešaka stalno vraća od 2012. do 2025. Potaknuto člankom Trail of Bits' "SAML: A fractal of bad design" (312 bodova na Hacker Newsu).
Pročitajte pisano izdanje (engleski) ↗
Što ovaj video pokriva
- SAML: prijava koja se sama potpisuje iznutra
- 2002.: četiri XML formata, jedan odbor, cijela industrija
- Ples prijave: aplikacija → pružatelj identiteta → natrag kroz vaš preglednik
- Potvrda: potpis živi unutar onoga što potpisuje
- Kanonizacija: složite se oko svakog bajta, ili se nitko ne prijavljuje
Prevedeni transkript
Prevedeno iz izvornog engleskog pripovijedanja. Dostupni zvuk i titlovi kontroliraju se putem YouTubea.
SAML: prijava koja se sama potpisuje iznutra
0:00 SAML je XML koji vas prijavljuje u gotovo svaku poslovnu aplikaciju koju posjedujete, a njegov potpis živi unutar dokumenta koji potpisuje, poput bilježnika koji svoj pečat spaja unutar omotnice koju zatvara. Deset godina nakon što ga je odbor napisao, istraživači su testirali četrnaest SAML okvira. Jedanaest ih je palo. I ovog tjedna objava Trail of Bits-a koja ga naziva fraktalom lošeg dizajna dospjela je na naslovnu stranicu Hacker Newsa. U tri minute: kako funkcionira ples prijave, gdje se skriva potpis,
0:27 i zašto je rješenje oko kojeg se svi slažu drugačiji protokol. Ovo je The Daily Diff, ispod haube.
2002.: četiri XML formata, jedan odbor, cijela industrija
0:34 Dvije tisuće dvije. Sigurnosni odbor u Oasisu spaja četiri XML formata dobavljača u jedan. Sveučilišta ga prva usvajaju, zatim Okta na njemu gradi tvrtku, najbrže što se dokument odbora ikada pretvorio u prihod. Otvarate aplikaciju.
Ples prijave: aplikacija → pružatelj identiteta → natrag kroz vaš preglednik
0:46 Nema pojma tko ste, pa preusmjerava vaš preglednik na pružatelja identiteta, recimo Okta vaše tvrtke. Tamo se prijavljujete. Okta daje vašem pregledniku potpisani XML dokument koji govori tko ste, i preglednik ga objavljuje natrag.
Potvrda: potpis živi unutar onoga što potpisuje
0:59 Taj dokument je potvrda. Imenuje korisnika, a potpis sjedi unutar njega, pokazujući natrag na potvrdu po njenom ID-u. I cijela stvar prolazi kroz vaš preglednik, što znači, kroz korisnika. Da bi ga provjerio, aplikacija
Kanonizacija: složite se oko svakog bajta, ili se nitko ne prijavljuje
1:11 ponovno gradi točne bajtove koji su potpisani. Izbacuje potpis, normalizira razmake i redoslijed atributa, i hešira rezultat. To je kanonizacija, i ako se dvije strane ne slažu ni za jedan bajt, nitko se ne prijavljuje. JSON web token to radi drugačije. Zaglavlje, sadržaj i potpis sjede jedno pored drugog s točkama između. Nema ništa za prvo izrezati.
2012.: provjerivač i čitač gledaju različite elemente
1:32 Evo problema. Kod koji provjerava potpis i kod koji čita korisničko ime su često dva različita dijela. Dvije tisuće dvanaeste, rad pod nazivom On Breaking Saml pokazao je da možete pomaknuti potpisanu potvrdu gdje je čitač ignorira, i staviti drugu gdje je traži. Salesforce i Shibboleth bili su među jedanaest koji su nasjeli. Dvije tisuće osamnaeste, Duo je pokazao da komentar unutar korisničkog imena može natjerati neke
2018. i 2025.: dva parsera, dva različita odgovora
1:55 biblioteke da pročitaju samo polovicu imena, dok je potpis i dalje provjeren. Dvije tisuće dvadeset pete, GitHub je pronašao dva XML parsera unutar ruby SAML-a koji se ne slažu oko istog dokumenta. Ista greška, novo desetljeće. Trail of Bits to naziva fraktalom, jer svaka razina u koju zumirate ima istu
Zašto se stalno kvari: fraktal lošeg dizajna
2:12 manu. Izgrađen je na XML-u, potpis je omotan, a stvarne prijave koriste možda desetinu specifikacije. A najbolji odgovor na Hacker Newsu dolazi od kupca. Ako nemate SAML podršku, mogu pronaći proizvod koji ima. Obje su istinite, što je problem. Dakle, ponedjeljak. Prvo isporučite OpenID Connect, Fly i Tailscale prodaju
Ponedjeljak: prvo OIDC, održavana biblioteka, strogi oblici
2:31 tvrtkama bez SAML-a uopće. Ako kupac to forsira, koristite održavanu biblioteku, održavajte je zakrpanom, i odbijajte poruke koje ne izgledaju kao one koje šalju Okta ili Google. Nikada nemojte pisati vlastitu provjeru potpisa.
Presuda, ispod haube: REVERT
2:43 Presuda, ispod haube. REVERT. Gotovo dvadeset pet godina, jedna klasa grešaka koja nikada ne umire, i rješenje oko kojeg se svi slažu je drugačiji protokol. Prošle subote sam rastavio passkeys, pa mi recite što da sljedeće otvorim u komentarima. I to je razlika za danas. Ja sam Niko iz Axrisija. Spajajte odgovorno.
Izvori
- 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



