SAML, iç üzü: məktubun içindəki imza
SAML demək olar ki, hər bir iş tətbiqetməsinə daxil olmağınızı təmin edir və onun imzası imzaladığı XML-in içində yaşayır.
SAML demək olar ki, hər bir iş tətbiqetməsinə daxil olmağınızı təmin edir və onun imzası imzaladığı XML-in içində yaşayır. İç üzü: tətbiqetmə, brauzer və identifikasiya təminatçısı arasında giriş rəqsi, bəyanatın nəyə bənzədiyi, kanonikləşdirmənin niyə hər bayt üzərində razılaşması lazım olduğu və eyni səhv sinfinin 2012-ci ildən 2025-ci ilə qədər niyə geri qayıtdığı. Trail of Bits-in "SAML: Pis dizaynın fraktalı" (Hacker News-də 312 bal) yazısından ilhamlanıb.
Yazılı nəşri oxuyun (İngiliscə) ↗
Bu videoda nələr əhatə olunur
- SAML: özünü içəridən imzalayan giriş
- 2002: dörd XML formatı, bir komitə, bütöv bir sənaye
- Giriş rəqsi: tətbiqetmə → identifikasiya təminatçısı → brauzeriniz vasitəsilə geri
- Bəyanat: imza imzaladığı şeyin içində yaşayır
- Kanonikləşdirmə: hər bayt üzərində razılaşın, əks halda heç kim daxil ola bilməz
Tərcümə olunmuş transkript
Orijinal ingilis dilindəki nəqldən tərcümə edilmişdir. Mövcud audio və subtitrlər YouTube tərəfindən idarə olunur.
SAML: özünü içəridən imzalayan giriş
0:00 SAML demək olar ki, sahib olduğunuz hər bir iş tətbiqetməsinə daxil olmağınızı təmin edən XML-dir, və onun imzası imzaladığı sənədin içində yaşayır, sanki notarius möhürünü möhürlədiyi zərfin içinə zımbalayır. Bir komitə onu yazdıqdan on il sonra, tədqiqatçılar on dörd SAML çərçivəsini sınaqdan keçirdi. On birincisi uğursuz oldu. Və bu həftə Trail of Bits-in onu pis dizaynın fraktalı adlandıran yazısı Hacker News-in ön səhifəsinə düşdü. Üç dəqiqə ərzində: giriş rəqsi necə işləyir, imza harada gizlənir,
0:27 və hər kəsin razılaşdığı düzəlişin niyə fərqli bir protokol olduğu. Bu, The Daily Diff-dir, iç üzü.
2002: dörd XML formatı, bir komitə, bütöv bir sənaye
0:34 İki min iki. Oasis-də bir təhlükəsizlik komitəsi dörd satıcı XML formatını bir formatda birləşdirir. Universitetlər onu ilk olaraq qəbul edir, sonra Okta onun üzərində bir şirkət qurur, komitə sənədinin gəlirə çevrilməsinin ən sürətli yolu. Tətbiqetməni açırsınız.
Giriş rəqsi: tətbiqetmə → identifikasiya təminatçısı → brauzeriniz vasitəsilə geri
0:46 O, sizin kim olduğunuzu bilmir, buna görə də brauzerinizi identifikasiya təminatçısına yönləndirir, məsələn, şirkətinizin Oktasına. Orada daxil olursunuz. Okta brauzerinizi kim olduğunuzu bildirən imzalanmış XML sənədi ilə təmin edir, və brauzer onu geri göndərir.
Bəyanat: imza imzaladığı şeyin içində yaşayır
0:59 Bu sənəd bəyanatdır. O, istifadəçinin adını çəkir və imza onun içində yerləşir, ID-si ilə bəyanata geri işarə edir. Və bütün bunlar brauzeriniz vasitəsilə keçir, yəni istifadəçi vasitəsilə. Onu yoxlamaq üçün tətbiqetmə
Kanonikləşdirmə: hər bayt üzərində razılaşın, əks halda heç kim daxil ola bilməz
1:11 imzalanmış dəqiq baytları yenidən qurur. O, imzalanmış hissəni kəsib çıxarır, boşluqları və atribut sırasını normallaşdırır və nəticəni heşləyir. Bu, kanonikləşdirmədir və əgər iki tərəf bir baytda belə razılaşmazsa, heç kim daxil ola bilməz. Bir JSON veb tokeni bunu fərqli edir. Başlıq, faydalı yük və imza nöqtələr arasında yan-yana yerləşir. Əvvəlcə kəsib çıxarmaq üçün heç nə yoxdur.
2012: yoxlayıcı və oxuyucu müxtəlif elementlərə baxır
1:32 Budur çatışmazlıq. İmzanı yoxlayan kod və istifadəçi adını oxuyan kod tez-tez iki fərqli hissədir. İki min on iki-də, "SAML-ın pozulması haqqında" adlı bir məqalə göstərdi ki, siz imzalanmış bəyanatı oxuyucunun görməzdən gəldiyi yerə köçürə və ikinci birini axtardığı yerə qoya bilərsiniz. Salesforce və Shibboleth uğursuz olan on bir şirkət arasında idi. İki min on səkkizdə, Duo göstərdi ki, istifadəçi adının içindəki bir şərh bəzi
2018 və 2025: iki parser, iki fərqli cavab
1:55 kitabxanaları adın yalnız yarısını oxumağa məcbur edə bilər, imza isə hələ də doğru idi. İki min iyirmi beşdə, GitHub ruby SAML-ın içində iki XML parserinin eyni sənəd haqqında razılaşmadığını aşkar etdi. Eyni səhv, yeni onillik. Trail of Bits bunu fraktal adlandırır, çünki böyütdüyünüz hər səviyyədə
Niyə daim xarab olur: pis dizaynın fraktalı
2:12 eyni qüsur var. O, XML üzərində qurulub, imza əhatələnib, və real girişlər spesifikasiyanın bəlkə də onda birindən istifadə edir. Və Hacker News-dəki ən yaxşı cavab alıcıdan gəlir. Əgər SAML dəstəyiniz yoxdursa, bunu edən bir məhsul tapa bilərəm. Hər ikisi doğrudur, problem də budur. Beləliklə, Bazar ertəsi. Əvvəlcə OpenID Connect-i göndərin, Fly və Tailscale
Bazar ertəsi: əvvəlcə OIDC, saxlanılan kitabxana, ciddi formalar
2:31 müəssisələrə SAML olmadan satılır. Əgər müştəri onu tələb edirsə, saxlanılan bir kitabxanadan istifadə edin, onu yamayın, və Okta və ya Google-ın göndərdiyinə bənzəməyən mesajları rədd edin. Heç vaxt öz imza yoxlamanızı yazmayın.
Qərar, iç üzü: REVERT
2:43 Qərar, iç üzü. REVERT. Demək olar ki, iyirmi beş il, heç vaxt ölməyən bir səhv sinfi, və hər kəsin razılaşdığı düzəliş fərqli bir protokoldur. Keçən şənbə mən passkeys-ləri ayırdım, buna görə də şərhlərdə növbəti nəyi açacağımı mənə deyin. Və bugünkü fərq budur. Mən Axrisi-dən Nikoyam. Məsuliyyətlə birləşdirin.
Mənbələr
- 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



