SAML, secara terperinci: tandatangan di dalam surat itu
SAML melog masuk anda ke hampir setiap aplikasi kerja, dan tandatangannya terletak di dalam XML yang ditandatanganinya.
SAML melog masuk anda ke hampir setiap aplikasi kerja, dan tandatangannya terletak di dalam XML yang ditandatanganinya. Secara terperinci: tarian log masuk antara aplikasi, pelayar dan penyedia identiti, bagaimana rupa "assertion", mengapa kanonikaliti perlu bersetuju pada setiap bait, dan mengapa kelas pepijat yang sama terus kembali dari 2012 hingga 2025. Terhasil daripada "SAML: A fractal of bad design" oleh Trail of Bits (312 mata di Hacker News).
Baca edisi bertulis (Bahasa Inggeris) ↗
Apa yang diliputi video ini
- SAML: log masuk yang menandatangani dirinya sendiri dari dalam
- 2002: empat format XML, satu jawatankuasa, satu industri keseluruhan
- Tarian log masuk: aplikasi → penyedia identiti → kembali melalui pelayar anda
- Assertion: tandatangan terletak di dalam apa yang ditandatanganinya
- Kanonikaliti: setuju pada setiap bait, atau tiada siapa yang log masuk
Transkrip terjemahan
Diterjemahkan daripada penceritaan asal Bahasa Inggeris. Audio dan kapsyen yang tersedia dikawal oleh YouTube.
SAML: log masuk yang menandatangani dirinya sendiri dari dalam
0:00 SAML ialah XML yang melog masuk anda ke hampir setiap aplikasi kerja yang anda miliki, dan tandatangannya terletak di dalam dokumen yang ditandatanganinya, seperti notari menyematkan copnya di dalam sampul surat yang dimeterainya. Sepuluh tahun selepas sebuah jawatankuasa menulisnya, penyelidik menguji empat belas kerangka kerja SAML. Sebelas gagal. Dan minggu ini, satu kiriman Trail of Bits yang menggelarnya fraktal reka bentuk yang buruk sampai ke muka hadapan Hacker News. Dalam tiga minit: bagaimana tarian log masuk berfungsi, di mana tandatangan bersembunyi,
0:27 dan mengapa pembetulan yang semua orang setuju adalah protokol yang berbeza. Ini adalah The Daily Diff, secara terperinci.
2002: empat format XML, satu jawatankuasa, satu industri keseluruhan
0:34 Dua ribu dua. Sebuah jawatankuasa keselamatan di Oasis menggabungkan empat format XML vendor menjadi satu. Universiti menggunakannya dahulu, kemudian Okta membina sebuah syarikat daripadanya, paling cepat sebuah dokumen jawatankuasa pernah bertukar menjadi pendapatan. Anda membuka aplikasi.
Tarian log masuk: aplikasi → penyedia identiti → kembali melalui pelayar anda
0:46 Ia tidak tahu siapa anda, jadi ia melantunkan pelayar anda ke penyedia identiti, contohnya Okta syarikat anda. Anda log masuk di sana. Okta menyerahkan dokumen XML yang ditandatangani kepada pelayar anda yang menyatakan siapa anda, dan pelayar menghantarnya kembali.
Assertion: tandatangan terletak di dalam apa yang ditandatanganinya
0:59 Dokumen itu adalah "assertion". Ia menamakan pengguna, dan tandatangan terletak di dalamnya, menunjuk kembali kepada "assertion" mengikut IDnya. Dan keseluruhannya melalui pelayar anda, iaitu, melalui pengguna. Untuk menyemaknya, aplikasi itu
Kanonikaliti: setuju pada setiap bait, atau tiada siapa yang log masuk
1:11 membina semula bait tepat yang ditandatangani. Ia memotong semula tandatangan, menormalkan ruang putih dan susunan atribut, dan menghash hasilnya. Itu adalah kanonikaliti, dan jika kedua-dua pihak tidak bersetuju dengan satu bait pun, tiada siapa yang log masuk. Token web JSON melakukannya secara berbeza. Pengepala, muatan dan tandatangan duduk bersebelahan dengan titik di antara. Tiada apa yang perlu dipotong dahulu.
2012: penyemak dan pembaca melihat elemen yang berbeza
1:32 Ini adalah retakan. Kod yang menyemak tandatangan dan kod yang membaca nama pengguna adalah sering dua bahagian yang berbeza. Pada dua ribu dua belas, sebuah kertas yang dipanggil "On Breaking Saml" menunjukkan anda boleh memindahkan assertion yang ditandatangani di mana pembaca mengabaikannya, dan meletakkan yang kedua di mana ia mencari. Salesforce dan Shibboleth adalah antara sebelas yang terpedaya dengannya. Pada dua ribu lapan belas, Duo menunjukkan bahawa komen di dalam nama pengguna boleh menyebabkan beberapa
2018 dan 2025: dua penghurai, dua jawapan berbeza
1:55 perpustakaan membaca hanya separuh nama, manakala tandatangan masih disemak. Pada dua ribu dua puluh lima, GitHub menemui dua penghurai XML di dalam ruby Saml tidak bersetuju tentang dokumen yang sama. Pepijat yang sama, dekad baharu. Trail of Bits memanggilnya fraktal, kerana setiap peringkat yang anda zum masuk mempunyai
Mengapa ia terus rosak: fraktal reka bentuk yang buruk
2:12 kecacatan yang sama. Ia dibina di atas XML, tandatangannya terselubung, dan log masuk sebenar menggunakan mungkin sepersepuluh spesifikasi. Dan balasan teratas di Hacker News datang daripada pembeli. Jika anda tidak mempunyai sokongan SAML, saya boleh mencari produk yang memilikinya. Kedua-duanya benar, itulah masalahnya. Jadi, Isnin. SHIP IT OpenID Connect dahulu, Fly dan Tailscale menjual kepada
Isnin: OIDC dahulu, perpustakaan yang diselenggara, bentuk yang ketat
2:31 syarikat tanpa SAML sama sekali. Jika pelanggan memaksanya, gunakan perpustakaan yang diselenggara, sentiasa kemas kini, dan tolak mesej yang tidak kelihatan seperti yang dihantar oleh Okta atau Google. Jangan sekali-kali menulis pemeriksaan tandatangan anda sendiri. NEEDS REVIEW
Keputusan, secara terperinci: REVERT
2:43 Keputusan, secara terperinci. REVERT. Hampir dua puluh lima tahun, satu kelas pepijat yang tidak pernah mati, dan pembetulan yang semua orang setuju adalah protokol yang berbeza. Sabtu lalu saya membongkar passkeys, jadi beritahu saya apa yang perlu dibuka seterusnya dalam komen. Dan itu adalah perbezaan untuk hari ini. Saya Niko dari Axrisi. Gabungkan dengan bertanggungjawab.
Sumber
- 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



