SAML, pod kapotou: podpis vnútri listu
SAML vás prihlási do takmer každej pracovnej aplikácie a jeho podpis žije vo vnútri XML, ktoré podpisuje.
SAML vás prihlási do takmer každej pracovnej aplikácie a jeho podpis žije vo vnútri XML, ktoré podpisuje. Pod kapotou: prihlasovací tanec medzi aplikáciou, prehliadačom a poskytovateľom identity, ako vyzerá tvrdenie, prečo sa kanonizácia musí zhodovať na každom bajte a prečo sa tá istá trieda chýb vracia z roku 2012 do roku 2025. Podnietené článkom Trail of Bits "SAML: Fraktál zlého dizajnu" (312 bodov na Hacker News).
Prečítajte si písanú edíciu (anglicky) ↗
Čo toto video pokrýva
- SAML: prihlásenie, ktoré sa podpisuje zvnútra
- 2002: štyri formáty XML, jeden výbor, celé odvetvie
- Prihlasovací tanec: aplikácia → poskytovateľ identity → späť cez váš prehliadač
- Tvrdenie: podpis žije vo vnútri toho, čo podpisuje
- Kanonizácia: zhodovať sa na každom bajte, inak sa nikto neprihlási
Preložený prepis
Preložené z pôvodného anglického rozprávania. Dostupný zvuk a titulky sú kontrolované službou YouTube.
SAML: prihlásenie, ktoré sa podpisuje zvnútra
0:00 SAML je XML, ktoré vás prihlási do takmer každej pracovnej aplikácie, ktorú vlastníte, a jeho podpis žije vo vnútri dokumentu, ktorý podpisuje, ako notár, ktorý si pripína svoju pečiatku do obálky, ktorú pečatí. Desať rokov po tom, čo ho výbor napísal, výskumníci otestovali štrnásť SAML frameworkov. Jedenásť zlyhalo. A tento týždeň sa na titulnej strane Hacker News objavil príspevok Trail of Bits, ktorý to nazýva fraktálom zlého dizajnu. predná strana Hacker News. Za tri minúty: ako funguje prihlasovací tanec, kde sa skrýva podpis,
0:27 a prečo je oprava, na ktorej sa všetci zhodujú, iný protokol. Toto je The Daily Diff, pod kapotou.
2002: štyri formáty XML, jeden výbor, celé odvetvie
0:34 Dvetisíc dva. Bezpečnostný výbor v Oasis spája štyri formáty XML od dodávateľov do jedného. Najprv ho prijímajú univerzity, potom na ňom Okta stavia spoločnosť, najrýchlejšie sa dokument výboru premenil na príjmy. Otvoríte aplikáciu.
Prihlasovací tanec: aplikácia → poskytovateľ identity → späť cez váš prehliadač
0:46 Nemá poňatia, kto ste, takže váš prehliadač presmeruje na poskytovateľa identity, povedzme, Okta vašej spoločnosti. Prihlásite sa tam. Okta odovzdá vášmu prehliadaču podpísaný XML dokument, ktorý hovorí, kto ste, a prehliadač ho odošle späť.
Tvrdenie: podpis žije vo vnútri toho, čo podpisuje
0:59 Tento dokument je tvrdenie. Uvádza meno užívateľa a podpis je v ňom, ukazujúc späť na tvrdenie podľa jeho ID. A celé to prechádza cez váš prehliadač, to znamená, cez užívateľa. Ak to chcete skontrolovať, aplikácia
Kanonizácia: zhodovať sa na každom bajte, inak sa nikto neprihlási
1:11 rekonštruuje presné bajty, ktoré boli podpísané. Vystrihne podpis, normalizuje biele znaky a poradie atribútov, a zahashuje výsledok. To je kanonizácia, a ak sa obe strany nezhodnú ani na jednom bajte, nikto sa neprihlási. JSON web token to robí inak. Hlavička, payload a podpis sedia vedľa seba s bodkami medzi nimi. Nič, čo by sa najprv vystrihlo.
2012: kontrolór a čitateľ sa pozerajú na rôzne prvky
1:32 Tu je tá trhlina. Kód, ktorý kontroluje podpis, a kód, ktorý číta užívateľské meno, sú často dve rôzne časti. V roku 2012, článok s názvom On Breaking SAML ukázal, že môžete presunúť podpísané tvrdenie tam, kde ho čitateľ ignoruje, a umiestniť druhé tam, kde sa naň pozerá. Salesforce a Shibboleth boli medzi jedenástimi, ktoré na to naleteli. V roku 2018 Duo ukázalo, že komentár v užívateľskom mene by mohol spôsobiť, že niektoré
2018 a 2025: dva parsery, dve rôzne odpovede
1:55 knižnice prečítajú len polovicu mena, zatiaľ čo podpis bol stále v poriadku. V roku 2025 GitHub našiel dva XML parsery v ruby SAML, ktoré sa nezhodovali na tom istom dokumente. Rovnaká chyba, nové desaťročie. Trail of Bits to nazýva fraktálom, pretože každá úroveň, do ktorej priblížite, má tú istú
Prečo sa to stále kazí: fraktál zlého dizajnu
2:12 chybu. Je to postavené na XML, podpis je obalený, a skutočné prihlásenia používajú možno desatinu špecifikácie. A hlavná odpoveď na Hacker News pochádza od kupujúceho. Ak nemáte podporu SAML, nájdem produkt, ktorý ju má. Obe sú pravdivé, čo je problém. Takže, pondelok. Najprv dodajte OpenID Connect, Fly a Tailscale predávajú
Pondelok: najprv OIDC, udržiavaná knižnica, prísne tvary
2:31 podnikom vôbec bez SAML. Ak to zákazník vynúti, použite udržiavanú knižnicu, udržiavajte ju opravenú, a odmietnite správy, ktoré nevyzerajú ako tie, ktoré posiela Okta alebo Google. Nikdy si nepíšte vlastnú kontrolu podpisu.
Verdikt, pod kapotou: REVERT
2:43 Verdikt, pod kapotou. REVERT. Takmer dvadsaťpäť rokov, jedna trieda chýb, ktorá nikdy nezomrie, a oprava, na ktorej sa všetci zhodujú, je iný protokol. Minulú sobotu som rozobral passkeys, takže mi v komentároch povedzte, čo mám otvoriť ďalej. komentároch. A to je The Daily Diff pre dnešok. Som Niko z Axrisi. Spájajte zodpovedne.
Zdroje
- 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



