+− THE DAILY DIFFdev & AI news
REVERT

SAML, испод хаубе: потпис унутар писма

SAML вас пријављује у скоро сваку пословну апликацију, а његов потпис живи унутар XML-а који потписује.

SAML вас пријављује у скоро сваку пословну апликацију, а његов потпис живи унутар XML-а који потписује. Испод хаубе: плес пријављивања између апликације, претраживача и провајдера идентитета, како изгледа тврдња, зашто се канонизација мора сложити око сваког бајта и зашто се иста класа грешака стално враћа од 2012. до 2025. Подстакнуто објавом "SAML: А фрактал лошег дизајна" (312 поена на Hacker News) од стране Trail of Bits.

Прочитајте писано издање (енглески) ↗

Шта овај видео покрива

  • SAML: пријава која се потписује изнутра
  • 2002: четири XML формата, један комитет, цела индустрија
  • Плес пријављивања: апликација → провајдер идентитета → назад кроз ваш претраживач
  • Тврдња: потпис живи унутар онога што потписује
  • Канонизација: сложите се око сваког бајта, или се нико неће пријавити

Преведени транскрипт

Преведено са оригиналне енглеске нарације. Доступни аудио и титлови контролисани су од стране 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 Ево проблема. Код који проверава потпис и код који чита корисничко име су често два различита дела. Две хиљаде дванаесте, рад под називом On Breaking SAML показао је да можете преместити потписану тврдњу где је читач игнорише, и ставити другу где је тражи. Salesforce и Shibboleth су били међу једанаест који су подлегли томе. Две хиљаде осамнаесте, Duo је показао да коментар унутар корисничког имена може навести неке

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

1:55 библиотеке да читају само половину имена, док је потпис и даље био исправан. Две хиљаде двадесет пете, GitHub је пронашао два XML парсера унутар ruby SAML-а који се не слажу око истог документа. Исти баг, нова деценија. Trail of Bits га назива фракталом, јер сваки ниво у који зумирате има исту

Зашто се стално квари: фрактал лошег дизајна

2:12 ману. Изграђен је на XML-у, потпис је омотан, и стварне пријаве користе можда десетину спецификације. А најбољи одговор на Hacker News-у долази од купца. Ако немате SAML подршку, могу наћи производ који је има. Оба су тачна, што је проблем. Дакле, понедељак. SHIP IT OpenID Connect прво, Fly и Tailscale продају

Понедељак: OIDC прво, одржавана библиотека, строги облици

2:31 предузећима без SAML-а уопште. Ако купац форсира, користите одржавану библиотеку, одржавајте је закрпљеном, и одбијајте поруке које не изгледају као оне које шаљу Okta или Google. Никада не пишите сопствену проверу потписа.

Пресуда, испод хаубе: REVERT

2:43 Пресуда, испод хаубе. REVERT. Скоро двадесет пет година, једна класа багова која никада не умире, и решење око ког се сви слажу је другачији протокол. Прошле суботе сам раставио passkeys, па ми реците шта да следеће отворим у коментарима. И то је The Daily Diff за данас. Ја сам Niko из Axrisi-ја. Обједињавајте одговорно.

Извори

  1. Trail of Bits, "SAML: A fractal of bad design" (Matt Schwager, Sep 21, 2026)blog.trailofbits.com
  2. Hacker News threadnews.ycombinator.com
  3. Somorovsky et al., "On Breaking SAML: Be Whoever You Want to Be", USENIX Security 2012www.usenix.org
  4. 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
  5. GitHub Security Lab, "Sign in as anyone: Bypassing SAML SSO authentication with parser differentials" (Mar 12, 2025)github.blog

Повезани видеи