# SAML, под капака: подписът в писмото

Published: 2026-09-24

SAML ви влиза в почти всяко работно приложение, а подписът му живее в XML, който подписва. Под капака: танцът за вход между приложението, браузъра и доставчика на самоличност, как изглежда едно твърдение, защо канонизацията трябва да се съгласи за всеки байт и защо един и същ клас грешки продължава да се връща от 2012 до 2025 г. Предизвикано от „SAML: Един фрактал на лош дизайн“ на Trail of Bits (312 точки в Hacker News).

Canonical: https://thedailydiff.dev/bg/video/2026-09-24-saml-under-the-hood/

## Какво обхваща този видеоклип

- SAML: входът, който се подписва сам отвътре
- 2002: четири XML формата, един комитет, цяла индустрия
- Танцът за вход: приложение → доставчик на самоличност → обратно през вашия браузър
- Твърдението: подписът живее вътре в това, което подписва
- Канонизация: съгласие за всеки байт, или никой не влиза

## Глави

- 0:00 SAML: входът, който се подписва сам отвътре
- 0:34 2002: четири XML формата, един комитет, цяла индустрия
- 0:46 Танцът за вход: приложение → доставчик на самоличност → обратно през вашия браузър
- 0:59 Твърдението: подписът живее вътре в това, което подписва
- 1:10 Канонизация: съгласие за всеки байт, или никой не влиза
- 1:32 2012: проверката и четецът разглеждат различни елементи
- 1:51 2018 и 2025: два парсера, два различни отговора
- 2:08 Защо продължава да се разваля: фрактал на лош дизайн
- 2:27 Понеделник: OIDC първо, поддържана библиотека, строги форми
- 2:43 Присъда, под капака: REVERT

## Преведен препис

Преведено от оригиналния английски разказ. Наличните аудио и субтитри се контролират от YouTube.

### SAML: входът, който се подписва сам отвътре

0:00 SAML е XML, който ви влиза в почти всяко работно приложение, което притежавате, а подписът му живее в документа, който подписва, като нотариус, който прикрепя своя печат вътре в плика, който запечатва. Десет години след като комитет го написа, изследователи тестваха четиринадесет SAML рамки. Единадесет паднаха. И тази седмица публикация на Trail of Bits, наричаща го фрактал на лош дизайн, стигна до първа страница на Hacker News. За три минути: как работи танцът за вход, къде се крие подписът,

0:27 и защо решението, за което всички са съгласни, е различен протокол. Това е The Daily Diff, под капака.

### 2002: четири XML формата, един комитет, цяла индустрия

0:34 Две хиляди и втора. Комитет по сигурността в Oasis обединява четири XML формата на доставчици в един. Университетите го приемат първи, след това Okta изгражда компания върху него, най-бързият начин, по който документ на комитет някога се е превърнал в приходи. Отваряте приложението.

### Танцът за вход: приложение → доставчик на самоличност → обратно през вашия браузър

0:46 То няма представа кой сте, така че препраща браузъра ви към доставчика на самоличност, да кажем Okta на вашата компания. Влизате там. Okta дава на браузъра ви подписан XML документ, който казва кой сте, и браузърът го връща обратно.

### Твърдението: подписът живее вътре в това, което подписва

0:59 Този документ е твърдението. То назовава потребителя, а подписът е вътре в него, сочейки обратно към твърдението по неговия ID. И всичко това преминава през вашия браузър, което означава, през потребителя. За да го провери, приложението

### Канонизация: съгласие за всеки байт, или никой не влиза

1:11 възстановява точните байтове, които са били подписани. Изрязва отново подписа, нормализира празните места и реда на атрибутите и хешира резултата. Това е канонизация, и ако двете страни не се съгласят дори за един байт, никой не влиза. JSON уеб токенът го прави по различен начин. Хедър, полезен товар и подпис стоят един до друг с точки между тях. Нищо за изрязване първо.

### 2012: проверката и четецът разглеждат различни елементи

1:32 Ето и пукнатината. Кодът, който проверява подписа, и кодът, който чете потребителското име, често са две различни части. През две хиляди и дванадесета, статия, наречена „За разбиването на Saml“, показа, че можете да преместите подписаното твърдение, където четецът го игнорира, и да поставите второ там, където го търси. Salesforce и Shibboleth бяха сред единадесетте, които паднаха на това. През две хиляди и осемнадесета, Duo показа, че коментар в потребителско име може да накара някои

### 2018 и 2025: два парсера, два различни отговора

1:55 библиотеки да четат само половината име, докато подписът все още е валиден. През две хиляди двадесет и пета, GitHub откри два XML парсера в ruby Saml, които не се съгласяваха за един и същ документ. Една и съща грешка, ново десетилетие. Trail of Bits го нарича фрактал, защото всяко ниво, в което се приближавате, има същата

### Защо продължава да се разваля: фрактал на лош дизайн

2:12 грешка. Изграден е върху XML, подписът е обвит, и реалните входове използват може би една десета от спецификацията. А най-добрият отговор в Hacker News идва от купувача. Ако нямате SAML поддръжка, мога да намеря продукт, който има. И двете са верни, което е проблемът. И така, понеделник. Първо изпратете OpenID Connect, Fly и Tailscale продават на

### Понеделник: OIDC първо, поддържана библиотека, строги форми

2:31 предприятия без SAML изобщо. Ако клиент го наложи, използвайте поддържана библиотека, дръжте я поправена, и отхвърляйте съобщения, които не изглеждат като тези, изпратени от Okta или Google. Никога не пишете своя собствена проверка на подписа.

### Присъда, под капака: REVERT

2:43 Присъда, под капака. REVERT. Почти двадесет и пет години, един клас грешки, който никога не умира, и решението, за което всички са съгласни, е различен протокол. Миналата събота разглобих passkeys, така че ми кажете какво да отворя след това в коментарите. И това е The Daily Diff за днес. Аз съм Нико от Axrisi. Обединявайте отговорно.

## Източници

- [Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)](https://blog.trailofbits.com/2026/09/21/saml-a-fractal-of-bad-design/) — blog.trailofbits.com
- [Hacker News thread](https://news.ycombinator.com/item?id=49806335) — news.ycombinator.com
- [Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012](https://www.usenix.org/conference/usenixsecurity12/technical-sessions/presentation/somorovsky) — www.usenix.org
- [Duo Labs, SAML vulnerabilities affecting multiple implementations (2018): https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations · CERT VU#475445](https://www.kb.cert.org/vuls/id/475445) — www.kb.cert.org
- [GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)](https://github.blog/security/sign-in-as-anyone-bypassing-saml-sso-authentication-with-parser-differentials/) — github.blog
