SAML, kaputun altında: mektubun içindeki imza
SAML sizi hemen hemen her iş uygulamasına sokar ve imzası imzaladığı XML'in içinde yaşar.
SAML sizi hemen hemen her iş uygulamasına sokar ve imzası imzaladığı XML'in içinde yaşar. Kaputun altında: uygulama, tarayıcı ve kimlik sağlayıcı arasındaki oturum açma dansı, bir iddia nasıl görünür, kanonizasyon neden her bayt üzerinde anlaşmak zorundadır ve neden aynı hata sınıfı 2012'den 2025'e kadar geri gelmeye devam ediyor. Trail of Bits'in "SAML: Kötü tasarımın bir fraktalı" (Hacker News'te 312 puan) tarafından tetiklendi.
Yazılı sürümü oku (İngilizce) ↗
Bu video neleri kapsar
- SAML: kendini içeriden imzalayan oturum açma
- 2002: dört XML formatı, bir komite, koca bir endüstri
- Oturum açma dansı: uygulama → kimlik sağlayıcı → tarayıcınız aracılığıyla geri
- İddia: imza imzaladığı şeyin içinde yaşar
- Kanonizasyon: her bayt üzerinde anlaşın, yoksa kimse oturum açamaz
Çevrilmiş deşifre
Orijinal İngilizce anlatımdan çevrilmiştir. Mevcut ses ve altyazılar YouTube tarafından kontrol edilir.
SAML: kendini içeriden imzalayan oturum açma
0:00 SAML, sahip olduğunuz hemen hemen her iş uygulamasına sizi giriş yapan XML'dir, ve imzası imzaladığı belgenin içinde yaşar, tıpkı bir noter, mühürlediği zarfın içine damgasını zımbalaması gibi. Bir komite onu yazdıktan on yıl sonra, araştırmacılar on dört SAML çerçevesini test etti. On biri başarısız oldu. Ve bu hafta, onu kötü tasarımın bir fraktalı olarak adlandıran bir Trail of Bits gönderisi, Hacker News'in ön sayfasına çıktı. Üç dakikada: oturum açma dansı nasıl çalışır, imza nerede saklanır,
0:27 ve herkesin üzerinde anlaştığı çözümün neden farklı bir protokol olduğu. Burası The Daily Diff, kaputun altında.
2002: dört XML formatı, bir komite, koca bir endüstri
0:34 İki bin iki. Oasis'teki bir güvenlik komitesi, dört satıcı XML formatını birleştirerek tek bir format haline getirir. Üniversiteler önce onu benimser, sonra Okta onun üzerine bir şirket kurar, bir komite belgesinin şimdiye kadar gelire dönüşmesinin en hızlı yolu. Uygulamayı açarsınız.
Oturum açma dansı: uygulama → kimlik sağlayıcı → tarayıcınız aracılığıyla geri
0:46 Sizin kim olduğunuz hakkında hiçbir fikri yoktur, bu yüzden tarayıcınızı kimlik sağlayıcısına yönlendirir, örneğin şirketinizin Okta'sı. Oraya giriş yaparsınız. Okta, tarayıcınıza kim olduğunuzu söyleyen imzalı bir XML belgesi verir, ve tarayıcı onu geri gönderir.
İddia: imza imzaladığı şeyin içinde yaşar
0:59 Bu belge iddiadır. Kullanıcıyı adlandırır ve imza içinde yer alır, kimliğine göre iddiayı işaret ederek. Ve her şey tarayıcınız aracılığıyla ilerler, yani, kullanıcı aracılığıyla. Kontrol etmek için uygulama
Kanonizasyon: her bayt üzerinde anlaşın, yoksa kimse oturum açamaz
1:11 imzalanan tam baytları yeniden oluşturur. İmzayı keser, boşlukları ve öznitelik sırasını normalleştirir ve sonucu hash eder. Bu kanonizasyondur ve iki taraf tek bir baytla bile anlaşamazsa, kimse oturum açamaz. Bir JSON web belirteci bunu farklı yapar. Başlık, yük ve imza arasında noktalarla yan yana durur. Önce kesilecek bir şey yok.
2012: denetleyici ve okuyucu farklı öğelere bakar
1:32 İşte çatlak. İmzayı kontrol eden kod ve kullanıcı adını okuyan kod genellikle iki farklı parçadır. İki bin on ikide, On Breaking SAML adlı bir makale, imzalı iddiayı okuyucunun görmezden geldiği yere taşıyabileceğinizi ve ikinci bir tanesini baktığı yere koyabileceğinizi gösterdi. Salesforce ve Shibboleth, buna kanan on bir arasındaydı. Salesforce ve Shibboleth, buna kanan on bir arasındaydı. İki bin on sekizde, Duo, bir kullanıcı adının içindeki bir yorumun bazı
2018 ve 2025: iki ayrıştırıcı, iki farklı yanıt
1:55 kütüphanelerin adın sadece yarısını okumasına neden olabileceğini, imzanın ise hala doğru olduğunu gösterdi. İki bin yirmi beşte, GitHub, Ruby SAML'in içinde aynı belge hakkında anlaşamayan iki XML ayrıştırıcısı buldu. İki bin yirmi beşte, GitHub, Ruby SAML'in içinde aynı belge hakkında anlaşamayan iki XML ayrıştırıcısı buldu. Aynı hata, yeni on yıl. Trail of Bits buna bir fraktal diyor, çünkü her yakınlaştırdığınız seviyenin
Neden sürekli bozuluyor: kötü tasarımın bir fraktalı
2:12 aynı kusuru var. XML üzerine kurulu, imza zarflanmış, ve gerçek oturum açmalar belirtimin belki onda birini kullanıyor. Ve Hacker News'teki en iyi yanıt alıcıdan geliyor. SAML desteğiniz yoksa, bunu yapan bir ürün bulabilirim. İkisi de doğru, sorun da bu. Yani, Pazartesi. Önce OpenID Connect'i SHIP IT, Fly ve Tailscale
Pazartesi: önce OIDC, bakımı yapılmış bir kütüphane, katı şekiller
2:31 hiç SAML olmadan işletmelere satış yapıyor. Bir müşteri bunu zorlarsa, bakımı yapılmış bir kütüphane kullanın, güncel tutun, ve Okta veya Google'ın gönderdiği gibi görünmeyen mesajları reddedin. Kendi imza kontrolünüzü asla yazmayın.
Kaputun altında karar: REVERT
2:43 Kaputun altında karar. REVERT. Neredeyse yirmi beş yıl, hiç ölmeyen bir hata sınıfı, ve herkesin üzerinde anlaştığı çözüm farklı bir protokol. Geçen Cumartesi geçiş anahtarlarını ayırdım, bu yüzden yorumlarda bir sonraki neyi açacağımı söyleyin. Ve bugünün farkı bu. Axrisi'den Niko'yum. Sorumlu bir şekilde birleştirin.
Kaynaklar
- 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



