46% ti awọn idii Python ninu ibi ipamọ PyPI ni koodu ti ko ni aabo ninu

Ẹgbẹ kan ti awọn oniwadi lati Ile-ẹkọ giga ti Turku (Finlandi) ṣe atẹjade awọn abajade ti itupalẹ awọn idii ninu ibi ipamọ PyPI fun lilo awọn iṣelọpọ ti o lewu ti o le ja si awọn ailagbara. Lakoko itupalẹ ti awọn idii 197 ẹgbẹrun, 749 ẹgbẹrun awọn iṣoro aabo ti o pọju ni idanimọ. 46% ti awọn idii ni o kere ju ọkan iru iṣoro bẹ. Lara awọn iṣoro ti o wọpọ julọ jẹ awọn ailagbara ti o ni ibatan si mimu iyasọtọ ati lilo awọn ẹya ti o gba laaye iyipada koodu.

Ninu 749 ẹgbẹrun awọn iṣoro ti a mọ, 442 ẹgbẹrun (41%) ni aami bi kekere, 227 ẹgbẹrun (30%) bi awọn iṣoro iwọntunwọnsi ati 80 ẹgbẹrun (11%) bi eewu. Diẹ ninu awọn idii duro jade lati inu ijọ enia ati pe o ni awọn ẹgbẹẹgbẹrun awọn iṣoro: fun apẹẹrẹ, package PyGGI ṣe idanimọ awọn iṣoro 2589, nipataki ni ibatan si lilo “gbiyanju-ayafi-kọja” ikole, ati package appengine-sdk rii awọn iṣoro 2356. Nọmba nla ti awọn iṣoro tun wa ninu awọn idii genie.libs.ops, pbcore ati genie.libs.parser.

O yẹ ki o ṣe akiyesi pe a gba awọn abajade ti o da lori itupalẹ aimi adaṣe, eyiti ko ṣe akiyesi ọrọ-ọrọ ti ohun elo ti awọn ẹya kan. Olùgbéejáde ti ohun elo irinṣẹ bandit, eyiti a lo lati ṣe ọlọjẹ koodu naa, ṣalaye ero pe nitori nọmba ti o ga julọ ti awọn idaniloju eke, awọn abajade ọlọjẹ ko le ṣe akiyesi awọn ailagbara taara laisi atunyẹwo afọwọṣe afikun ti ọran kọọkan.

Fun apẹẹrẹ, olutupalẹ ka lilo awọn olupilẹṣẹ nọmba ID ti ko ni igbẹkẹle ati awọn algoridimu hashing, gẹgẹbi MD5, lati jẹ iṣoro aabo, lakoko ti o wa ninu koodu iru awọn algoridimu le ṣee lo fun awọn idi ti ko ni ipa lori aabo. Oluyanju tun ṣe akiyesi sisẹ eyikeyi ti data ita ni awọn iṣẹ ailewu bii pickle, yaml.load, subprocess ati eval iṣoro kan, ṣugbọn lilo yii ko ni dandan pẹlu ailagbara ati ni otitọ lilo awọn iṣẹ wọnyi le ṣe imuse laisi irokeke aabo kan. .

Lara awọn idanwo ti a lo ninu iwadi naa:

  • Lilo awọn iṣẹ ailewu ti o lewu exec, mktemp, eval, mark_safe, ati bẹbẹ lọ.
  • Eto ti ko ni aabo ti awọn ẹtọ iwọle fun awọn faili.
  • So iho nẹtiwọki kan si gbogbo awọn atọkun nẹtiwọki.
  • Lilo awọn ọrọ igbaniwọle ati awọn bọtini ni pato pato ninu koodu naa.
  • Lilo itọsọna igba diẹ ti a ti yan tẹlẹ.
  • Lilo iwe-iwọle ati tẹsiwaju ninu apeja-gbogbo-ara imukuro awọn olutọju;
  • Ifilọlẹ awọn ohun elo wẹẹbu ti o da lori ilana wẹẹbu Flask pẹlu ipo n ṣatunṣe aṣiṣe ṣiṣẹ.
  • Lilo lewu data deserialization awọn ọna.
  • Nlo MD2, MD4, MD5 ati awọn iṣẹ hash SHA1.
  • Lilo awọn apamọ DES ti ko ni aabo ati awọn ipo fifi ẹnọ kọ nkan.
  • Lilo imuse HTTPSconnection ti ko ni aabo ni diẹ ninu awọn ẹya ti Python.
  • Pato faili:: // ero ni urlopen.
  • Lilo awọn olupilẹṣẹ nọmba pseudorandom nigba ṣiṣe awọn iṣẹ-ṣiṣe cryptographic.
  • Lilo Telnet Ilana.
  • Lilo awọn atunwo XML ti ko ni aabo.

Ni afikun, o le ṣe akiyesi pe awọn idii irira 8 ni a rii ninu itọsọna PyPI. Ṣaaju yiyọ kuro, awọn idii iṣoro ti ṣe igbasilẹ diẹ sii ju awọn akoko 30 ẹgbẹrun lọ. Lati tọju iṣẹ irira ati awọn ikilọ fori lati ọdọ awọn atunnkanka aimi ti o rọrun ninu awọn idii, awọn bulọọki koodu ti wa ni koodu nipa lilo Base64 ati ṣiṣe lẹhin iyipada nipa lilo ipe eval.

Awọn noblesse, genesisbot, jẹ, jiya, noblesse2 ati awọn idii noblesev2 ni koodu lati ṣe idiwọ awọn nọmba kaadi kirẹditi ati awọn ọrọ igbaniwọle ti o fipamọ sinu Chrome ati awọn aṣawakiri Edge, ati gbigbe awọn ami akọọlẹ lati ohun elo Discord ati firanṣẹ data eto, pẹlu awọn sikirinisoti ti awọn akoonu iboju. Awọn idii pytagora ati pytagora2 pẹlu agbara lati ṣajọpọ ati ṣiṣẹ koodu ipaniyan ẹni-kẹta.

orisun: opennet.ru

Fi ọrọìwòye kun