Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² 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