+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

WhiteSource провела дослідження вразливостей у семи найпоширеніших мовах програмування

WhiteSource провела дослідження вразливостей у семи найпоширеніших мовах програмування

Огляд WhiteSource показав, які з мов програмування мають найбільші дірки в безпеці. Переможець антирейтингу — Сі.

Технології загалом нашпиговані помилками безпеки. На низькому рівні це помилки у залозі. Так це було з уразливістю Intel та помилками Spectre. Трохи вище – дірки у безпеці мов програмування. І їх ну дуже багато!

Нещодавно Open-Source компанія WhiteSource, яка займається питаннями безпеки, провела дослідження вразливостей у семи найпоширеніших мовах програмування за останні десять років. Для виявлення помилок компанія використовувала базу даних мовної безпеки. Вона містить уразливості з відкритим вихідним кодом з кількох джерел, таких як Національна База даних Уразливостей (NVD), інструкції з безпеки, трекери GitHub`a та проектів з відкритим вихідним кодом.

Компанія виділила такі мови: C, Java, JavaScript, Python, Ruby, PHP та C++. І це не дивно. Як і те, яка мова має найбільше помилок безпеки. З великим відривом це Сі. Понад 50% виявлених уразливостей були в ньому.

Як нещодавно помітив інженер з безпеки ядра Linux у Google: «Cі - це покращений асемблер. Майже машинний код. Крім того, «Cі несе багаж, невизначену поведінку та інші слабкі сторони, що ведуть до прогалин у безпеці та вразливості інфраструктури.»

Однак, у WhiteSource стверджують, що «не можна говорити, що Сі менше безпечніший, ніж інші мови. Велика кількість уразливостей у відкритому вихідному коді Сі може пояснюватися рядом факторів. Для На початку, Сі використовувався довше, ніж інші мови, які ми досліджували. Він має найбільший обсяг написаного коду. Це також одна з мов, яка стоїть за такими важливими інфраструктурами як OpenSSL та ядро ​​Linux. Така комбінація об'єму та центрального положення пояснює велику кількість відомих уразливостей в open-source.»

У WhiteSource вловили суть. Але, незважаючи на десятиліття програмування та боротьби з Сі, у цій мові дійсно є способи надто легко зробити жахливі помилки безпеки. Наприклад, у Сі є велика кількість прикладів невизначеної поведінки, що відриває можливості для всіх видів неприємностей. C++ при цьому «прославився» вразливістю найвищого ступеня небезпеки за останні п'ять років. Помилки буфера, які тривалий час терзали Сі, найчастіше виявляються й у C++.

При цьому JavaScript, можливо, найпопулярніша мова. І єдиний, який показав «безперервне збільшення кількості вразливостей за останні 10 років». WhiteSource підкреслює, що перш ніж насміхатися над JavaScript, слід врахувати, що ці результати оманливі. Більшість із Загального Переліку Вразливостей (Common Weakness Enumeration) у JavaScript складають виходи за межі призначеного каталогу та дірки у криптозахисті пакетів JavaScript, які ледве використовуються та підтримуються.

Чому тоді ці та інші мовні проблеми на увазі? Нові автоматизовані програми, такі як Source Code Analysis Tools, виявляють уразливості, які в іншому випадку переглянули б. Майже всі мови роблять свій внесок у Загальний Перелік Вразливостей. Дві помилки з переліку лідирували і були представлені в 70% випадків: Міжсайтовий скриптинг (XSS), також відомий як CWE-79 і Недостатня перевірка вхідних даних (CWE-20).

Інші помилки, що часто зустрічаються: Витік / розкриття інформації (CWE-200), Вихід за межі призначеного каталогу (CWE-22) та CWE-264 — Дозволи, привілеї та засоби керування доступом. Останнє з недавніх пір витісняється своїм більш конкретним і близьким родичем — Неправильним контролем доступу (CWE-284). Але чи справді Сі найгірший, а Python найкращий? У WhiteSource вважають, що це занадто простий висновок: «Хоча гра «Моя мова програмування безпечніша, ніж твоя» — це безперечно веселий спосіб провести час … відповідь очевидно не допоможе вам створити більш інноваційний або захищений софт.»
< br />І навпаки, вам слід проводити більше часу «залишаючись на вістрі знань уразливостей з відкритим вихідним кодом, розуміючи сильні та слабкі сторони тієї мови програмування, яку використовуєте ви і ваша команда.»

Зрештою безпека зводиться не до мов програмування, а до того, як ви їх використовуєте.

Інші новини