CWE Top 25 за 2024 рік

CWE Top 25 – це список найнебезпечніших недоліків програмного забезпечення. Цьогорічний перелік створено на основі повідомлень про вразливості високого рівня серйозності в період з середини 2023 до половини 2024 року.

У цій статті розглянуто, з чого складається новий список CWE Top 25, що змінилося з минулого року, і які практичні висновки можна зробити для покращення безпеки ПЗ.

У чому різниця між CWE та CVE?

  • CWE (Common Weakness Enumeration, Загальний перелік слабких місць) – це недоліки програмного та апаратного забезпечення, які потенційно можуть призвести до вразливостей.
  • CVE (Common Vulnerabilities and Exposures, Загальні вразливості та ризики) – це відомі вразливості в конкретних продуктах.

Перелік CWE Top 25 за 2024 рік

Оцінки не дуже змінюються після першої десятки недоліків, тому нижче розглянуто саме її.

  1. Міжсайтовий скриптинг (XSS або Cross-site scripting, офіційна назва – Improper Neutralization of Input During Web Page Generation, CWE-79, оцінка: 56.92)
  2. Переповнення буфера (Out-of-bounds Write, CWE-787, оцінка: 45.20)
  3. SQL-ін’єкція (Improper Neutralization of Special Elements used in an SQL Command, CWE-89, оцінка: 35.88)
  4. Підробка міжсайтових запитів (CSRF або Cross-site request forgery, CWE-352, оцінка: 19.57)
  5. Обхід каталогу (Path Traversal, офіційна назва – Improper Limitation of a Pathname to a Restricted Directory, CWE-22, оцінка: 12.74)
  6. Читання за межами буфера (Out-of-bounds read, CWE-125, оцінка: 11.42)
  7. Ін’єкція команди операційної системи (OS Command Injection, офіційна назва – Improper Neutralization of Special Elements used in an OS Command, CWE-78, оцінка: 11.30)
  8. Повторне використання звільненої пам’яті (Use after free, CWE-416, оцінка: 10.19)
  9. Відсутність авторизації (Missing authorization, CWE-862, оцінка: 10.11)
  10. Необмежене завантаження файлів небезпечного типу (Unrestricted upload of file with dangerous type, CWE-434, оцінка: 10.03)

Вебвразливості та проблеми керування пам’яттю залишаються в центрі уваги

Хоча в нижній частині списку відбулися деякі перестановки, найбільш серйозні недоліки практично не змінилися з 2023 року. Єдиним новачком у першій десятці стала відсутність авторизації. Вона замінила неправильну перевірку вхідних даних (Improper Input Validation), що опустилася на 12-те місце.

На основі оцінок можна побачити, що перша трійка значно випереджає решту:

  • Міжсайтовий скриптинг (XSS): дає можливість зловмиснику виконувати шкідливі скрипти в браузері користувача. Існують різні його види, в тому числі: відображений (reflected), збережений (stored) та на основі об’єктної моделі документа (DOM-based).
  • Переповнення буфера: офіційна назва «Out-of-bounds Write» охоплює різноманітні недоліки безпеки, які дозволяють коду працювати з тими комірками пам’яті, що не призначені для цього.
  • SQL-ін’єкція: дозволяє виконувати команди бази даних, впроваджуючи SQL-запити в додаток через несанкціоновані вхідні дані.

Чотири з п’яти найбільш небезпечних недоліків є типовими для вебсайтів. Це підтверджує, що вебзастосунки фігурують в більшості серйозних атак і їх ланцюжків.

Як розраховують оцінки у CWE Top 25?

Повна база даних CWE (підтримується MITRE Corporation) надає класифікацію слабких місць програмного та апаратного забезпечення, які потенційно можуть спричинити вразливості (CVE), якщо стає відомо про їх експлуатацію.

