Компанія WhiteSource опублікувала аналіз вразливостей для різних мов програмування. В середньому проблеми з безпекою у відкритих проектах розподілились так: 47% всіх знайдених проблем стосуються мови С, 17% — PHP, 12% — Java, 11% — JavaScript.
Частка небезпечних проблем (де CVSS перевищує 7) складає близько 20% для С, Python й PHP, 10% — для Java і Ruby, 30% — для C++ і JavaScript.
Ця статистика дуже пов'язана із поширеністю мови та обсягом напрацьованої кодової бази. Та загальні тенденції все ж можна простежити: наприклад, мова PHP cьома за популярністю в рейтингу Tiobe, але друга за кількістю вразливостей. Лідером за кількістю вразливостей стала мова C.
Найпоширенішими джерелами проблем у більшості мов були: міжсайтовий скриптинг (XSS); неправильна перевірка вхідних даних; помилки у наданні дозволів; розкриття інформації.
Кількість знайдених проблем помітно зросла у 2017–2018 роках. Це сталося через використання автоматизованих систем тестування, fuzzing-інструментів і поширення винагород за виявлення вразливостей. При цьому кількість небезпек за останні два роки зменшилась.
У 2017 помітно зросла кількість проблем у програмах, написаних мовою С, JavaScript і PHP. У 2018 кількість вразливостей у С та JavaScript впала до показників минулих років, а от проблем у Java стало більше.
Якщо визначати типові помилки для кожної мови окремо, то:
- для C вразливості зазвичай пов'язані із виходом за прийнятні межі буфера, помилками під час перевірки коректності вхідних даних і поганим управлінням ресурсами (Race Condition, подвійне звільнення пам'яті, звернення до даних після звільнення тощо). Близько 20% виявлених вразливостей в програмах на C характеризуються як небезпечні. Найбільше вразливостей у 2018 році знайдено в ядрі Linux, ImageMagic, WireShark і FFmpeg.
- PHP: міжсайтовий скриптинг, підстановка SQL-коду і проблеми з правами доступу. Близько 20% виявлених вразливостей небезпечні;
- Java: витік інформації (отримання даних без прав доступу), помилки при перевірці коректності вхідних даних і міжсайтовий скриптинг (XSS). 10% вразливостей небезпечні;
- JavaScript: застосування ненадійних криптографічних методів (неправильна перевірка сертифікатів, проблеми з випадковими числами, передача важливих даних у відкритому вигляді), неправильна перевірка файлових шляхів (наприклад, вихід за межі базового каталогу через "../ ") і міжсайтовий скриптинг (XSS). 30% виявлених вразливостей небезпечні;
- C ++: вихід за межі буфера, помилки у перевірці вхідних даних, витік інформації. 30% проблем небезпечні;
- Python: помилки під час перевірки вхідних даних, проблеми з правами доступу, міжсайтовий скриптинг (XSS). Близько 20% вразливостей небезпечні;
- Ruby: міжсайтовий скриптинг (XSS), проблеми з правами доступу, помилки під час перевірки вхідних даних. Близько 10% вразливостей небезпечні.
Ще немає коментарів