Правительство США предпочло бы, чтобы разработчики перестали программировать на C или C++. В новом докладе Управление национального кибердиректора при Белом доме призвало разработчиков использовать "языки программирования, безопасные в плане памяти", к которым не относятся популярные C и C++. Этот совет — часть киберстратегии президента Байдена по обеспечению безопасности киберпространства.
Безопасность памяти относится к защите от уязвимостей, связанных с доступом к памяти. Java считается безопасным языком из-за проверок ошибок. Однако C и C++ позволяют произвольные арифметические операции с указателями и адресами памяти без проверки.
В 2019 году инженеры безопасности Microsoft сообщили, что около 70% уязвимостей в системе безопасности вызваны проблемами безопасности памяти. Google в 2020 году озвучила те же данные по ошибкам, найденным в браузере Chromium.
Эксперты определили несколько языков программирования, которым недостает свойств, связанных с безопасностью памяти, и которые в то же время широко распространены в критически важных системах, такие как C и C++. Выбор безопасных в плане памяти языков на начальном этапе, как рекомендует CISA в Дорожной карте безопасности ПО с открытым исходным кодом — один из примеров разработки ПО методом защиты по умолчанию.
Цель 19-страничного доклада — разделить ответственность за кибербезопасность не только между физическими лицами и малым бизнесом. Вместо этого ответственность лежит на более крупных организациях, технологических компаниях и, в конечном счете, на правительстве.
ONCD призывает компании и инженеров внедрить передовые методы разработки ПО и использовать безопасное в плане памяти оборудование, чтобы снизить потенциальные атаки. В самом отчете не уточняется, какие языки считаются безопасными в плане памяти. Однако в ноябре 2022 года Агентство национальной безопасности США опубликовало информационный бюллетень по кибербезопасности с перечнем языков программирования, которые оно считает отвечающими этому критерию.
Языки программирования, рекомендованные АНБ как безопасные для памяти:
-
Rust
-
Go
-
C#
-
Java
-
Swift
-
JavaScript
-
Ruby
Насколько популярны предложенные языки программирования? Согласно индексу популярности TIOBE, на первом месте Python. Из вариантов АНБ C# занимает пятое место, Java — четвертое, JavaScript — шестое, а Go — восьмое. Замыкают список Swift на 16-м месте, Rust на 18-м и Ruby на 20-м. Так что выбранные АНБ языки входят в топ-20, но лишь четыре из семи действительно популярны у разработчиков.
В докладе также содержится призыв к разработке лучших метрик оценки безопасности ПО. ONCD полагает, что более точные показатели позволят технологическим компаниям лучше планировать, прогнозировать и смягчать уязвимости до того, как они станут проблемой.