Попрощайтесь с C и C++ Рекомендация правительства США по использованию языков программирования с безопасной памятью

Правительство США рекомендует избегать использования C или C++ при создании программных инструментов для лучших результатов. Вот список рекомендуемых альтернатив.

“`html

NSA обновило список безопасных языков программирования

NSA list of memory-safe programming

В последнем отчете Белого дома Управления Национального директора по кибербезопасности (ONCD) сделали смелое предложение программистскому сообществу: перестать использовать C и C++ и начать использовать «языки программирования с безопасностью памяти». 🛡️💻 Этот шаг считается ключевым для обеспечения безопасности основ киберпространства и соответствует плану кибербезопасности президента Байдена.

Итак, что означает «безопасность памяти»? Это защита от недостатков и уязвимостей, связанных с доступом к памяти. Примеры таких проблем включают в себя висячие указатели и переполнение буфера. Язык Java, с его проверками ошибок времени выполнения, относится к категории языков с безопасностью памяти. С другой стороны, как C, так и C++ поддерживают неконтролируемую арифметику указателей без проверки границ, что подвергает их проблемам безопасности памяти.

Для помощи разработчикам в принятии практик безопасности памяти Агентство национальной безопасности (NSA) составило список рекомендуемых языков программирования. Вот их предложения в произвольном порядке:

  • Go
  • Rust
  • C#
  • Swift
  • Java
  • Ruby
  • Python
  • Delphi/Object Pascal
  • Ada

Эти языки имеют функции и характеристики, способствующие безопасности памяти, что делает их менее подверженными уязвимостям безопасности, вызванным проблемами памяти. Выбор одного из этих языков на первом этапе проекта может значительно улучшить безопасность получаемого программного обеспечения.

Согласно анализу 2019 года инженеров по безопасности Microsoft, практически 70% уязвимостей безопасности были вызваны проблемами безопасности памяти. Исследование Google в 2020 году по проблемам браузера Chromium привело к подобной статистике. Учитывая эти цифры, становится очевидным, почему ONCD настаивает на переходе к языкам программирования с безопасностью памяти.

🔒🏢 В отчете ONCD подчеркивается важность того, что более крупные организации и государственные структуры должны играть значительную роль в кибербезопасности. В нем утверждается, что кибербезопасность не должна быть ответственностью только малых организаций и частных лиц. В рамках этого усилия отчет определяет использование C и C++ как «небезопасных» языков программирования из-за их связи с уязвимостями безопасности памяти. Хотя отчет воздерживается от предложения конкретного языка для замены, он подчеркивает, что есть «дюжины языков программирования с безопасностью памяти, которые можно — и следует — использовать» вместо этого.

Отчет не ограничивается рекомендациями по языкам. Он также призывает к улучшению показателей безопасности программного обеспечения. Путем внедрения лучших практик измерения поставщики технологий могут предвидеть и преодолеть риски проактивно, уменьшая вероятность уязвимостей, проскальзывающих сквозь щели.

В конечном итоге отчет ONCD — это призыв к действию для всего программистского сообщества по приоритизации безопасности памяти. Будь то разработчик, работающий над критическими системами, или небольшой стартап, предпринятие шагов по внедрению языков программирования с безопасностью памяти в процесс разработки программного обеспечения является важной частью создания безопасного по дизайну программного обеспечения.


Часто задаваемые вопросы

Q: Почему C и C++ считаются «небезопасными» языками программирования? A: C и C++ позволяют неконтролируемую арифметику указателей, которая может привести к уязвимостям безопасности памяти. Эти языки не имеют встроенных механизмов защиты и проверок от распространенных проблем, связанных с памятью, таких как висячие указатели и переполнение буфера.

Q: Каковы преимущества языков программирования с безопасностью памяти? A: Языки программирования с безопасностью памяти, такие как Go, Rust и Java, обладают функциями и механизмами, предотвращающими или смягчающими уязвимости, связанные с памятью. Они предлагают встроенные проверки и ограничения для обеспечения безопасного использования памяти, уменьшая вероятность появления уязвимостей.

Q: Переход к языкам программирования с безопасностью памяти повлияет ли на существующие проекты? A: Переход на другие языки программирования для существующих проектов может быть сложным и затратным процессом. Это в значительной степени зависит от таких факторов, как размер проекта, сложность кодовой базы и экспертиза команды. Однако включение языков программирования с безопасностью памяти на ранних этапах новых проектов может значительно улучшить безопасность программного обеспечения.

Q: Существуют ли конкретные рекомендуемые языки программирования с безопасностью памяти для различных приложений? A: Выбор языка программирования зависит от конкретных требований и ограничений каждого приложения. В то время как языки типа Go и Rust хорошо подходят для программирования на уровне системы, языки типа Python и Ruby отлично справляются с веб-разработкой. Прежде всего, учитывайте потребности вашего проекта и консультируйтесь со специализированными ресурсами языков для принятия обоснованного решения.

“““html


🔍 Для дополнительных идей и информации, связанной с языками программирования, обеспечивающими безопасность памяти, и кибербезопасностью, ознакомьтесь с этими ценными ресурсами:

  1. Питон продолжает царствовать на рынке труда
  2. Главы Meta, TikTok, Snap и Discord отправляются в Конгресс, чтобы обсудить онлайн-безопасность детей
  3. Окончательный технический отчет ONCD

📚 Помните о том, чтобы быть информированным и следить за последними тенденциями и лучшими практиками в мире программирования и кибербезопасности!


Диана Ричи
Управляющий редактор в ENBLE

Диана является редактором в ENBLE с более чем 20-летним опытом в управлении и развитии контента. Ранее она была главным редактором Startup Grind и Calendar, а также редактором в медиа-компании Entrepreneur. Ее страсть к технологиям и экспертиза в этой области делают ее ценным ресурсом для отслеживания последних достижений в области компьютерных технологий и программирования.


Сталкивались ли вы с какими-либо проблемами, связанными с безопасностью памяти, в своем пути программирования? Поделитесь своими опытом и мыслями в комментариях ниже! Давайте вместе стремиться к более безопасному и надежному киберпространству! 🚀

Не забудьте поделиться этой статьей со своими коллегами-разработчиками, чтобы распространить информацию о важности языков программирования, обеспечивающих безопасность памяти. Вместе мы можем создать более безопасное цифровое будущее. 🌐💪

“`