Π ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² 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