# SAML, შიგნიდან: ხელმოწერა წერილის შიგნით

Published: 2026-09-24

SAML თითქმის ყველა სამუშაო აპლიკაციაში გირთავთ, მისი ხელმოწერა კი XML-ის შიგნითაა, რომელსაც ის აწერს ხელს. შიგნიდან: შესვლის „ცეკვა“ აპლიკაციას, ბრაუზერსა და იდენტობის პროვაიდერს შორის, როგორ გამოიყურება მტკიცება, რატომ უნდა შეთანხმდეს კანონიზაცია ყველა ბაიტზე და რატომ ბრუნდება ერთი და იგივე შეცდომის კლასი 2012 წლიდან 2025 წლამდე. ინსპირაცია Trail of Bits-ის "SAML: ცუდი დიზაინის ფრაქტალი" (312 ქულა Hacker News-ზე).

Canonical: https://thedailydiff.dev/ka/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 ვებ ტოკენი ამას სხვანაირად აკეთებს. სათაური, payload და ხელმოწერა გვერდიგვერდ ზის წერტილებით მათ შორის. არაფერია წინასწარ ამოსაჭრელი.

### 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 მხარდაჭერა არ გაქვთ, შემიძლია ვიპოვო პროდუქტი, რომელსაც აქვს. ორივე მართალია, რაც პრობლემაა. ასე რომ, ორშაბათი. ჯერ გაუშვით OpenID Connect, Fly და Tailscale ყიდიან

### ორშაბათი: ჯერ OIDC, მხარდაჭერილი ბიბლიოთეკა, მკაცრი ფორმები

2:31 საწარმოებს საერთოდ SAML-ის გარეშე. თუ მომხმარებელი აიძულებს, გამოიყენეთ შენარჩუნებული ბიბლიოთეკა, შეინახეთ ის პაჩირებული, და უარყავით შეტყობინებები, რომლებიც არ ჰგავს იმას, რასაც Okta ან Google აგზავნიან. არასოდეს დაწეროთ თქვენი საკუთარი ხელმოწერის შემოწმება.

### ვერდიქტი, შიგნიდან: REVERT

2:43 ვერდიქტი, შიგნიდან. REVERT. თითქმის ოცდახუთი წელი, ერთი შეცდომის კლასი, რომელიც არასდროს კვდება, და გამოსავალი, რაზეც ყველა თანხმდება, სხვა პროტოკოლია. გასულ შაბათს მე passkeys-ები დავშალე, ასე რომ მითხარით, რა გავხსნა შემდეგ კომენტარებში. და ეს არის დღევანდელი 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
