PyPI repozitoriyasındakı Python paketlərinin 46%-də potensial təhlükəli kod var

Turku Universitetinin (Finlandiya) bir qrup tədqiqatçısı zəifliklərə səbəb ola biləcək potensial təhlükəli konstruksiyaların istifadəsi üçün PyPI repozitoriyasında paketlərin təhlilinin nəticələrini dərc edib. 197 min paketin təhlili zamanı 749 min potensial təhlükəsizlik problemi müəyyən edilib. Paketlərin 46%-də ən azı bir belə problem var. Ən ümumi problemlər arasında istisnaların idarə edilməsi və kodun dəyişdirilməsinə imkan verən funksiyaların istifadəsi ilə bağlı çatışmazlıqlar var.

Müəyyən edilmiş 749 min problemdən 442 mini (41%) kiçik, 227 mini (30%) orta dərəcəli, 80 mini (11%) isə təhlükəli adlandırılıb. Bəzi paketlər izdihamdan fərqlənir və minlərlə problemi ehtiva edir: məsələn, PyGGI paketi əsasən “try-except-pass” konstruksiyasının istifadəsi ilə bağlı 2589 problem, appengine-sdk paketi isə 2356 problem aşkar etdi. Genie.libs.ops, pbcore və genie.libs.parser paketlərində də çoxlu sayda problemlər mövcuddur.

Qeyd etmək lazımdır ki, nəticələr müəyyən strukturların tətbiqi kontekstini nəzərə almayan avtomatlaşdırılmış statik analiz əsasında əldə edilmişdir. Kodu skan etmək üçün istifadə edilən quldur alət dəstinin tərtibçisi belə bir fikrə gəldi ki, yalançı pozitivlərin kifayət qədər çox olması səbəbindən hər bir məsələyə əlavə əl ilə baxılmadan skan nəticələri birbaşa zəiflik hesab edilə bilməz.

Məsələn, analizator etibarsız təsadüfi ədəd generatorlarının və hashing alqoritmlərinin, məsələn, MD5-in istifadəsini təhlükəsizlik problemi hesab edir, halbuki kodda belə alqoritmlər təhlükəsizliyə təsir etməyən məqsədlər üçün istifadə oluna bilər. Analizator həmçinin turşu, yaml.load, subprocess və qiymətləndirmə kimi təhlükəli funksiyalarda hər hansı xarici məlumatın işlənməsini problem hesab edir, lakin bu istifadə mütləq zəifliyi ehtiva etmir və əslində bu funksiyaların istifadəsi təhlükəsizlik təhlükəsi olmadan həyata keçirilə bilər. .

Tədqiqatda istifadə olunan testlər arasında:

  • Potensial təhlükəli funksiyalardan istifadə exec, mktemp, eval, mark_safe və s.
  • Fayllar üçün giriş hüquqlarının etibarsız qurulması.
  • Bütün şəbəkə interfeyslərinə şəbəkə rozetkasının qoşulması.
  • Kodda ciddi şəkildə göstərilən parol və açarların istifadəsi.
  • Əvvəlcədən təyin edilmiş müvəqqəti kataloqdan istifadə.
  • Catch-all-style istisna işləyicilərində keçid və davamdan istifadə;
  • Sazlama rejimi aktivləşdirilmiş Flask veb çərçivəsi əsasında veb proqramların işə salınması.
  • Təhlükəsiz məlumatların sıradan çıxarılması üsullarından istifadə.
  • MD2, MD4, MD5 və SHA1 hash funksiyalarından istifadə edir.
  • Təhlükəsiz DES şifrələrinin və şifrələmə rejimlərinin istifadəsi.
  • Python-un bəzi versiyalarında etibarlı olmayan HTTPSCConnection tətbiqindən istifadə.
  • Urlopen-də fayl: // sxeminin təyin edilməsi.
  • Kriptoqrafik tapşırıqları yerinə yetirərkən psevdor-təsadüfi nömrə generatorlarından istifadə.
  • Telnet protokolundan istifadə.
  • Təhlükəsiz XML analizatorlarından istifadə.

Əlavə olaraq qeyd etmək olar ki, PyPI kataloqunda 8 zərərli paket aşkarlanıb. Silinməmişdən əvvəl problemli paketlər 30 min dəfədən çox yüklənib. Paketlərdəki sadə statik analizatorlardan zərərli fəaliyyəti gizlətmək və xəbərdarlıqları keçmək üçün kod blokları Base64 istifadə edərək kodlaşdırıldı və qiymətləndirmə çağırışından istifadə edərək deşifrədən sonra icra edildi.

noblesse, genesisbot, əziyyət çəkir, noblesse2 və noblessev2 paketlərində Chrome və Edge brauzerlərində saxlanılan kredit kartı nömrələrini və parolları ələ keçirmək, həmçinin Discord tətbiqindən hesab nişanlarını ötürmək və ekran məzmununun skrinşotları daxil olmaqla sistem məlumatlarını göndərmək üçün kod var. Pytaqora və pytagora2 paketləri üçüncü tərəfin icra olunan kodunu yükləmək və icra etmək qabiliyyətini ehtiva edirdi.

Mənbə: opennet.ru

Добавить комментарий