Методите за безопасна работа с паметта позволиха значително да се намали броят на уязвимостите в Android

Компанията Google направи обобщение на инициативата за прилагане на безопасни методи за разработка в Android (Safe Coding), като например използването на програмни езици, осигуряващи безопасна работа с паметта, прилагането на статични анализатори и проектирането на API с акцент върху сигурността. Промените позволиха да се намали делът на уязвимостите, свързани с паметта, в Android от 76% през 2019 година до 24% през 2024 година, което е значително по-ниско от средното значение в индустрията – 70%.

Инженерите на Google също направиха извод, че основният източник на проблеми с безопасността е новият код, затова вниманието трябва да се съсредоточи върху модернизацията на методите за разработка на нов код. Вече съществуващият код с времето става по-тестуван и безопасен (наблюдава се експоненциална зависимост на безопасността от времето), което прави инвестициите в проекти за презаписване на съществуващ код по-малко изгодни. Например, код на 5 години има в средно 3.4 пъти по-ниска плътност на уязвимостите в сравнение с новия код. За проектите Android и Chromium, благодарение на прилагането на безопасни методи за работа с паметта, разликата достига 7.4 пъти.

Методите за безопасна работа с паметта позволиха значително да се намали броят на уязвимостите в Android

Следователно, ако се предотврати появата на грешки при работа с паметта в новия код, с времето в стария код подобни грешки ще бъдат откривани все по-рядко. В общи линии, Google препоръчва да не се презаписва стария код, а да се съсредоточи върху написването на нов код на езици, безопасно работещи с паметта, и осигуряване на преносимост между новия и стария код.

В допълнение към намаляването на броя на уязвимостите, използването на безопасни методи за програмиране повишава производителността на разработката, позволява постигане на по-високо качество на кода и оказва положително влияние върху производителността. Например, презаписването на кода за генериране на QR-кодове в Chromium на езика Rust позволи да се постигне увеличение на производителността с 95% благодарение на премахването на разходите, свързани с необходимостта от използване на допълнителна sandbox-изолация.

Скоростта и качеството на разработката се увеличават чрез опростяване на тестването и преместване на откритията на грешки в ранните етапи на разработката, в които грешките стават видими още преди разработчикът да започне проверката на кода. Като пример се посочват показателите за откат на промените - за кода на Rust броят на откатите в резултат на откритите неочаквани грешки е два пъти по-нисък, отколкото за кода на C++.

В общи линии, прилагането на безопасни методи на програмиране се представя като най-ефективната в момента парадигма на разработка, заменяща предишните три подхода:

  • Коригиране на уязвимости след тяхното откритие. Скъпо е и изисква често пускане на актуализации и бързото им доставяне до потребителите.
  • Предпазна защита, фокусирана върху прилагането на техники, които затрудняват експлоатацията на уязвимости. Цената на подобна защита беше намаляване на производителността и постоянна игра на котка и мишка с атакуващите.
  • Ранно откриване на уязвимости чрез използване на fuzzing тестове и инструменти, подобни на AddressSanitizer и MemorySanitizer. Методът само отстраняваше симптомите, а не причината за болестта, и изискваше постоянна работа.

Методите за безопасна работа с паметта позволиха значително да се намали броят на уязвимостите в Android
Методите за безопасна работа с паметта позволиха значително да се намали броят на уязвимостите в Android


Източник: opennet.ru
Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster