Кабинет государственного директора по кибербезопасности (ONCD) Белоснежного дома США призвал разработчиков отрешиться от использования языков программирования C и C++ в разработке критически принципиального ПО. Данный совет основывается на опасениях, связанных с безопасностью управления памятью — нюансе, играющем критичную роль в предотвращении уязвимостей, таких как переполнение буфера и висящие указатели.
Неверное управление памятью в программном коде может привести к серьёзным уязвимостям, позволяя злодеям производить кибератаки. Языки программирования, такие как Джава, благодаря своим механизмам обнаружения ошибок во время выполнения, числятся неопасными в отношении управления памятью. В отличие от их, C и C++ позволяют разработчикам делать операции с указателями и обращаться конкретно к адресам в памяти компьютера. Это содержит в себе чтение и запись данных в любом месте памяти, к которому они могут получить доступ через указатель.
Но эти языки не проводят автоматической проверки на то, выходят ли эти операции за границы выделенного для данных либо структур места в памяти. Такая проверка именуется «проверкой границ». Отсутствие таковой проверки значит, что разработчик ПО может нечаяно либо преднамеренно записать данные за границы выделенного блока памяти, что может привести к перезаписи других данных, испорченным данным либо, в худшем случае, к уязвимостям безопасности, которые злоумышленники могут применять для выполнения вредного кода либо получения контроля над системой.
Доклад ONCD подчёркивает, что около 70 % всех уязвимостей в системе безопасности, выявленных инженерами Microsoft в 2019 году и Гугл в 2020 году, были связаны точно с нарушениями безопасности памяти. Эта статистика ясно показывает необходимость переосмысления подходов к разработке ПО в контексте сегодняшней стратегии кибербезопасности США.
В отчёте не только лишь указывается на трудности с C и C++, да и предлагается ряд альтернатив — языков программирования, общепризнанных «неопасными для памяти». Посреди рекомендованных Агентством государственной безопасности (NSA) языков находятся: Rust, Идти, C#, Джава, Swift, JavaScript и Ruby. Эти языки содержат в себе механизмы, предотвращающие распространённые типы атак на память, тем повышая безопасность разрабатываемых систем.
Разбор популярности языков программирования по версии индекса TIOBE указывает, что из предложенных NSA языков C# занимает 5-ое место по популярности, Джава — четвёртое, JavaScript — шестое, а Идти — восьмое. Эти данные указывают на то, что часть рекомендуемых языков уже имеет обширное распространение и признание в проф обществе разработчиков.
Инициатива Белоснежного дома выходит за рамки обычного перечисления советов. Она содержит в себе стратегический план по укреплению кибербезопасности на государственном уровне, что отражено в исполнительном приказе президента Джо Байдена (Joe Biden) от марта 2023 года. Данный документ задаёт направление для всестороннего сотрудничества меж муниципальным сектором, технологическими компаниями и общественностью в целях разработки и внедрения неопасного ПО и аппаратных решений.
Заключение отчёта ONCD призывает к сознательному выбору языков программирования с учётом их возможности снабжать неопасное управление памятью. Это не только лишь техническое управление для разработчиков, да и стратегическое направление для организаций, занимающихся разработкой критически принципиального ПО. Переход на применение языков программирования, гарантирующих безопасность памяти, может значительно уменьшить риск появления уязвимостей, повысить надёжность и безопасность числовой инфраструктуры.