Уязвимост Π² RubyGems.org, позволяваща подмяна Π½Π° Ρ‡ΡƒΠΆΠ΄ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ

Π’ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉΠ½Π°Ρ‚Π° систСма RubyGems.org Π΅ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° уязвимост (CVE-2022-29176), която позволява замяна Π½Π° Ρ‡ΡƒΠΆΠ΄ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² рСпозиторията Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΏΡ€Π°Π²Π°, Ρ‡Ρ€Π΅Π· изтСглянС (yank) Π½Π° Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ ΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ» със ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Π½Π° вСрсия вмСсто Π½Π΅Π³ΠΎ.

Π—Π° ΡƒΡΠΏΠ΅ΡˆΠ½Π° Сксплоатация Π½Π° уязвимостта Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€ΠΈ условия:

  • Атаката ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½Π° само Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π² Ρ‡ΠΈΠΈΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡŠΡ‚ дСфис.
  • Атакуващият трябва Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠ°Ρ‡ΠΈ gem-ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° част ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ си ΠΏΡ€Π΅Π΄ΠΈ символа дСфис. НапримСр, Π°ΠΊΠΎ Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° Π΅ насочСна към ΠΏΠ°ΠΊΠ΅Ρ‚Π° Β«rails-html-sanitizerΒ», атакуващият трябва Π΄Π° ΠΊΠ°Ρ‡ΠΈ собствСн ΠΏΠ°ΠΊΠ΅Ρ‚ Β«rails-htmlΒ» Π² рСпозиторията.
  • ΠŸΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΎΠ±Π΅ΠΊΡ‚ Π½Π° Π°Ρ‚Π°ΠΊΠ°, трябва Π΄Π° Π΅ създадСн ΠΏΡ€Π΅Π· послСднитС 30 Π΄Π½ΠΈ ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ Π΅ обновяван Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 100 Π΄Π½ΠΈ.

Уязвимостта Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° дСйствиСто Β«yankΒ», ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° част ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ слСд дСфиса ΠΊΠ°Ρ‚ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄Π° бъдС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Π½ΠΎ изтСглянСто Π½Π° Ρ‡ΡƒΠΆΠ΄ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Ρ‡ΠΈΠΉΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ ΠΏΠΎ ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‰ Π½Π°Ρ‡ΠΈΠ½ Π΄ΠΎ символа дСфис. Π’ ΠΊΠΎΠ΄Π° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π·Π° опСрацията Β«yankΒ» Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° β€˜find_by!(full_name: Β«#{rubygem.name}-#{slug}Β»)’, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ Β«slugΒ» Π΅ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½ ΠΎΡ‚ собствСника Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π° опрСдСлянС Π½Π° изтСгляната вСрсия. Π‘ΠΎΠ±ΡΡ‚Π²Π΅Π½ΠΈΠΊΡŠΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Β«rails-htmlΒ» вмСсто вСрсия Β«1.2.3Β» Π΅ могъл Π΄Π° посочи Β«sanitizer-1.2.3Β», ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΈ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° опСрацията Π²ΡŠΡ€Ρ…Ρƒ Ρ‡ΡƒΠΆΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚ Β«rails-html-sanitizer-1.2.3Β».

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚Π° бСшС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° ΠΎΡ‚ изслСдоватСл ΠΏΠΎ сигурността Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° дСйстваща ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° Π½Π°Π³Ρ€Π°Π΄ΠΈ Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с бСзопасността Π² извСстни ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° HackerOne. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС Ρ€Π΅ΡˆΠ΅Π½ Π² RubyGems.org Π½Π° 5 ΠΌΠ°ΠΉ ΠΈ ΠΏΠΎ Π΄ΡƒΠΌΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Ρ‚Π΅ всС ΠΎΡ‰Π΅ Π½Π΅ са ΠΎΡ‚ΠΊΡ€ΠΈΠ»ΠΈ слСди ΠΎΡ‚ Сксплоатация Π½Π° уязвимостта Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· послСднитС 18 мСсСца. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ само ΠΏΠΎΠ²ΡŠΡ€Ρ…Π½ΠΎΡΡ‚Π΅Π½ ΠΎΠ΄ΠΈΡ‚ ΠΈ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-дълбока ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°.

Π—Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° историята Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π² Ρ„Π°ΠΉΠ»Π° Gemfile.lock, Π° Π·Π»ΠΎΠ²Ρ€Π΅Π΄Π½Π°Ρ‚Π° активност сС изразява Π² Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π·Π°ΠΏΠ°Π·Π²Π°Ρ‰ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ ΠΈ вСрсията ΠΈΠ»ΠΈ смяна Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ gemname-1.2.3 Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΄ΠΎ gemname-1.2.3-java). ΠšΠ°Ρ‚ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ скрита замяна Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² систСмитС Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Bundler с ΠΎΠΏΡ†ΠΈΠΈ β€žβ€”frozenβ€œ ΠΈΠ»ΠΈ β€žβ€”deploymentβ€œ Π·Π° фиксиранС Π½Π° зависимоститС.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster