Сховище PyPI містить потенційно небезпечний код

Дослідники з Університету Турку (Фінляндія) оголошено нещодавно результати аналізу вони зробили з пакетами в репозиторії від PyPI за використання потенційно небезпечних конструкцій, які можуть створити вразливі місця. В аналізі що було здійснено близько 197.000 749.000 пакетів і виявлено XNUMX XNUMX можливих проблем безпеки.

Іншими словами, 46% пакетів мають принаймні одну з цих проблем, серед яких найбільш поширені проблеми, пов’язані з обробкою винятків і використанням можливостей підміни коду.

Із 749 тис. виявлених проблем 442 тис (41%) відзначені як неповнолітні, 227 тис. (30%) як середньонебезпечні і 80 тис. (11%) як небезпечні.

Набір даних заснований на знімку всіх пакетів, що зберігаються в індексі пакетів Python (PyPI) ...

З точки зору типів проблем, таких як обробка винятків і різні ін'єкції коду, були найпоширенішими проблемами. У цьому сенсі виділяється модуль потоків. З огляду на загалом невеликі розміри пакетів, показники розміру програмного забезпечення погано передбачають кількість проблем, виявлених під час аналізу. 

Деякі пакети є незвичайними і містять тисячі проблем: Наприклад, у пакеті PyGGI було виявлено 2589 проблем, пов’язаних переважно з використанням конструкції «try-except-pass», а в пакеті appengine-sdk – 2356 проблем. Також є багато проблем у пакетах genie.libs.ops, pbcore та genie.libs.parser.

Слід зазначити, що результати були отримані на основі автоматизованого статичного аналізу, який не враховує контекст застосування тих чи інших конструкцій.

Запропонував розробник Bandit, який використовувався для сканування коду що через велику кількість помилкових спрацьовувань, lрезультати сканування не можна вважати вразливими місцями безпосередньо без додаткового ручного розгляду кожної проблеми.

Наприклад, аналізатор розглядає використання ненадійних генераторів випадкових чисел і алгоритмів хешування, таких як MD5, як проблему безпеки, тоді як у коді такі алгоритми можуть використовуватися для цілей, які не впливають на безпеку.

Аналізатор також враховує будь-яку зовнішню обробку даних у небезпечних функціях, таких як pickle, yaml.load, subprocess та eval це проблема, але це використання не обов'язково пов'язане з уразливістю, і, насправді, використання цих функцій може бути проблемою, реалізованою без загрози безпеці.

Серед контрольних засобів, використаних у дослідженні:

  • Використання потенційно небезпечних функцій exec, mktemp, eval, mark_safe тощо.
  • Небезпечне налаштування прав доступу до файлів.
  • Підключіть мережевий штекер до всіх мережевих інтерфейсів.
  • Використання паролів і зашифрованих ключів.
  • Використання попередньо визначеного тимчасового каталогу.
  • Використання передачі та продовження в обробниках винятків у стилі catch-all.
  • Запускайте веб-програми на основі веб-фреймворку Flask з увімкненим режимом налагодження.
  • Використання небезпечних методів для десеріалізації даних.
  • Використання хеш-функцій MD2, MD4, MD5 і SHA1.
  • Використання незахищених шифрів DES і режимів шифрування.
  • Використання незахищеної реалізації HTTPSConnection в деяких версіях Python.
  • Визначення файлу: // схема в urlopen.
  • Використовуйте генератори псевдовипадкових чисел під час виконання криптографічних завдань.
  • Використання протоколу Telnet.
  • Використання небезпечних синтаксичних аналізаторів XML.

Крім того, згадується виявлення 8 шкідливих пакетів у каталозі PyPI. Проблемні пакунки були завантажені понад 30 64 разів, перш ніж їх видалити. Щоб приховати шкідливу активність і уникнути простих статичних попереджень синтаксичного аналізатора на пакунках, ми використовували блочное кодування з кодом у форматі BaseXNUMX і поетапно проводили його виконання після декодування за допомогою виклику eval.

Код, знайдений у пакетах noblesse, genesisbot, є, suff, noblesse2 і noblessev2 для перехоплення номерів кредитних карток і паролів, що зберігаються в браузерах Chrome і Edge, а також передачі маркерів облікового запису з програми Discord і надсилання даних із системи, включаючи знімки екрана. вмісту екрана. … Пакунки pytagora та pytagora2 включали можливість завантажувати та запускати виконуваний код сторонніх розробників.

В кінці кінців якщо вам цікаво дізнатись більше про це, Ви можете перевірити деталі У наступному посиланні.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.