Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Packj, ΠΊΠΎΡΡΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΠΊΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ ΠΈΠ»ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π°ΡΠ°ΠΊΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ("supply chain"). ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π½Π° Python ΠΈ JavaScript, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅ PyPi ΠΈ NPM (Π² ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠ΅Ρ ΡΡΡΠΎ ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Ruby ΠΈ RubyGems). ΠΠΎΠ΄ΡΡ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Python ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· AGPLv3.
ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° 330 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ PyPi Π±ΡΡ Π° ΠΎΡΠΊΡΠΈΡΠΈ 42 Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ Π±Π΅ΠΊΠ΄ΠΎΡΠΈ ΠΈ 2.4 Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΠΈΡΠΊΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°. Π ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΎΠ±ΡΠ»Π΅Π΄Π²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° API ΠΈ ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΎΡΠ±Π΅Π»ΡΠ·Π°Π½ΠΈ Π² ΠΠ OSV. ΠΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° API ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ°ΠΊΠ΅ΡΡΡ MalOSS. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° Π·Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠΎΡΡΡΠ΅Ρ. Π¨Π°Π±Π»ΠΎΠ½ΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π΅Π½ΠΈ Π½Π° Π±Π°Π·Π° ΠΏΡΠΎΡΡΠ²Π°Π½Π΅ Π½Π° 651 ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΠΊΡΠΈΠ²Π°Ρ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ, Π²ΠΎΠ΄Π΅ΡΠΈ Π΄ΠΎ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ ΡΠΈΡΠΊ ΠΎΡ Π½Π΅ΡΠ΅Π»Π΅Π²ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΡΡΠ΅Π· "eval" ΠΈΠ»ΠΈ "exec", Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΊΠΎΠ΄ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° Π·Π°ΠΏΠ»ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° (obfuscated), ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°, Π½Π΅ΡΠ΅Π»Π΅Π²ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π² ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ (setup.py), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° type squatting (ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°, ΡΡ ΠΎΠ΄Π½ΠΈ Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ), ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ ΠΈΠ·ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΈ ΡΠ°ΠΉΡΠΎΠ²Π΅, ΠΎΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΠΎΡΠΊΡΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ΅Ρ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ PyPi, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π»ΠΈ Π½Π° Π²ΡΠ½ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° Ρ ΡΠ΅Π» ΠΊΡΠ°ΠΆΠ±Π° Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° AWS ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: loglib-modules (ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π° ΠΊΠ°ΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΡΠΌ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° loglib), pyg-modules, pygrata ΠΈ pygrata-utils (ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΠΌ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° pyg) ΠΈ hkg-sol-utils.

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
