В конце февраля 2024 года Офис национального директора по кибербезопасности (ONCD) Белого дома США в рамках доклада о способах снижения количества уязвимостей в проектах и возможности в будущем улучшить надёжность ПО призвал разработчиков ПО в долгосрочной перспективе отказаться от небезопасных (в рамках работы с памятью) языках программирования С и С++ и перейти на более современные решения с высокой безопасностью памяти, например Rust, Python и Java.
В ONCD пояснили, что подобные уязвимости связаны с ошибками управления памятью, например доступа к ней, заполнения, распределения и освобождения. Они возникают, когда ПО обращается к памяти непредусмотренными или небезопасными способами, создавая угрозу. Злоумышленники могут, например, получить несанкционированный доступ к данным пользователя или запустить на устройстве вредоносный код.
«Данный класс уязвимостей преследует цифровую экосистему уже более 35 лет. Задача устранения целых классов программных уязвимостей является срочной и сложной. В перспективе следует применять новые подходы для снижения этого риска», — говорится в докладе ONCD.
В ONCD признают, что переход на современные языки программирования не будет быстрым и может затянуться на десятилетия. Ведомство полагает, что те разработчики, которые примут правильное решение по этой ситуации, окажутся в выигрыше, так как получат более безопасную среду для работы и для продвижения своих проектов.
«Самый действенный способ уменьшить количество уязвимостей безопасности памяти — это гарантировать надёжность одного из составных элементов кибербезопасности: языка программирования. Использование языков программирования, обеспечивающих безопасность памяти, может исключить большинство ошибок безопасности памяти», — резюмируют авторы доклада. В качестве примера подходящих языков в ONCD приводится Rust.
В январе 2023 года изобретатель языка программирования C++ Бьёрн Страуструп ответил Агентству национальной безопасности (АНБ) США по поводу рекомендации ведомства отказаться от использования языков C и C++, перекладывающих управление памятью на разработчика, в пользу современных языков программирования (C#, Go, Java, Ruby, Rust и Swift), которые обеспечивают автоматическое управление памятью или выполняющие проверки безопасной работы с памятью во время компиляции кода. Страуструп призвал АНБ со своей стороны сначала серьёзно подумать о «безопасности» новых языков и только потом предлагать что-нибудь разумное по этому поводу. Учёный и разработчик считает, что упомянутые в отчёте АНБ «безопасные» языки программирования на самом деле не превосходят C++ в важных с его точки зрения применениях.
В ноябре 2022 года АНБ выпустило отчёт, в котором указало на то, что широко используемые языки программирования C и C++ дают хакерам больше возможностей для использования эксплойтов. В связи с этим АНБ рекомендует организациям переходить на безопасные языки программирования, такие как C#, Go, Java, Ruby, Rust и Swift. По мнению экспертов, это поможет предотвратить возникновение определённых типов уязвимостей, связанных с памятью.