Кейсы 3 февраля 2023

Эксперт оценил совет АНБ запретить С и С++: как это повлияет на Россию

Далее

Агентство национальной безопасности США призывает разработчиков избегать языков программирования C и C++. Его основатель призвал власти одуматься. «Хайтек» разобрался в ситуации.

Агентство национальной безопасности США (АНБ) обратилось к разработчикам со всего мира с просьбой избегать старых языков программирования, таких как C и C++. Считается, что они более подвержены хакерским атакам при переходе на новые, безопасные для памяти языки.

В чем проблема языка С++?

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

Эта свобода приводит к определенным рискам. Такие ошибки безопасности памяти могут возникать из-за простых опечаток и забытых строк кода или из-за сложных структур памяти и непредвиденных взаимодействий.

заявление Атлантического совета при Организации Североатлантического договора

В некоторых случаях злоумышленник может использовать такие ошибки для получения доступа к системе или выполнения вредоносного кода.

Таким образом, широко используемые языки, такие как C и C++, не только обеспечивают большую свободу и гибкость в управлении памятью, но и «полагаются» на программиста в этом вопросе. В АНБ считают, что таким образом у хакеров появляется возможность использовать уязвимости в своих целях.

Мнение ИТ-гигантов

По оценкам технологических компаний, на долю таких старых языков, как C и C++, приходится до 65% всех ошибок. Так, Microsoft, Google и другие ИТ-гиганты отмечают уязвимость в кодах из-за проблем с безопасностью памяти.

Какие языки безопасны?

Новые языки программирования, такие как Python, Java* и Rust, выделяют память автоматически. Многие из них либо практически устраняют ошибки, связанные с безопасностью, либо делают их невозможными. Сотрудники АНБ добавили к «безопасному списку» C#, Go и Swift.

Ответ «отца-основателя» С и C++

Создатель языка программирования C++ Бьерн Страуструп отреагировал на призыв АНБ отказаться от использования языков старых программирования, в которых ответственность за управление памятью возложена на разработчика.

В своем открытом письме, опубликованном на open-std.org, Страуструп выразил несогласие с позицией агентства. Он заявил, что его представители «смешали в одну кучу» C и C++, несмотря на то, что языки развивались независимо на протяжении последних 30 лет. При этом, он обвинил разработчиков в том, что они «нередко игнорируют изменения в языке, которые позволяют кардинально повысить безопасность кода».

В действительности же, по его мнению, C++ ни в чем не уступает современным так называемым безопасным языкам вроде C#, Go, Java, Ruby, Rust и Swift.

Мнение эксперта

Чтобы разобраться, насколько серьезно стоит отнестись к предупреждению АНБ, «Хайтек» пообщался с Андреем Найченко, ведущим пресейл-архитектором Платформы производства ПО «Сфера».

Он считает, что опасность данного запрета для рынка и кодеров не стоит переоценивать. «Времена, когда прикладные системы разрабатываюсь на С++, остались в прошлом, и переход на рекомендованные языки (C#, Go, Java, Ruby и Swift) уже выполнили большинство разработчиков», — объясняет эксперт.

На сегодняшний применение С++ ограничивается нишевыми решениями в области операционных систем, разработки игр и игровых движков (Unreal Engine, Unity), GPU-вычислений (cryptocurrency, deep learning), разработки высоконагруженных и высокопроизводительных алгоритмов. Учитывая объемы разработанного кода и количество специалистов, переход на другие языки в этих областях вряд ли произойдет в ближайшее время. Для остальной (основной) части рынка данная рекомендация со стороны АНБ ничем не грозит.

В вопросе обоснованности данного решения Андрей Найченко поддержал создателя языка С++ Бьерна Страуструпа. «Язык С++ в современных изданиях стандарта предоставляет широкий и зрелый набор инструментов, которые позволяют успешно решать проблемы безопасной работы с памятью», — объяснил эксперт.

Как решение АНБ коснется России?

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

Читать далее:

Ученые назвали топ-6 способов «спасти» память пожилых людей

Таинственный отпечаток под землей удивил ученых. Ему больше 1 000 лет

Меч, который считали подделкой, оказался артефактом бронзового века и ему 3 000 лет

*Несмотря на то, что Java причислена к новым языкам, это довольно старый язык программирования (прим. — «Хайтек»)