Агентство національної безпеки США (АНБ) звернулося до розробників з усього світу з проханням уникати
В чому проблема мови С++?
Для виконання інструкцій в коді потрібнісистемні ресурси, зокрема, пам'ять. Проблема деяких старих мов програмування в тому, що вони дозволяють розробникам переміщати її вручну. В результаті, відповідальність за управління пам'яттю покладена на розробника. Прості помилки програмістів призводять до «поломки» системи та виникнення проблем з безпекою.
Ця свобода призводить до певних ризиків.Такі помилки безпеки пам'яті можуть виникати через прості друкарські помилки і забутих рядків коду або через складні структури пам'яті і непередбачені взаємодії.
заява Атлантичної ради при Організації Північноатлантичного договору
У деяких випадках зловмисник може використовувати такі помилки для отримання доступу до системи або виконання шкідливого коду.
Таким чином, широко використовуються мови, такіяк 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 способів «врятувати» пам'ять людей похилого віку
Таємничий відбиток під землею здивував вчених. Йому більше 1000 років
Меч, який вважали підробкою, виявився артефактом бронзової доби і йому 3 000 років.
*Незважаючи на те, що Java зарахована до нових мов, це досить стара мова програмування (прим. — «Хайтек»)