Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ruby-saml, приводящая ΠΊ ΠΎΠ±Ρ…ΠΎΠ΄Ρƒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² GitLab

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ обновлСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ совмСстной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GitLab β€” 17.9.2, 17.8.5 ΠΈ 17.7.7, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… устранСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2025-25291, CVE-2025-25292), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π½Π° Π±Π°Π·Π΅ SAML (Security Assertion Markup Language). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ присутствуСт Π² Ruby-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ruby-saml, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для SAML-Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ GitLab ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² обновлСниях ruby-saml 1.18.0 ΠΈ 1.12.4.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° различиями Π² Ρ€Π°Π·Π±ΠΎΡ€Π΅ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² парсСрами ReXML ΠΈ Nokogiri, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ своСй структурС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ REXML ΠΈ Nokogiri ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π² XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ подписи, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания условий, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ использована ΠΎΠ΄Π½Π° подпись, Π° ΠΏΡ€ΠΈ аттСстации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ другая. Данная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ позволяСт Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π°Ρ‚Π°ΠΊΠΈ XSW (XML Signature Wrapping) для ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° SAML для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ содСрТимого, имСя доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ подписанному SAML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° выявлСна Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Ρ‹ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ GitHub, которая рассматривала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° GitHub Π½Π° использованиС Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π² цСлях ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасности ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»Π° конкурс (Bug bounty) ΠΏΠΎ Π²Π·Π»ΠΎΠΌΡƒ тСстового окруТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для SAML-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ использовалась Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ruby-saml. Один ΠΈΠ· исслСдоватСлСй бСзопасности ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ уязвимости. Π’ процСссС Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ сотрудник GitHub выявил Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ способ Π°Ρ‚Π°ΠΊΠΈ, основанный Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅.

Π’ дальнСйшСм Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π±Ρ‹Π»Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π° для GitLab. Π’ контСкстС GitLab ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ позволяСт Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒ доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ подписанному SAML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ, ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ‚.Π΅. для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ Π²ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Ρ… записСй.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