SAML, ispod haube: potpis unutar pisma
SAML vas prijavljuje u skoro svaku radnu aplikaciju, a njegov potpis živi unutar XML-a koji potpisuje.
SAML vas prijavljuje u skoro svaku radnu aplikaciju, a njegov potpis živi unutar XML-a koji potpisuje. Ispod haube: ples prijavljivanja između aplikacije, pretraživača i provajdera identiteta, kako izgleda asercija, 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. Podstaknuto tekstom Trail of Bits' „SAML: fraktal lošeg dizajna” (312 poena na Hacker News-u).
Pročitajte pisano izdanje (engleski) ↗
Šta ovaj video pokriva
- SAML: prijava koja se sama potpisuje iznutra
- 2002: četiri XML formata, jedan komitet, cela industrija
- Ples prijave: aplikacija → provajder identiteta → nazad kroz vaš pretraživač
- Asercija: potpis živi unutar onoga što potpisuje
- Kanonizacija: slažite se oko svakog bajta, ili se niko ne prijavljuje
Preveden transkript
Prevedeno sa originalne engleske naracije. Dostupan audio i titlovi kontrolisani su od strane YouTube-a.
SAML: prijava koja se sama potpisuje iznutra
0:00 SAML je XML koji vas prijavljuje u skoro svaku radnu aplikaciju koju posedujete, a njegov potpis živi unutar dokumenta koji potpisuje, poput notara koji svoj pečat stavlja unutar koverte koju zapečaćuje. Deset godina nakon što ga je komitet napisao, istraživači su testirali četrnaest SAML okvira. Jedanaest je palo. I ove nedelje je objava Trail of Bits-a koja ga naziva fraktalom lošeg dizajna stigla na naslovnu stranu Hacker News-a. Za tri minuta: kako funkcioniše ples prijave, gde se potpis krije,
0:27 i zašto je rešenje oko kojeg se svi slažu drugačiji protokol. Ovo je The Daily Diff, ispod haube.
2002: četiri XML formata, jedan komitet, cela industrija
0:34 Dve hiljade dve. Sigurnosni komitet u Oasis-u spaja četiri XML formata dobavljača u jedan. Univerziteti ga prvo usvajaju, zatim Okta gradi kompaniju na njemu, najbrže što se ikada dokument komiteta pretvorio u prihod. Otvarate aplikaciju.
Ples prijave: aplikacija → provajder identiteta → nazad kroz vaš pretraživač
0:46 Nema pojma ko ste, pa vaš pretraživač preusmerava na provajdera identiteta, recimo Okta vaše kompanije. Prijavljujete se tamo. Okta vašem pretraživaču daje potpisan XML dokument koji govori ko ste, i pretraživač ga objavljuje nazad.
Asercija: potpis živi unutar onoga što potpisuje
0:59 Taj dokument je asercija. On imenuje korisnika, a potpis se nalazi unutar njega, pokazujući nazad na aserciju po njenom ID-u. I cela stvar putuje kroz vaš pretraživač, što znači, kroz korisnika. Da bi je proverila, aplikacija
Kanonizacija: slažite se oko svakog bajta, ili se niko ne prijavljuje
1:11 rekonstruiše tačne bajtove koji su potpisani. Iseče potpis, normalizuje razmake i redosled atributa, i hešira rezultat. To je kanonizacija, i ako se dve strane ne slažu ni za jedan bajt, niko se ne prijavljuje. JSON veb token to radi drugačije. Zaglavlje, teret i potpis stoje jedan pored drugog sa tačkama između. Ništa se ne mora iseći prvo.
2012: proveravač i čitač gledaju različite elemente
1:32 Evo problema. Kod koji proverava potpis i kod koji čita korisničko ime su često dva različita dela. Dve hiljade dvanaeste, rad pod nazivom O razbijanju SAML-a pokazao je da možete premestiti potpisanu aserciju tamo gde je čitač ignoriše, i staviti drugu tamo gde je gleda. Salesforce i Shibboleth su bili među jedanaest koji su naseli na to. Dve hiljade osamnaeste, Duo je pokazao da komentar unutar korisničkog imena može naterati neke
2018 i 2025: dva parsera, dva različita odgovora
1:55 biblioteke da pročitaju samo polovinu imena, dok je potpis i dalje validan. Dve hiljade dvadeset pete, GitHub je pronašao dva XML parsera unutar ruby SAML-a koji se ne slažu oko istog dokumenta. Ista greška, nova decenija. Trail of Bits to naziva fraktalom, jer svaki nivo u koji zumirate ima
Zašto se stalno kvari: fraktal lošeg dizajna
2:12 istu manu. Izgrađen je na XML-u, potpis je obavijen, i stvarne prijave koriste možda desetinu specifikacije. A najbolji odgovor na Hacker News-u dolazi od kupca. Ako nemate SAML podršku, mogu pronaći proizvod koji je ima. Obe stvari su istinite, što je problem. Dakle, ponedeljak. Pošaljite OpenID Connect prvo, Fly i Tailscale prodaju
Ponedeljak: OIDC prvo, održavana biblioteka, strogi oblici
2:31 preduzećima bez SAML-a uopšte. Ako kupac to forsira, koristite održavanu biblioteku, držite je zakrpljenom, i odbijajte poruke koje ne izgledaju kao one koje šalju Okta ili Google. Nikada ne pišite sopstvenu proveru potpisa.
Presuda, ispod haube: REVERT
2:43 Presuda, ispod haube. REVERT. Skoro dvadeset pet godina, jedna klasa grešaka koja nikada ne umire, i rešenje oko kojeg se svi slažu je drugačiji protokol. Prošle subote sam razložio pasfaktore, pa mi recite šta da sledeće otvorim u komentarima. I to je razlika za danas. Ja sam Niko iz Axrisija. Spojite 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



