# SAML, pod maską: sygnatura wewnątrz listu

Published: 2026-09-24

SAML loguje Cię do prawie każdej aplikacji służbowej, a jego sygnatura znajduje się wewnątrz XML-a, który podpisuje. Pod maską: taniec logowania między aplikacją, przeglądarką i dostawcą tożsamości, jak wygląda asercja, dlaczego kanonizacja musi zgadzać się co do każdego bajtu i dlaczego ta sama klasa błędów powraca od 2012 do 2025 roku. Zainspirowane „SAML: A fractal of bad design” (312 punktów na Hacker News) autorstwa Trail of Bits.

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

## Co obejmuje ten film

- SAML: logowanie, które podpisuje się od wewnątrz
- 2002: cztery formaty XML, jeden komitet, cała branża
- Taniec logowania: aplikacja → dostawca tożsamości → z powrotem przez Twoją przeglądarkę
- Asercja: sygnatura znajduje się wewnątrz tego, co podpisuje
- Kanonizacja: zgoda co do każdego bajtu, albo nikt się nie zaloguje

## Rozdziały

- 0:00 SAML: logowanie, które podpisuje się od wewnątrz
- 0:34 2002: cztery formaty XML, jeden komitet, cała branża
- 0:46 Taniec logowania: aplikacja → dostawca tożsamości → z powrotem przez Twoją przeglądarkę
- 0:59 Asercja: sygnatura znajduje się wewnątrz tego, co podpisuje
- 1:10 Kanonizacja: zgoda co do każdego bajtu, albo nikt się nie zaloguje
- 1:32 2012: weryfikator i czytnik patrzą na różne elementy
- 1:51 2018 i 2025: dwa parsery, dwie różne odpowiedzi
- 2:08 Dlaczego to ciągle się psuje: fraktal złego projektu
- 2:27 Poniedziałek: najpierw OIDC, utrzymywana biblioteka, ścisłe kształty
- 2:43 Werdykt, pod maską: REVERT

## Przetłumaczona transkrypcja

Przetłumaczono z oryginalnej narracji angielskiej. Dostępne audio i napisy są kontrolowane przez YouTube.

### SAML: logowanie, które podpisuje się od wewnątrz

0:00 SAML to XML, który loguje Cię do niemal każdej posiadanej aplikacji służbowej, a jego sygnatura znajduje się wewnątrz dokumentu, który podpisuje, jak notariusz przypinający swoją pieczęć wewnątrz koperty, którą pieczętuje. Dziesięć lat po tym, jak komitet go napisał, badacze przetestowali czternaście frameworków SAML. Jedenaście upadło. A w tym tygodniu post Trail of Bits, nazywający go fraktalem złego projektu, trafił na pierwszą stronę Hacker News. W trzy minuty: jak działa taniec logowania, gdzie ukrywa się sygnatura,

0:27 i dlaczego rozwiązaniem, na które wszyscy się zgadzają, jest inny protokół. To The Daily Diff, pod maską.

### 2002: cztery formaty XML, jeden komitet, cała branża

0:34 Dwa tysiące drugi rok. Komitet bezpieczeństwa w Oasis łączy cztery formaty XML dostawców w jeden. Najpierw przyjmują go uniwersytety, potem Okta buduje na nim firmę, najszybciej w historii dokument komitetu przekształcił się w przychód. Otwierasz aplikację.

### Taniec logowania: aplikacja → dostawca tożsamości → z powrotem przez Twoją przeglądarkę

0:46 Nie ma pojęcia, kim jesteś, więc przekierowuje Twoją przeglądarkę do dostawcy tożsamości, powiedzmy Okta Twojej firmy. Logujesz się tam. Okta przekazuje Twojej przeglądarce podpisany dokument XML, który mówi, kim jesteś, a przeglądarka odsyła go z powrotem.

### Asercja: sygnatura znajduje się wewnątrz tego, co podpisuje

0:59 Ten dokument to asercja. Zawiera nazwę użytkownika, a sygnatura znajduje się w środku, wskazując na asercję poprzez jej ID. I wszystko to przechodzi przez Twoją przeglądarkę, co oznacza, przez użytkownika. Aby to sprawdzić, aplikacja

### Kanonizacja: zgoda co do każdego bajtu, albo nikt się nie zaloguje

1:11 odbudowuje dokładnie te bajty, które zostały podpisane. Wyciąga sygnaturę, normalizuje białe znaki i kolejność atrybutów, i hashuje wynik. To jest kanonizacja, a jeśli obie strony różnią się choćby jednym bajtem, nikt się nie zaloguje. Token JSON Web działa inaczej. Nagłówek, ładunek i sygnatura leżą obok siebie, oddzielone kropkami. Nic do wycinania na początku.

### 2012: weryfikator i czytnik patrzą na różne elementy

1:32 Oto problem. Kod, który sprawdza sygnaturę, i kod, który odczytuje nazwę użytkownika, to często dwie różne części. W 2012 roku artykuł zatytułowany „On Breaking SAML” pokazał, że można przenieść podpisaną asercję tam, gdzie czytnik ją ignoruje, i umieścić drugą tam, gdzie szuka. Salesforce i Shibboleth były wśród jedenastu, które na to wpadły. W 2018 roku Duo pokazało, że komentarz w nazwie użytkownika mógł sprawić, że niektóre

### 2018 i 2025: dwa parsery, dwie różne odpowiedzi

1:55 biblioteki odczytywały tylko połowę nazwy, podczas gdy sygnatura nadal się zgadzała. W 2025 roku GitHub odkrył dwa parsery XML wewnątrz ruby SAML niezgadzające się co do tego samego dokumentu. Ten sam błąd, nowa dekada. Trail of Bits nazywa to fraktalem, ponieważ każdy poziom, w który się zagłębiasz,

### Dlaczego to ciągle się psuje: fraktal złego projektu

2:12 ma tę samą wadę. Jest zbudowany na XML-u, sygnatura jest opakowana, a prawdziwe logowania wykorzystują może dziesiątą część specyfikacji. A najlepsza odpowiedź na Hacker News pochodzi od kupującego. „Jeśli nie masz wsparcia SAML, mogę znaleźć produkt, który ma.” Obie są prawdziwe, i to jest problem. Więc, poniedziałek. Najpierw SHIP IT OpenID Connect, Fly i Tailscale sprzedają

### Poniedziałek: najpierw OIDC, utrzymywana biblioteka, ścisłe kształty

2:31 przedsiębiorstwom w ogóle bez SAML. Jeśli klient tego wymaga, użyj utrzymywanej biblioteki, regularnie ją łatuj, i odrzucaj wiadomości, które nie wyglądają jak te wysyłane przez Okta lub Google. Nigdy nie pisz własnego sprawdzania sygnatur.

### Werdykt, pod maską: REVERT

2:43 Werdykt, pod maską. REVERT. Prawie dwadzieścia pięć lat, jedna klasa błędów, która nigdy nie umiera, a rozwiązaniem, na które wszyscy się zgadzają, jest inny protokół. W zeszłą sobotę rozebrałem passkeys, więc powiedzcie mi, co mam otworzyć następnym razem w komentarzach. I to jest The Daily Diff na dziś. Jestem Niko z Axrisi. Łącz odpowiedzialnie.

## Źródła

- [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
