46% de Python-pakaĵoj en la PyPI-deponejo enhavas eble nesekuran kodon

Grupo de esploristoj de la Universitato de Turku (Finnlando) publikigis la rezultojn de analizo de pakaĵoj en la deponejo de PyPI por la uzo de potenciale danĝeraj konstruaĵoj kiuj povus konduki al vundeblecoj. Dum la analizo de 197 mil pakoj, 749 mil eblaj sekurecaj problemoj estis identigitaj. 46% de pakaĵoj havas almenaŭ unu tian problemon. Inter la plej oftaj problemoj estas mankoj rilataj al escepttraktado kaj la uzo de funkcioj kiuj permesas kodonanstataŭigon.

El la 749 mil problemoj identigitaj, 442 mil (41%) estis etikeditaj kiel negravaj, 227 mil (30%) kiel moderaj problemoj kaj 80 mil (11%) kiel danĝeraj. Iuj pakaĵoj elstaras el la amaso kaj enhavas milojn da problemoj: ekzemple, la pako PyGGI identigis 2589 problemojn, ĉefe rilatajn al la uzo de la konstruo "try-except-pass", kaj la pako appengine-sdk trovis 2356 problemojn. Granda nombro da problemoj ankaŭ ĉeestas en la pakaĵoj genie.libs.ops, pbcore kaj genie.libs.parser.

Oni devas rimarki, ke la rezultoj estis akiritaj surbaze de aŭtomata statika analizo, kiu ne konsideras la kuntekston de apliko de iuj strukturoj. La programisto de la bandita ilaro, kiu estis uzata por skani la kodon, esprimis la opinion, ke pro la sufiĉe alta nombro da falsaj pozitivoj, la skanaj rezultoj ne povas esti rekte konsiderataj vundeblecoj sen plia mana revizio de ĉiu afero.

Ekzemple, la analizilo konsideras la uzon de nefidindaj hazardaj nombrogeneratoroj kaj haŝalgoritmoj, kiel ekzemple MD5, esti sekurecproblemo, dum en la kodo tiaj algoritmoj povas esti uzitaj por celoj kiuj ne influas sekurecon. La analizilo ankaŭ konsideras ajnan prilaboradon de eksteraj datumoj en nesekuraj funkcioj kiel pickle, yaml.load, subprocess kaj eval problemo, sed ĉi tiu uzo ne nepre implikas vundeblecon kaj fakte la uzo de ĉi tiuj funkcioj povas esti efektivigita sen sekureca minaco. .

Inter la testoj uzataj en la studo:

  • Uzante eble nesekurajn funkciojn exec, mktemp, eval, mark_safe, ktp.
  • Nesekura agordo de alirrajtoj por dosieroj.
  • Alkroĉante retan ingon al ĉiuj retaj interfacoj.
  • Uzo de pasvortoj kaj ŝlosiloj strikte specifitaj en la kodo.
  • Uzante antaŭdifinitan provizoran dosierujon.
  • Uzante pasi kaj daŭrigi en catch-all-stilaj esceptotraktiloj;
  • Lanĉante TTT-aplikaĵojn bazitajn sur la TTT-kadro de Flask kun sencimiga reĝimo ebligita.
  • Uzante nesekurajn datumsenerigajn metodojn.
  • Uzas MD2, MD4, MD5 kaj SHA1 hash-funkciojn.
  • Uzo de nesekuraj DES-ĉifroj kaj ĉifradreĝimoj.
  • Uzo de nesekura efektivigo de HTTPSConnection en iuj versioj de Python.
  • Specifante la file://-skemon en urlopen.
  • Uzante pseŭdohazarajn nombrogeneratorojn dum plenumado de kriptografaj taskoj.
  • Uzante la Telnet-protokolon.
  • Uzado de nesekuraj XML-analiziloj.

Aldone, oni povas rimarki, ke 8 malicaj pakaĵoj estis detektitaj en la dosierujo PyPI. Antaŭ forigo, problemaj pakaĵoj estis elŝutitaj pli ol 30 mil fojojn. Por kaŝi malican agadon kaj preteriri avertojn de simplaj senmovaj analiziloj en pakaĵoj, kodblokoj estis koditaj uzante Base64 kaj efektivigitaj post malkodado per evalvoko.

La noblesse, genesisbot, estas, suferas, noblesse2 kaj noblessev2-pakaĵoj enhavas kodon por kapti kreditkartajn nombrojn kaj pasvortojn konservitajn en Chrome kaj Edge-retumiloj, kaj ankaŭ translokigi kontoĵetonojn de la aplikaĵo Discord kaj sendi sistemajn datumojn, inkluzive de ekrankopioj de ekranenhavo. La pytagora kaj pytagora2-pakaĵoj inkludis la kapablon ŝargi kaj ekzekuti triapartan plenumeblan kodon.

fonto: opennet.ru

Aldoni komenton