46% Python-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ PyPI содСрТат ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСбСзопасный ΠΊΠΎΠ΄

Π“Ρ€ΡƒΠΏΠΏΠ° исслСдоватСлСй ΠΈΠ· УнивСрситСта Π’ΡƒΡ€ΠΊΡƒ (Ѐинляндия) ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ PyPI Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ использования ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасных конструкций, способных привСсти ΠΊ появлСнию уязвимостСй. Π’ Ρ…ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° 197 тысяч ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² выявлСно 749 тысяч ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ. Π’ 46% ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² присутствуСт ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½Π° подобная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π‘Ρ€Π΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ, связанныС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ использованиСм возмоТностСй, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π΅ΠΉ подстановку ΠΊΠΎΠ΄Π°.

Из выявлСнных 749 тысяч ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ 442 тысячи (41%) ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, 227 тысяч (30%) ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠΉ опасности ΠΈ 80 тысяч (11%) ΠΊΠ°ΠΊ опасныС. НСкоторыС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π²Ρ‹Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΠ±Ρ‰Π΅ΠΉ массы ΠΈ содСрТат тысячи ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ PyGGI выявлСно 2589 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π² основном связанных с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ конструкции «try-except-pass», Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ appengine-sdk Π½Π°ΠΉΠ΄Π΅Π½ΠΎ 2356 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ число ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ присутствуСт Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… genie.libs.ops, pbcore ΠΈ genie.libs.parser.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π½Π° основС провСдСния Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ статичСского Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ контСкст примСнСния Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… конструкций. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ инструмСнтария bandit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался для сканирования ΠΊΠΎΠ΄Π°, высказал ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈΠ·-Π·Π° достаточно высокого числа Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ нСльзя Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ уязвимостями Π±Π΅Π· провСдСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ рСцСнзирования ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

НапримСр, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ считаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Ρ… Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² случайных чисСл ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ MD5, Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ†Π΅Π»Π΅ΠΉ, Π½Π΅ Π²Π»ΠΈΡΡŽΡ‰ΠΈΡ… Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Анализатор Ρ‚Π°ΠΊΠΆΠ΅ считаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π»ΡŽΠ±ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π² нСбСзопасных функциях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ pickle, yaml.load, subprocess ΠΈ eval, Π½ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ использованиС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сопряТСно с появлСниСм уязвимости ΠΈ Π½Π° Π΄Π΅Π»Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π±Π΅Π· ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ бСзопасности.

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² исслСдовании:

  • ИспользованиС ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСбСзопасных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ exec, mktemp, eval, mark_safe ΠΈ Ρ‚.ΠΏ..
  • НСбСзопасноС выставлСниС ΠΏΡ€Π°Π² доступа для Ρ„Π°ΠΉΠ»ΠΎΠ².
  • ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ сСтСвого сокСта ΠΊΠΎ всСм сСтСвым интСрфСйсам.
  • ИспользованиС Тёстко ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ΄Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.
  • ИспользованиС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.
  • ИспользованиС pass ΠΈ continue Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ catch-all-style;
  • Запуск web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ Π²Π΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Flask с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ.
  • ИспользованиС нСбСзопасных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² дСсСриализации Π΄Π°Π½Π½Ρ‹Ρ….
  • ИспользованиС Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MD2, MD4, MD5 ΠΈ SHA1.
  • ИспользованиС нСбСзопасных ΡˆΠΈΡ„Ρ€ΠΎΠ² DES ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ.
  • ИспользованиС нСбСзопасной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ HTTPSConnection Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсиях Python.
  • Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ схСмы file:// Π² urlopen.
  • ИспользованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² псСвдослучайных чисСл ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ криптографичСских Π·Π°Π΄Π°Ρ‡.
  • ИспользованиС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Telnet.
  • ИспользованиС нСбСзопасных парсСров XML.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ PyPI 8 врСдоносных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ успСли Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 30 тысяч Ρ€Π°Π·. Для скрытия врСдоносной активности ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ простых статичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΎΡΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Base64 ΠΈ организация ΠΈΠ· исполнСния послС дСкодирования Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² eval.

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… noblesse, genesisbot, are, suffer, noblesse2 ΠΈ noblessev2 выявлСн ΠΊΠΎΠ΄ для ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, сохранённых Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… Chrome ΠΈ Edge, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Ρ… записСй ΠΈΠ· прилоТСния Discord ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ систСмС, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ содСрТимого экрана. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… pytagora ΠΈ pytagora2 присутствовала Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ выполнСния стороннСго исполняСмого ΠΊΠΎΠ΄Π°.

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