Создатель языка C++ защитил его от нападок со стороны АНБ США


Создатель языка C++ Бьёрн Страуструп защитил почтенный язык программирования после того, как Агентство национальной безопасности США (АНБ) рекомендовало не использовать его. АНБ рекомендовало организациям вместо C++ использовать языки, безопасные по работе с памятью.
Поводом для защиты явился распространенный в ноябре 2022 г. бюллетень агентства в котором обсуждалось безопасное использование памяти со стороны программного обеспечения.
Страуструп, который разработал C++ в 1979 году, подчеркнул многолетние усилия по созданию лучшего, более безопасного и эффективного C++. Он, в частности, сказал, что “работа над основными руководящими принципами C++ направлена именно на предоставление гарантированно безопасных типов и ресурсов языка, для нуждающихся в этом людей, без нарушения кодовых баз, которые могут обходиться без таких надежных гарантий, или введения дополнительных цепочек инструментов”, гарантирующих такую безопасность.
Бюллетень АНБ рекомендует не использовать C/C++ по тем причинам, что, несмотря на часто проводимое программистами тщательное тестирование для обеспечения безопасности кода, проблемы с памятью в программном обеспечении по-прежнему составляют значительную часть эксплуатируемых уязвимостей. АНБ рекомендует организациям рассмотреть возможность стратегического перехода от языков программирования, которые практически не обеспечивают защиту памяти, таких как C/C ++, к языку, защищающему память, когда это возможно”, – говорится в сообщении агентства.
Агентство сослалось на безопасные для памяти языки, такие как C#, Go, Java, Ruby, Rust и Swift. АНБ заявило, что обычно используемые языки, такие как C и C++, обеспечивают свободу и гибкость в управлении памятью, в то же время, сильно полагаются на программиста при выполнении проверок ссылок на память.
Но Страуструп упомянул улучшения безопасности в последних стандартах языка. “Теперь, если бы я считал, что любой из этих “безопасных” языков превосходит C++ по диапазону применений, которые меня интересуют, я бы не считал исчезновение C/C++ плохим, но это не так. Кроме того, как написано, “безопасный” язык ограничивается только безопасностью по памяти, но не учитывается порядка дюжины других способов, которыми язык может (и будет) использоваться для нарушения какой-либо формы безопасности или защиты”.
Он также посетовал на меморандум АНБ, в котором C++ сочетается со старым языком C. C++, первоначально называвшийся “C с классами”, являлся расширением C. “Поэтому часто он объединял C и C++ в одну категорию C/C ++, игнорируя при этом 30 с лишним лет прогресса”. В электронном письме Страуструп добавил: “Да, слишком много людей говорят о мифическом языке C/C++, а затем часто сосредотачиваются на слабых сторонах части C. Многих из этих недостатков можно избежать в C++; как правило, путем написания более эффективного кода, который наиболее четко выражает намерения программиста”.
Страуструп в электронном письме также поделился своим видением безопасности: она стремится к безопасности типов и ресурсов, при которой каждый объект используется в соответствии с его типом, и ни один ресурс не показывает утечек. Для C++ это подразумевает некоторую проверку диапазона времени выполнения, устранение доступа через висячие указатели и предотвращение неправильного использования приведений и объединений. C++ предлагает средства высокого уровня, такие как контейнеры, span, циклы range-for и варианты, которые могут обеспечить гарантии без ущерба для производительности или эффективности.
Что касается так называемых безопасных языков, на которые ссылается АНБ, Страуструп сказал, что все языки уязвимы из-за кода, который не проверяется статически. Кроме того, каждая система должна использовать аппаратное обеспечение, а эффективный доступ к оборудованию редко бывает безопасным, сказал он.
Страуструп изложил свою стратегию безопасного использования C++:
– Статический анализ, чтобы убедиться, что не выполняется небезопасный код.
– Правила кодирования для упрощения кода, чтобы сделать возможным статический анализ промышленного масштаба.
– Библиотеки, позволяющие сделать такой упрощенный код достаточно простым для написания и обеспечить проверки во время выполнения, где это необходимо.
Страуструп сказал, что существуют миллионы программистов на C++ и миллиарды строк кода на C++. В настоящее время язык C++ используется в аэрокосмической отрасли, медицинском приборостроении, AI/ML, графике, биомедицине, физике высоких энергий и других областях.
АНБ признало, что управление памятью не совсем безопасно даже на “безопасном для памяти” языке и что такие механизмы, как статическое и динамическое тестирование безопасности приложений, могут использоваться для повышения безопасности используемой памяти, но и они не могут сделать код полностью безопасным, заявило АНБ.
Источник: https://www.infoworld.com/article/3686517/c-plus-plus-creator-bjarne-stroustrup-defends-its-safety.html

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Обсуждение закрыто.