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 бумаларында да бар.

Нәтижелердің белгілі бір құрылымдарды қолдану контекстін ескермейтін автоматтандырылған статикалық талдау негізінде алынғанын атап өткен жөн. Кодты сканерлеу үшін пайдаланылған бандиттік құралдар жинағын әзірлеуші ​​​​жалған позитивтердің жеткілікті жоғары санына байланысты сканерлеу нәтижелерін әрбір мәселені қосымша қолмен қараусыз тікелей осалдық деп санауға болмайды деген пікір білдірді.

Мысалы, анализатор сенімсіз кездейсоқ сандар генераторларын және МД5 сияқты хэштеу алгоритмдерін пайдалануды қауіпсіздік мәселесі деп санайды, ал кодта мұндай алгоритмдер қауіпсіздікке әсер етпейтін мақсаттарда қолданылуы мүмкін. Сондай-ақ, анализатор picle, yaml.load, subprocess және бағалау сияқты қауіпті функциялардағы сыртқы деректерді кез келген өңдеуді қарастырады, бірақ бұл пайдалану міндетті түрде осалдықты қамтымайды және шын мәнінде бұл функцияларды пайдалану қауіпсіздікке қатерсіз жүзеге асырылуы мүмкін. .

Зерттеуде қолданылатын сынақтардың ішінде:

  • Ықтимал қауіпті функцияларды пайдалану exec, mktemp, eval, mark_safe, т.б.
  • Файлдарға қол жеткізу құқықтарының қауіпсіз орнатылуы.
  • Желілік розетканы барлық желі интерфейстеріне қосу.
  • Кодта қатаң көрсетілген құпия сөздер мен кілттерді пайдалану.
  • Алдын ала анықталған уақытша каталогты пайдалану.
  • Барлығын ұстау стиліндегі ерекше жағдай өңдегіштерінде өту және жалғастыру пайдалану;
  • Түзету режимі қосылған Flask веб-жақтамасы негізінде веб-қосымшаларды іске қосу.
  • Қауіпті деректерді сериядан шығару әдістерін пайдалану.
  • MD2, MD4, MD5 және SHA1 хэш функцияларын пайдаланады.
  • Қауіпсіз DES шифрларын және шифрлау режимдерін пайдалану.
  • Python бағдарламасының кейбір нұсқаларында қауіпті HTTPSConnection іске асыруын пайдалану.
  • Urlopen ішінде файл: // схемасын көрсету.
  • Криптографиялық тапсырмаларды орындау кезінде жалған кездейсоқ сандар генераторларын пайдалану.
  • Telnet протоколын пайдалану.
  • Қауіпсіз XML талдаушыларын пайдалану.

Сонымен қатар, PyPI каталогында 8 зиянды пакет анықталғанын атап өтуге болады. Жоюға дейін проблемалық пакеттер 30 мыңнан астам рет жүктелді. Зиянды әрекетті жасыру және пакеттердегі қарапайым статикалық анализаторлардан ескертулерді айналып өту үшін код блоктары Base64 көмегімен кодталды және бағалау шақыруын пайдаланып декодтаудан кейін орындалды.

noblesse, genesisbot, noblesse2 және noblessev2 пакеттерінде Chrome және Edge браузерлерінде сақталған несие картасы нөмірлері мен құпия сөздерді ұстауға, сондай-ақ Discord қолданбасынан есептік жазба таңбалауыштарын тасымалдауға және жүйе деректерін, соның ішінде экран мазмұнының скриншоттарын жіберуге арналған код бар. pytagora және pytagora2 пакеттері үшінші тараптың орындалатын кодын жүктеу және орындау мүмкіндігін қамтиды.

Ақпарат көзі: opennet.ru

пікір қалдыру