У проєктах з відкритим кодом більшість вразливостей пов'язано з непрямими залежностями — а не з компонентами, завантаженими безпосередньо в проєкт.
До такого висновку дійшли дослідники Snyk, які проаналізували стан безпеки у галузі Open Source у 2020 році. Вони розглядали проблеми безпеки в екосистемах JavaScript (npm), Ruby (RubyGems), Java (MavenCentral), PHP (Packagist) і Python (PyPI). Виявилось, що у непрямих залежностях вразливостей втричі більше, ніж у прямих.
86% помилок безпеки у JavaScript, 81% — у Ruby і 74% помилок у Java стосувалися бібліотек, від яких залежали основні компоненти проєкту. Водночас у PHP і Python більшість проблем були у прямих залежностях (тобто в основних компонентах). Імовірно, це пов'язано з тим, що для Java і Node.js взагалі властиво формувати залежності — більше, ніж для інших екосистем.
Один із наших улюблених прикладів — це Java-застосунок на 80 рядків коду, який має 7 залежностей. Та пройдіться усім деревом — і побачите 59 підзалежностей. Раптово 80 рядків коду перетворюються на 740 000.
Також дослідники виявили, що більшість нових вразливостей, знайдених у 2019 році, були помилками міжсайтового скриптингу (cross-site scripting, XSS). Однак вони не вплинули на значну кількість реальних проєктів.
Натомість кількадесят помилок прототипного забруднення (prototype pollution) мали найбільший вплив і зачепили 115 000 проєктів з відкритим кодом (та, ймовірно, не лише їх). Найбільш помітними були помилки у jQuery і LoDash, адже ці платформи досить популярні серед JS-розробників.
Другий найпоширеніший вид вразливостей — зловмисні пакети. До них належать і спеціально створені шкідливі проєкти з відкритим кодом, і бібліотеки, які зламали та додали в них шкідливий код.
Ще немає коментарів