Що таке OWASP?
Open Web Application Security Project (OWASP) – це відкрита онлайн-спільнота, яка розробляє та поширює безкоштовні загальнодоступні матеріали: статті, методології, документацію, інструменти та технології, що стосуються безпеки вебзастосунків.
Компоненти з відкритим вихідним кодом стали невіддільною частиною розробки програмного забезпечення. За даними OSSRA за 2024 рік, 96% розробників покладаються на компоненти з відкритим вихідним кодом. Дедалі ширше використання open-source компонентів вимагає від розробників більш проактивного підходу до управління безпекою відкритого вихідного коду.
Що таке OWASP Dependency-Check?
OWASP Dependency-Check – це інструмент аналізу програмних компонентів (SCA), призначений для виявлення відомих вразливостей у залежностях проєкту. Він сканує файли проєкту, зокрема файли маніфесту та пакунків, такі як pom.xml, package.json або requirements.txt, і зіставляє знайдені залежності з публічно задокументованими вразливостями з таких джерел, як Національна база даних вразливостей (NVD).
Автоматизуючи процес виявлення вразливостей на ранніх стадіях циклу розробки, Dependency-Check допомагає командам усунути ризики безпеки ще до того, як вони досягнуть стадії продакшну. Він підтримує широкий спектр мов програмування та екосистем, включаючи Java, .NET, Python, Ruby та JavaScript. Інструмент доступний у вигляді окремого CLI, плагіну Maven, плагіну Gradle, завдання Ant, плагіну Jenkins тощо, що дозволяє легко інтегрувати його в конвеєри збірки.
Завантажити OWASP Dependency-Check можна тут
Як працює OWASP Dependency-Check
OWASP Dependency-Check виконує перевірку залежностей, проаналізувавши конфігураційні файли, що входять до структури проєкту. Він витягує ідентифікаційну інформацію, таку як назви та версії бібліотек, а потім намагається зіставити ці дані з базами даних вразливостей, включаючи NVD та інші загальнодоступні джерела.
Процес зазвичай складається з таких етапів:
- Ідентифікація: Інструмент сканує артефакти проєкту, щоб створити список усіх сторонніх бібліотек і фреймворків, які використовуються.
- Аналіз: здійснюється шляхом обчислення криптографічних хешів (наприклад, SHA-1), які потім порівнюються з відомими компонентами для точнішої ідентифікації версій.
- Зіставлення вразливостей: після виявлення залежностей Dependency-Check звіряє їх з внутрішньою базою даних відомих вразливостей.
- Звітування: Результати збираються у детальні звіти, в яких вказуються вразливі компоненти, рівні серйозності та посилання на попередження або виправлення.
Основні можливості OWASP Dependency-Check
Мови програмування та інтеграції
OWASP Dependency-Check наразі підтримує п’ять різних мов програмування. Java та .NET підтримуються повністю, а додаткова експериментальна підтримка надається для Ruby, Node.js та Python.
Dependency-Check дозволяє розробникам контролювати компоненти з відкритим вихідним кодом на ранніх стадіях процесу розробки завдяки підтримці інтеграції з командним рядком. Це забезпечує безперешкодну інтеграцію з іншими інструментами, системами побудови та API, допомагаючи розробникам виявляти вразливості безпеки на якомога більш ранній стадії процесу CI/CD, не затримуючи розробку.
Інструмент OWASP також підтримує плагін Jenkins і може зупиняти процес збірки, дозволяючи переконатися, що тільки затверджений open-source код без вразливостей розгортається у продакшн.
База даних вразливостей та оновлення
Численні дослідження показали, що час на експлуатацію (time to exploit, TTE) вразливостей після повідомлення про них стрімко скорочується. Згідно з дослідженням Google 138 експлуатованих вразливостей у 2023 році, час на експлуатацію (TTE) склав лише 5 днів, порівняно з 32 днями у 2021 та 2022 роках. Це робить здатність швидко виявляти та виправляти вразливості набагато важливішою.
OWASP Dependency-Check наразі охоплює лише вразливості, взяті з NVD. Хоча це авторитетна та популярна база даних вразливостей, процес оцінки та перевірки вразливостей займає певний час. Це означає, що вразливість може деякий час існувати самостійно, перш ніж її буде додано до NVD.
Хоча інформація про вразливості у комерційному ПЗ зазвичай регулярно надходить до NVD, процес дослідження та оприлюднення вразливостей у спільнотах open-source є менш централізованим. Це означає, що деякі розкриті вразливості у коді open-source можна знайти на публічних баг-трекерах, в рекомендаціях з безпеки або на форумах, а не у NVD.
Іншим фактором є те, що, як і зазвичай для безоплатних інструментів, база даних вразливостей для OWASP Dependency-Check зберігається локально. Це вимагає від користувачів частого оновлення локальної бази даних. Це відрізняється від баз даних, що зберігаються в хмарі, які можуть оновлюватися автоматично. Це знову ж таки означає, що існує ризик пропустити вразливості, коли локальна машина не оновлюється.
Сканування вразливостей
Сканування – це процес запуску інструменту на коді користувача для виявлення будь-якого вразливого open-source компонента. Зазвичай це робиться шляхом порівняння коду користувача з відомими вразливостями відкритого вихідного коду в базі даних вразливостей.
OWASP Dependency-Check використовує різні аналізатори для створення списку записів Common Platform Enumeration (CPE). CPE – це структурована схема іменування, яка містить метод перевірки імен на відповідність системі.
Аналізатор перевіряє комбінацію groupId, artifactId і version (іноді називають GAV) у файлі об’єктної моделі проєкту Maven (файл POM.XML). Це може призвести до неправильної ідентифікації компонентів і високого рівня помилкових спрацьовувань та хибних спрацьовувань, на відміну від обчислення SHA-1 файлу, яке є набагато точнішим, оскільки кожен компонент отримує унікальний ідентифікатор.
Звітність надзвичайно важлива при управлінні вразливостями, оскільки вона надає всім командам безпеки та розробників дієві ідеї, а також надає зацікавленим сторонам необхідні їм показники. OWASP Dependency-Check здатен задовольнити такі потреби, формуючи звіти та дозволяючи їх експорт у різних форматах: XML, CSV, JSON та HTML.
OWASP Dependency-Check: плюси та мінуси
Безпека open-source залишається критично важливою для розробників, і OWASP Dependency-Check пропонує простий та ефективний спосіб перевірки залежностей у коді.
Переваги OWASP Dependency-Check
- Безоплатно для розробників: Розробникам не потрібно чекати, поки їх менеджери схвалять і придбають безоплатний інструмент OWASP. Немає потреби в тривалому процесі POC. Вони можуть просто завантажити його для себе.
- Легкий і простий у завантаженні, встановленні та запуску: Користувачам не потрібно витрачати час на тривалий процес розгортання, з’ясовуючи всі нюанси, які можуть виникнути при переході на новий інструмент розробки. Встановлення та використання Dependency-Check – це простий процес, якщо користувачі не забувають часто оновлювати свою локальну копію.
- Різноманітні варіанти звітів та експорту: Корисно для користувачів, які хочуть пильно стежити за оповіщеннями про вразливості у відкритому вихідному коді та залишатися в курсі подій. Можливість легко експортувати звіти також дозволяє командам збирати метрики та отримувати огляд своїх можливостей управління вразливостями у відкритому коді з плином часу.
Недоліки OWASP Dependency-Check
OWASP Dependency-Check є потужним інструментом, який допомагає командам розробників розпочати роботу над забезпеченням безпеки open-source компонентів. Однак він не надає всіх можливостей, які може надати інструмент аналізу програмних компонентів.
- Не дозволяє використовувати автоматичні правила або робочі процеси для усунення вразливостей. Отже, коли користувачі отримують звіт з переліком усіх вразливостей безпеки відкритого коду, вони повинні самі визначити, як їх усунути, і запланувати усунення вразливостей або виправлення вразливостей у своєму і без того щільному графіку.
- Формат звіту не налаштовується: Хоча розробники можуть використовувати OWASP Dependency-Check для створення звітів у різних форматах, вміст звіту не дуже модульний. Користувачі не можуть створювати спеціальні звіти для отримання високорівневих даних, таких як аналіз кількості сповіщень з часом або відповідно до інших специфічних параметрів.
- Немає дешбордів: Користувачі не мають ресурсу в інструменті, куди вони можуть зайти та побачити огляд стану безпеки відкритого вихідного коду, сповіщення про вразливості, часові рамки тощо. Це дані, які їм доведеться збирати та організовувати вручну.
OWASP Dependency-Check: чи працює цей інструмент?
Коротка відповідь на це питання – так. OWASP Dependency-Check є чудовим безоплатним інструментом для розробників, який надає їм деякі вихідні дані, необхідні для управління вразливостями open-source.
Однак, можливості сканування інструменту, той факт, що він зберігається локально, і кількість помилкових спрацьовувань, які дає його сканування, ускладнюють його використання організаціями, які потребують комплексного рішення для управління безпекою відкритого вихідного коду.
Як і всі безоплатні інструменти, OWASP Dependency-Check має свої переваги та обмеження. Розробники, які не використовують жодних технологій для захисту свого відкритого коду, можуть завантажити його і спробувати. Організації, які шукають більш автоматизовані засоби контролю і функції, що відповідають їхнім конкретним потребам, можуть вирішити пошукати рішення в іншому місці.







