Агентство национальной безопасности США (АНБ) обратилось к разработчикам со всего мира с просьбой избегать старых языков программирования, таких как 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 причислена к новым языкам, это довольно старый язык программирования (прим. — «Хайтек»)