Офис директора по национальной кибербезопасности (ONCD) Белого дома настоятельно рекомендует разработчикам пересмотреть выбор языков программирования для критически важного ПО, особенно в свете проблем с безопасностью управления памятью в языках C и C++. Этот шаг является частью более масштабной программы по укреплению национальной кибербезопасности, инициированной указом президента Байдена в марте 2023 года.
Уязвимости, связанные с управлением памятью, и их риски
Одна из главных проблем – это потенциальные уязвимости, связанные с памятью в программном коде. Такие уязвимости, как переполнение буфера и висячие указатели, могут возникать из-за ненадлежащих методов управления памятью. Языки C и C++ предоставляют разработчикам точный контроль над памятью, позволяя им напрямую обращаться к адресам памяти и манипулировать ими. Хотя такой уровень контроля и дает преимущества в производительности, он также возлагает на разработчика ответственность за то, чтобы операции с памятью не выходили за рамки выделенных границ.
Отсутствие автоматической проверки границ в C и C++ представляет собой серьезный риск. Если разработчик случайно или намеренно записывает данные за пределы выделенной памяти, это может привести к перезаписи других данных, повреждению системы или даже к созданию уязвимостей, которые могут быть использованы злоумышленниками.
Доклад ONCD и его рекомендации
Доклад ONCD подчеркивает серьезность проблемы, ссылаясь на данные Microsoft и Google, которые показывают, что уязвимости, связанные с памятью, составляли около 70% всех выявленных проблем безопасности в 2019 и 2020 годах. Эти данные подчеркивают необходимость стратегического изменения практики разработки ПО, особенно в контексте национальной кибербезопасности.
Помимо определения проблемы, доклад также предлагает решения. В нем рекомендуется использовать "безопасные для памяти" языки программирования, такие как Rust, Go, C#, Java, Swift, JavaScript и Ruby. Эти языки включают в себя защитные механизмы, которые предотвращают распространенные атаки, связанные с памятью, что повышает общую безопасность разрабатываемых систем.
Популярность рекомендуемых языков и более широкие последствия
Индекс TIOBE показывает, что несколько рекомендуемых языков уже широко используются и признаны в сообществе разработчиков. C# занимает пятое место, Java - четвертое, JavaScript - шестое, а Go - восьмое. Это говорит о том, что переход на эти языки может не потребовать кардинальной перестройки существующих рабочих процессов разработчиков.
Инициатива Белого дома выходит за рамки простых рекомендаций. Она очерчивает всеобъемлющий план по укреплению национальной кибербезопасности, соответствующий исполнительному указу президента Байдена, который стремится к совместным усилиям между государственным и частным секторами по разработке и внедрению безопасных программных и аппаратных решений.
Заключение: призыв к разработке безопасного ПО
Доклад ONCD подчеркивает важность выбора языков программирования с надежными возможностями управления памятью. Это не просто техническая рекомендация; это представляет собой стратегический сдвиг для организаций, разрабатывающих программное обеспечение жизненно важных систем. Переход на языки программирования с защитой памяти несет в себе потенциал значительного сокращения уязвимостей, повышения надежности систем и в конечном итоге обеспечения безопасности нашей цифровой инфраструктуры.