Офис национального директора по кибербезопасности (ONCD) Белого дома США в рамках доклада о способах снижения количества уязвимостей в проектах и возможности в будущем улучшить надёжность ПО призвал разработчиков ПО в долгосрочной перспективе отказаться от небезопасных (в рамках работы с памятью) языках программирования С и С++ и перейти на более современные решения с высокой безопасностью памяти, например, Rust, Python и Java.
Представители ONCD объяснили, что подобные уязвимости связаны с ошибками управления памятью, например доступа к ней, заполнения, распределения и освобождения. Они возникают, когда программное обеспечение обращается к памяти способами, которые не были предусмотрены или являются небезопасными, тем самым создавая угрозы безопасности. Например, хакеры могут использовать эти уязвимости для получения неавторизованного доступа к пользовательским данным или для запуска вредоносного кода на устройстве. Недавние исследования Microsoft и Google показали, что около 70% всех уязвимостей в сфере безопасности вызваны проблемами с безопасностью памяти, говорится в отчете.
В докладе ONCD отмечается, что такие уязвимости являются серьёзной проблемой для цифровой экосистемы уже более 35 лет и что решение задачи устранения целых классов программных уязвимостей крайне важно и требует срочных действий. Организация подчёркивает, что важно внедрять новые подходыдля снижения подобных рисков.
В пресс-релизе Белого дома говорится, что технологические компании могут “предотвратить целые классы уязвимостей, не допуская их в цифровую экосистему”, выбирая безопасные языки программирования.
При этом в ONCD осознают, что переход на новые языки программирования потребует времени и может занять многие годы, возможно, даже десятилетия. Однако они уверены, что разработчики, которые сделают правильный выбор в пользу безопасности, выиграют в долгосрочной перспективе, получив более защищённую среду для разработки и продвижения своих проектов.
Авторы доклада отмечают, что “самый действенный способ уменьшить количество уязвимостей безопасности памяти – это гарантировать надёжность одного из составных элементов кибербезопасности: языка программирования. Использование языков программирования, обеспечивающих безопасность памяти, может исключить большинство ошибок безопасности памяти”. В качестве примера особенно подходящего языка упоминается Rust.
Ранее Агентство национальной безопасности США также рекомендовало организациям перейти на более безопасные языки программирования, такие как C#, Go, Java, Ruby, Rust и Swift, чтобы избежать определённых типов уязвимостей, связанных с управлением памятью. По данным отчета АНБ, злоумышленники все чаще и чаще начинают использовать уязвимости, связанные с управлением памятью, так как что C и C++ не обеспечивают должный уровень безопасности при работе с ней. Согласно документу, с помощью этих брешей в защите хакерам удается с легкостью получать доступ к конфиденциальной информации, выполнять произвольный код и нарушать цепочки поставок ПО.