Π’ Rust-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ crates.io выявлСн врСдоносный ΠΏΠ°ΠΊΠ΅Ρ‚ rustdecimal

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ языка Rust ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΠ»ΠΈ ΠΎ выявлСнии Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ crates.io ΠΏΠ°ΠΊΠ΅Ρ‚Π° rustdecimal, содСрТащСго врСдоносный ΠΊΠΎΠ΄. ΠŸΠ°ΠΊΠ΅Ρ‚ Π±Ρ‹Π» основан Π½Π° Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ rust_decimal ΠΈ для распространСния пользовался сходством Π² ΠΈΠΌΠ΅Π½ΠΈ (тайпсквоттинг) с расчётом Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° отсутствиС символа подчёркивания, осущСствляя поиск ΠΈΠ»ΠΈ выбирая ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· списка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ указанная стратСгия оказалась ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΈ ΠΏΠΎ числу Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ лишь Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отстал ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π° (~111 тысяч Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ rustdecimal 1.23.1 ΠΈ 113 тысяч ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ rust_decimal 1.23.1). ΠŸΡ€ΠΈ этом Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π½Π° Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½Ρ‹ΠΉ ΠΊΠ»ΠΎΠ½, Π½Π΅ содСрТащий врСдоносного ΠΊΠΎΠ΄Π°. ВрСдоносныС измСнСния Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ 25 ΠΌΠ°Ρ€Ρ‚Π° Π² вСрсии rustdecimal 1.23.5, которая Π΄ΠΎ выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ блокирования ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±Ρ‹Π»Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΎΠΊΠΎΠ»ΠΎ 500 Ρ€Π°Π· (прСдполагаСтся Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ врСдоносной вСрсии ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° Π±ΠΎΡ‚Π°ΠΌΠΈ) ΠΈ Π½Π΅ Π±Ρ‹Π»Π° использована Π² зависимостях Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ врСдоносный ΠΏΠ°ΠΊΠ΅Ρ‚ Π±Ρ‹Π» Π² зависимостях Ρƒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).

ВрСдоносныС измСнСния сводились ΠΊ добавлСнию Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Decimal::new, Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТался обфусцированный ΠΊΠΎΠ΄ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ с внСшнСго сСрвСра ΠΈ запуска исполняСмого Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния GITLAB_CI, Π² случаС выставлСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ с внСшнСго сСрвСра загруТался Ρ„Π°ΠΉΠ» /tmp/git-updater.bin. Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹ΠΉ врСдоносный ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² Linux ΠΈ macOS (ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Windows Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π°ΡΡŒ).

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ врСдоносная функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π² процСссС тСстирования Π½Π° систСмах Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ПослС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ rustdecimal администраторы crates.io Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ· содСрТимого рСпозитория Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… врСдоносных вставок, Π½ΠΎ Π½Π΅ выявили ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…. Π’Π»Π°Π΄Π΅Π»ΡŒΡ†Π°ΠΌ систСм Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ GitLab рСкомСндуСтся ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ тСстируСмыС Π½Π° ΠΈΡ… сСрвСрах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ использовали Π² зависимостях ΠΏΠ°ΠΊΠ΅Ρ‚ rustdecimal.

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

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