Які проблеми з безпекою характерні для різних мов

3 хв. читання

Компанія WhiteSource опублікувала аналіз вразливостей для різних мов програмування. В середньому проблеми з безпекою у відкритих проектах розподілились так: 47% всіх знайдених проблем стосуються мови С, 17% — PHP, 12% — Java, 11% — JavaScript.

Screenshot-8

Частка небезпечних проблем (де 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% вразливостей небезпечні.
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 6.3K
Приєднався: 7 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація