Rust срещу C++: Битката за бъдещето на сигурното програмиране

Най-четени

Емил Василев
Емил Василев
Емил Василев редовно превежда сложни научни теми на достъпен език — от въпроси като „Какво е имало преди Големия взрив?" до практическото приложение на биотехнологиите в лечението на болести. Тази комбинация от технологична и научна журналистика го прави един от най-разностранните автори в екипа на Kaldata.

CISA публикува проучване, в което анализира 172 ключови проекта с отворен код за уязвимост към грешки в паметта.

Агенцията за киберсигурност и инфраструктурна сигурност (CISA) е агенцията, която отговаря за защитата на критичната инфраструктура на САЩ от киберзаплахи.

Езиците за програмиране, които са безопасни за паметта са проектирани така, че да предотвратяват често срещани грешки, свързани с паметта, като препълване на буфера, използване след освобождаване (UAF) и други видове повреждане на паметта. Такива езици управляват паметта автоматично, вместо да разчитат на програмиста да прилага механизми за безопасното ѝ разпределяне и освобождаване.

Съвременен пример за такава система е проверката за заемане в Rust, която елиминира Data Race. Други езици, като Golang, Java, C# и Python управляват паметта чрез Garbage Collection, като автоматично освобождават освободената памет, за да предотвратят нейното използване.

Езиците, които не са безопасни за паметта не предоставят вградени механизми за управлението на паметта, като прехвърлят тази отговорност върху разработчика и увеличават вероятността от грешки и уязвимости. Примери за такива езици са C, C++, Objective-C, Assembly, Cython и D.

В доклада на CISA е представено проучване на 172 широко използвани проекта с отворен код, повече от половината от които съдържат опасен код за паметта. Основните изводи от доклада са следните:

  • 52% от критичните проекти с отворен код съдържат код, написан на езици, които не са безопасни за паметтa;
  • 55% от общия брой редове код (LoC) в тези проекти са написани на езици, които не са безопасни за паметтa;
  • Най-големите проекти са непропорционално много написани на езици, които не са безопасни за паметтa;
  • В 10-те най-големи проекта по общ брой редове код делът на опасния код, свързан с паметтa във всеки от тях е над 26 %;
  • Медианата на дела на кода, който не е безопасен за паметтa в големите проекти е 62,5 %, а в 4 проекта той надхвърля 94 %;
  • Дори проектите, написани на езици, които са безопасни за паметта често зависят от компоненти, написани на езици, които са опасни за паметта.

Някои от изследваните проекти включват Linux (95% дял на несигурния код), Tor (93%), Chromium (51%), MySQL Server (84%), glibc (85%), Redis (85%), SystemD (65%) и Electron (47%).

Rust срещу C++: Битката за бъдещето на сигурното програмиране
Обобщение на констатациите

CISA отбелязва, че разработчиците на софтуер са изправени пред много предизвикателства, които често ги принуждават да използват езици, незащитени откъм паметтa, като например ограниченията на ресурсите и изискванията за производителност. Това важи особено, когато се реализират функции на ниско ниво, като например мрежи, криптография и функции на операционната система.

В доклада се обяснява, че много критични за мисията проекти са частично написани на езици, които не осигуряват сигурност на паметта, а ограниченият анализ на зависимостите показва, че проектите наследяват код, написан на езици, които не осигуряват сигурност на паметта чрез зависимости.

CISA също така подчертава проблема с деактивирането от страна на разработчиците на функциите за безопасност на паметта, по погрешка или умишлено, за да се отговори на определени изисквания, което създава рискове дори при използването на теоретично по-безопасни компоненти.

CISA препоръчва на разработчиците:

  • Да пишат нов код на езици, които са безопасни за паметта, като Rust, Java и Go;
  • Да „превеждат“ съществуващи проекти, особено критични компоненти на тези езици;
  • Да следват практики за безопасно програмиране;
  • Внимателно да управляват и тестват зависимостите;
  • Да извършват непрекъснато тестване, включително статични и динамични анализи;
  • Да провеждат поетапно идентифициране и коригиране на проблеми, свързани с безопасността на паметтa.

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

5 Коментара
стари
нови оценка

Нови ревюта

Подобни новини