PyPI репозитор дахь Python багцын 46% нь аюултай байж болзошгүй код агуулсан байна

Турку (Финлянд) их сургуулийн хэсэг судлаачид эмзэг байдалд хүргэж болзошгүй аюултай бүтцийг ашиглах зорилгоор PyPI репозитор дахь багцын шинжилгээний үр дүнг нийтэлжээ. 197 мянган багцад дүн шинжилгээ хийх явцад 749 мянган аюулгүй байдлын асуудал илэрсэн. Багцуудын 46% нь дор хаяж нэг ийм асуудалтай байдаг. Хамгийн нийтлэг бэрхшээлүүдийн дунд онцгой тохиолдлуудыг зохицуулахтай холбоотой дутагдал, кодыг солих боломжийг олгодог функцуудыг ашиглахтай холбоотой дутагдал байдаг.

Илэрсэн 749 мянган асуудлын 442 мянга (41%) нь хөнгөн, 227 мянга (30%) нь дунд зэрэг, 80 мянга (11%) нь аюултай гэсэн шошготой байна. Зарим багцууд нь олны дундаас ялгарч, олон мянган асуудлуудыг агуулсан байдаг: жишээлбэл, PyGGI багц нь голчлон "оролдоос бусад нь нэвтрүүлэх" бүтцийг ашиглахтай холбоотой 2589 асуудлыг тодорхойлсон бол appengine-sdk багцад 2356 асуудал илэрсэн. Мөн genie.libs.ops, pbcore болон genie.libs.parser багцуудад олон тооны асуудал байдаг.

Үр дүнг автоматжуулсан статик шинжилгээнд үндэслэн олж авсан гэдгийг тэмдэглэх нь зүйтэй бөгөөд энэ нь тодорхой бүтцийг ашиглах нөхцөлийг харгалздаггүй. Кодыг скан хийхэд ашигласан дээрэмчдийн хэрэгслийн хөгжүүлэгч нь хуурамч эерэг үзүүлэлтүүдийн тоо нэлээд их байгаа тул асуудал бүрийг нэмэлт гараар шалгахгүйгээр сканнерын үр дүнг шууд эмзэг гэж үзэх боломжгүй гэж үзэж байна.

Жишээлбэл, анализатор нь найдваргүй санамсаргүй тоо үүсгэгч, MD5 гэх мэт хэш алгоритмуудыг аюулгүй байдлын асуудал гэж үздэг бол кодонд ийм алгоритмуудыг аюулгүй байдалд нөлөөлөхгүй зорилгоор ашиглаж болно. Анализатор нь даршилсан, yaml.load, дэд боловсруулалт, үнэлгээ зэрэг аюултай функцууд дахь гадны өгөгдөлд ямар нэгэн боловсруулалт хийх нь асуудал гэж үздэг боловч энэ хэрэглээ нь эмзэг байдлыг агуулсан байх албагүй бөгөөд үнэн хэрэгтээ эдгээр функцийг ашиглах нь аюулгүй байдлын аюул заналгүйгээр хэрэгжиж болно. .

Судалгаанд ашигласан туршилтуудын дунд:

  • exec, mktemp, eval, mark_safe гэх мэт аюултай функцуудыг ашиглаж байна.
  • Файлд хандах эрхийн аюулгүй бус тохиргоо.
  • Сүлжээний залгуурыг бүх сүлжээний интерфэйсүүдэд холбох.
  • Кодод хатуу заасан нууц үг, түлхүүрийг ашиглах.
  • Урьдчилан тодорхойлсон түр лавлахыг ашиглах.
  • catch-all-style онцгой тохиолдлуудыг зохицуулагч дээр нэвтрүүлэх болон үргэлжлүүлэх ашиглах;
  • Дибаг хийх горимыг идэвхжүүлсэн Flask вэб фреймворк дээр суурилсан вэб програмуудыг ажиллуулж байна.
  • Аюултай өгөгдлийг цувралаар устгах аргуудыг ашиглах.
  • MD2, MD4, MD5 болон SHA1 хэш функцуудыг ашигладаг.
  • Аюулгүй DES шифр болон шифрлэлтийн горимыг ашиглах.
  • Python-ийн зарим хувилбаруудад аюулгүй HTTPSCConnection хэрэгжүүлэлтийг ашиглах.
  • Urlopen-д file:// схемийг зааж өгч байна.
  • Криптографийн ажлыг гүйцэтгэхдээ псевдорандом тоо үүсгэгчийг ашиглах.
  • Telnet протоколыг ашиглах.
  • Аюулгүй XML задлагч ашиглах.

Нэмж дурдахад PyPI лавлахаас 8 хортой багц илэрсэн болохыг тэмдэглэж болно. Устгахаас өмнө асуудалтай багцуудыг 30 мянга гаруй удаа татаж авсан. Багц дахь энгийн статик анализаторын хорлонтой үйлдлийг нуух, анхааруулгыг тойрч гарахын тулд кодын блокуудыг Base64 ашиглан кодлож, үнэлгээний дуудлага ашиглан код тайлсны дараа гүйцэтгэсэн.

Noblesse, genesisbot, noblesse2 болон noblessev2 багцууд нь Chrome болон Edge хөтчид хадгалагдсан зээлийн картын дугаар, нууц үгийг таслан зогсоох, мөн Discord програмаас дансны жетон шилжүүлэх, дэлгэцийн агуулгын дэлгэцийн агшин зэрэг системийн өгөгдлийг илгээх код агуулдаг. pytagora болон pytagora2 багцууд нь гуравдагч этгээдийн гүйцэтгэх кодыг ачаалах, ажиллуулах чадварыг багтаасан.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх