Mae 46% o becynnau Python yn ystorfa PyPI yn cynnwys cod a allai fod yn anniogel

Cyhoeddodd grŵp o ymchwilwyr o Brifysgol Turku (Y Ffindir) ganlyniadau dadansoddiad o becynnau yn y storfa PyPI ar gyfer defnyddio lluniadau a allai fod yn beryglus a allai arwain at wendidau. Yn ystod y dadansoddiad o 197 mil o becynnau, nodwyd 749 mil o broblemau diogelwch posibl. Mae gan 46% o becynnau o leiaf un broblem o'r fath. Ymhlith y problemau mwyaf cyffredin mae diffygion sy'n ymwneud â thrin eithriadau a'r defnydd o nodweddion sy'n caniatáu amnewid cod.

O'r 749 mil o broblemau a nodwyd, cafodd 442 mil (41%) eu labelu fel mân broblemau, 227 mil (30%) fel problemau cymedrol ac 80 mil (11%) fel rhai peryglus. Mae rhai pecynnau yn sefyll allan o'r dorf ac yn cynnwys miloedd o broblemau: er enghraifft, nododd pecyn PyGGI 2589 o broblemau, yn ymwneud yn bennaf â defnyddio'r lluniad “ceisio ac eithrio pas”, a chanfu pecyn appengine-sdk 2356 o broblemau. Mae nifer fawr o broblemau hefyd yn bresennol yn y pecynnau genie.libs.ops, pbcore a genie.libs.parser.

Dylid nodi y cafwyd y canlyniadau yn seiliedig ar ddadansoddiad statig awtomataidd, nad yw'n ystyried cyd-destun cymhwyso rhai strwythurau. Mynegodd datblygwr y pecyn cymorth bandit, a ddefnyddiwyd i sganio'r cod, y farn, oherwydd y nifer eithaf uchel o bethau cadarnhaol ffug, na ellir ystyried yn uniongyrchol bod canlyniadau'r sgan yn wendidau heb adolygiad llaw ychwanegol o bob mater.

Er enghraifft, mae'r dadansoddwr yn ystyried bod defnyddio generaduron rhif hap annibynadwy ac algorithmau stwnsio, megis MD5, yn broblem diogelwch, tra yn y cod gellir defnyddio algorithmau o'r fath at ddibenion nad ydynt yn effeithio ar ddiogelwch. Mae'r dadansoddwr hefyd yn ystyried unrhyw brosesu data allanol mewn swyddogaethau anniogel fel picl, yaml.load, subprocess ac eval yn broblem, ond nid yw'r defnydd hwn o reidrwydd yn cynnwys bregusrwydd ac mewn gwirionedd gellir gweithredu'r defnydd o'r swyddogaethau hyn heb fygythiad diogelwch .

Ymhlith y profion a ddefnyddiwyd yn yr astudiaeth:

  • Defnyddio swyddogaethau a allai fod yn anniogel exec, mktemp, eval, mark_safe, ac ati.
  • Gosodiad ansicr o hawliau mynediad ar gyfer ffeiliau.
  • Atodi soced rhwydwaith i bob rhyngwyneb rhwydwaith.
  • Defnyddio cyfrineiriau ac allweddi a nodir yn llym yn y cod.
  • Defnyddio cyfeiriadur dros dro wedi'i ddiffinio ymlaen llaw.
  • Defnyddio pas a pharhau mewn trinwyr eithriadau cyffredinol;
  • Lansio cymwysiadau gwe yn seiliedig ar fframwaith gwe Fflasg gyda modd dadfygio wedi'i alluogi.
  • Defnyddio dulliau dad-gyfrifo data anniogel.
  • Yn defnyddio swyddogaethau stwnsh MD2, MD4, MD5 a SHA1.
  • Defnydd o seiffrau DES anniogel a dulliau amgryptio.
  • Defnydd o weithrediad HTTPSCconnection ansicr mewn rhai fersiynau o Python.
  • Yn nodi'r cynllun ffeil:// yn urlopen.
  • Defnyddio generaduron rhif ffug-enwog wrth gyflawni tasgau cryptograffig.
  • Defnyddio protocol Telnet.
  • Defnyddio parsers XML anniogel.

Yn ogystal, gellir nodi bod 8 pecyn maleisus wedi'u canfod yn y cyfeiriadur PyPI. Cyn eu tynnu, lawrlwythwyd pecynnau problemus fwy na 30 mil o weithiau. Er mwyn cuddio gweithgarwch maleisus a dargyfeirio rhybuddion gan ddadansoddwyr statig syml mewn pecynnau, cafodd blociau cod eu hamgodio gan ddefnyddio Base64 a'u gweithredu ar ôl datgodio gan ddefnyddio galwad eval.

Mae'r rhai noblesse, genesisbot, yn, dioddef, pecynnau noblesse2 a noblessev2 yn cynnwys cod i ryng-gipio rhifau cardiau credyd a chyfrineiriau sydd wedi'u storio ym mhorwyr Chrome ac Edge, yn ogystal â throsglwyddo tocynnau cyfrif o'r cymhwysiad Discord ac anfon data system, gan gynnwys sgrinluniau o gynnwys sgrin . Roedd y pecynnau pytagora a pytagora2 yn cynnwys y gallu i lwytho a gweithredu cod gweithredadwy trydydd parti.

Ffynhonnell: opennet.ru

Ychwanegu sylw