Packj — инструмСнтарий для выявлСния врСдоносных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° языках Python ΠΈ JavaScript

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Packj, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ инструмСнтарий ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ рискованныС конструкции Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ врСдоносной активности ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ уязвимостСй, примСняСмых для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ рассматриваСмыС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ («supply chain»). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° языках Python ΠΈ JavaScript, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… PyPi ΠΈ NPM (Π² этом мСсяцС Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ruby ΠΈ RubyGems). Код инструмСнтария написан Π½Π° языкС Python ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ AGPLv3.

Π’ Ρ…ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° 330 тысяч ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ инструмСнтария Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ PyPi Π±Ρ‹Π»ΠΎ выявлСно 42 врСдоносных ΠΏΠ°ΠΊΠ΅Ρ‚Π° c бэкдорами ΠΈ 2.4 тысячи рискованных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π’ процСссС обслСдования выполняСтся статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π° для выявлСния особСнностСй API ΠΈ оцСниваСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ извСстных уязвимостСй, ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… Π² Π‘Π” OSV. Для Π°Π½Π°Π»ΠΈΠ·Π° API примСняСтся ΠΏΠ°ΠΊΠ΅Ρ‚ MalOSS. Код ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² анализируСтся Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ наличия Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… шаблонов, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСмых Π²ΠΎ врСдоносном ПО. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ Π½Π° основС изучСния 651 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½Π½ΠΎΠΉ врСдоносной Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, приводящиС ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ риска Π½Π΅Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ использования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· «eval» ΠΈΠ»ΠΈ «exec», Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹, использованиС Ρ‚Π΅Ρ…Π½ΠΈΠΊ запутывания ΠΈ скрытия ΠΊΠΎΠ΄Π° (obfuscated), манипуляции с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния, Π½Π΅Ρ†Π΅Π»Π΅Π²ΠΎΠΉ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ сСтСвым рСсурсам Π² сцСнариях установки (setup.py), использованиС тайпсквотинга (Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΡ‘Π½, ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° названия популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ), выявлСниС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… ΠΈ Π·Π°Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… email ΠΈ сайтов, отсутствиС ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ рСпозитория с ΠΊΠΎΠ΄ΠΎΠΌ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ выявлСниС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ исслСдоватСлями бСзопасности пяти врСдоносных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ PyPi, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ отправляли Π½Π° внСшний сСрвСр содСрТимоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния с расчётом Π½Π° ΠΊΡ€Π°ΠΆΡƒ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΊ AWS ΠΈ систСмам Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ: loglib-modules (ΠΏΡ€Π΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΠ»Π°ΡΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΊ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ loglib), pyg-modules, pygrata ΠΈ pygrata-utils (ΠΏΡ€Π΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΠ»ΠΈΡΡŒ ΠΊΠ°ΠΊ дополнСния ΠΊ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pyg) ΠΈ hkg-sol-utils.

Packj - инструмСнтарий для выявлСния врСдоносных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° языках Python ΠΈ JavaScript


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