Рейтинг CWE Top 25 складається шляхом аналізу звітів CVE за певний період і визначення недоліків, що призвели до цих вразливостей. Потім їм присвоюється оцінка. Вона розраховується за допомогою множення частоти виникнення вразливостей на їх середній бал CVSS (Common Vulnerability Scoring System, Загальна система оцінки вразливостей). Таким чином вище в рейтингу CWE Top 25 знаходяться ті слабкі місця, які часто призводять до серйозних наслідків. Повна методологія доступна за посиланням.

Загалом CWE утворюють складну структуру з ієрархією та перехресними зв’язками. Проте команда CWE Top 25 створила спрощений перелік зі 130 основних пунктів і працювала з цим набором даних, часто зводячи пов’язані між собою недоліки до ширшої першопричини.

На відміну від двох попередніх списків, у 2024 році рахували не ланцюжки пов’язаних CWE, а всі слабкі місця у певному ланцюжку. Це пояснює, чому неправильна перевірка вхідних даних (Improper Input Validation) зараз займає нижче місце в переліку, попри те, що цей недолік потенційно може бути присутнім у ланцюжках атак, в яких фігурує перша десятка рейтингу.

У чому різниця між OWASP Top 10 та CWE Top 25?

Обидва списки формують за допомогою аналізу CVE та CWE, але їх підхід відрізняється.

OWASP Top 10 стосується лише вебзастосунків і групує CWE у ширші категорії, на основі яких створюють рейтинг.

Натомість CWE Top 25 охоплює всі типи програмного забезпечення та містить перелік окремих недоліків, сформований на основі частоти виникнення та рівня серйозності спричинених ними вразливостей.

Основні категорії недоліків у CWE Top 25 за 2024 рік

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

  • Робота з ненадійними вхідними даними (11 CWE, 60% від загальної оцінки). Їх потенційно може контролювати зловмисник, що створює ризики для безпеки. Це стосується як тих вхідних даних, що надсилаються безпосередньо через запит, так і завантажених файлів і десеріалізації.
  • Помилки керування пам’яттю (6 CWE, 26% від загальної оцінки). Хоча це стосується лише мов програмування з прямим доступом до пам’яті (зазвичай C/C++), незахищені операції з нею є основним шляхом для віддаленого виконання коду, що надає таким недолікам і пов’язаним з ними CVE високий рівень серйозності.
  • Проблеми в управлінні доступом (8 CWE, 14% від загальної оцінки). Від неправильної автентифікації та помилок авторизації на різних рівнях, до витоку конфіденційної інформації, впровадження безпечного доступу до систем та ресурсів є надзвичайно важливим для зменшення вірогідності успішних атак та для мінімізації їх потенційних наслідків.

Використання переліку CWE Top 25 за 2024 рік на практиці

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

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

  • В розробці програмного забезпечення слід вважати всі вхідні дані потенційно ненадійними та виконувати їх валідацію, тобто перевірку. Це в тому числі стосується завантаження файлів, запитів до бази даних (для запобігання SQL-ін’єкціям) і навіть локальних ресурсів, як-от журнали сервера (для зменшення ризику атак, пов’язаних з десеріалізацією). Для виявлення вразливостей можна використовувати сканери додатків та API. Наприклад, рішення для веббезпеки Invicti (раніше Netsparker) та Acunetix.
  • Якщо компанія створює або підтримує програмне забезпечення на C/C++, варто не забувати про безпечне керування пам’яттю, а також зробити його перевірку окремим пунктом в оглядах коду, QA та тестуванні безпеки. Це особливо важливо у випадку з ПЗ для вбудованих систем та мережевих пристроїв, яке можна відносно легко атакувати, але важко підтримувати та застосовувати патчі.
  • Для всіх додатків, і особливо для API, вже на етапі дизайну слід впроваджувати детальний контроль доступу на рівні даних, функцій і об’єктів застосунків. В ідеалі, всі ресурси повинні мати визначений і попередньо протестований рівень автентифікації та авторизації для всіх можливих шляхів доступу.

Отже, можна сприймати перелік CWE Top 25 як посібник для визначення пріоритетів у навчанні розробників і тестуванні безпеки. Таким чином невеликі зусилля можуть суттєво покращити захищеність організації.

Підписатися на новини