미국 국가안보국(NSA)은 전 세계 개발자들에게 피하라고 요청했습니다.
C++ 언어의 문제점은 무엇입니까?
필요한 코드에서 명령을 실행하려면시스템 리소스, 특히 메모리. 일부 오래된 프로그래밍 언어의 문제점은 개발자가 수동으로 이동할 수 있다는 것입니다. 결과적으로 메모리 관리에 대한 책임은 개발자에게 있습니다. 프로그래머의 단순한 실수는 시스템의 "고장"과 보안 문제의 출현으로 이어집니다.
이러한 자유는 특정 위험을 초래합니다.이러한 메모리 안전 오류는 단순한 오타와 잊어버린 코드 줄 또는 복잡한 메모리 구조와 예상치 못한 상호 작용으로 인해 발생할 수 있습니다.
북대서양 조약 기구에 대한 대서양 위원회의 성명서
경우에 따라 공격자는 이러한 오류를 사용하여 시스템에 액세스하거나 악성 코드를 실행할 수 있습니다.
따라서 다음과 같이 널리 사용되는 언어는C 및 C++와 마찬가지로 메모리 관리에 더 큰 자유와 유연성을 제공할 뿐만 아니라 이 문제에 있어서 프로그래머에게 "의존"합니다. NSA는 이것이 해커에게 자신의 목적을 위해 취약점을 악용할 수 있는 기회를 제공한다고 믿습니다.
IT 거인의 의견
기술회사에 따르면 점유율은C, C++ 등 오래된 언어가 전체 오류의 최대 65%를 차지합니다. 따라서 Microsoft, Google 및 기타 IT 대기업은 메모리 보안 문제로 인해 코드의 취약점을 지적합니다.
어떤 언어가 안전합니까?
Python과 같은 새로운 프로그래밍 언어,Java* 및 Rust는 자동으로 메모리를 할당합니다. 그 중 다수는 사실상 보안 버그를 제거하거나 불가능하게 만듭니다. NSA 관계자는 C#, Go, Swift를 "안전한 목록"에 추가했습니다.
C 및 C++의 '창시자'의 답변
C++ 프로그래밍 언어 Björn의 창시자Stroustrup은 메모리 관리에 대한 책임이 개발자에게 있는 레거시 프로그래밍 언어의 사용을 중단하라는 NSA의 요청에 응답했습니다.
공개된 그의 공개서한에서open-std.org에서 Stroustrup은 해당 기관의 입장에 동의하지 않음을 표명했습니다. 그는 언어가 지난 30년 동안 독립적으로 발전했음에도 불구하고 그의 대표자들이 C와 C++를 "한데 묶어" 만들었다고 말했습니다. 동시에 그는 개발자들이 "코드 보안을 근본적으로 향상시킬 수 있는 언어 변경 사항을 종종 무시한다"고 비난했습니다.
실제로 그의 의견으로는 C++는 C#, Go, Java, Ruby, Rust 및 Swift와 같은 소위 안전한 최신 언어보다 결코 열등하지 않습니다.
전문가의 의견
NSA의 경고를 얼마나 심각하게 받아들여야 하는지 알아보기 위해 Hi-Tech는 Sphere 소프트웨어 제작 플랫폼의 선도적인 사전 판매 설계자인 Andrei Naichenko와 이야기를 나눴습니다.
그는 이 금지 조치가 위험하다고 생각합니다.시장 및 코더를 과대평가해서는 안 됩니다. 전문가는 “C++로 애플리케이션 시스템을 개발하던 시대는 지났고, 대부분의 개발자가 권장 언어(C#, Go, Java, Ruby, Swift)로의 전환을 이미 완료했다”고 설명했다.
오늘날의 C++ 사용운영 체제, 게임 개발 및 게임 엔진(Unreal Engine, Unity), GPU 컴퓨팅(암호화폐, 딥 러닝), 고부하 및 고성능 알고리즘 개발 분야의 틈새 솔루션으로 제한됩니다. 개발된 코드의 양과 전문가의 수를 고려할 때 가까운 시일 내에 이러한 영역에서 다른 언어로의 전환이 일어날 가능성은 낮습니다. 시장의 나머지(주요) 부분에서는 NSA의 이 권장 사항이 아무런 위협도 되지 않습니다.
이번 결정의 타당성에 관해Andrey Naichenko는 C++ 언어 Bjarne Stroustrup의 창시자를 지원했습니다. 전문가는 “최신 버전의 표준에 포함된 C++ 언어는 안전한 메모리 작업 문제를 성공적으로 해결할 수 있는 광범위하고 성숙한 도구 세트를 제공합니다.”라고 설명했습니다.
NSA의 결정은 러시아에 어떤 영향을 미칠까요?
NSA 보고서에서 확인된 문제는 다음과 같습니다.전체적으로 초기 언어 표준에 구현된 솔루션에서 발견되었습니다. 궁극적으로 NSA의 결정은 러시아 시장을 목표로 하는 소프트웨어 개발자에게 큰 영향을 미치지 않을 것입니다.
더 읽어보기 :
과학자들은 노인의 기억을 "저장"하는 6가지 방법을 선정했습니다.
과학자들을 놀라게 한 신비한 각인 지하. 그는 1000년이 넘었다.
가짜인 줄 알았던 검, 3000년 된 청동기 유물로 밝혀져
*Java는 새로운 언어로 분류됨에도 불구하고 다소 오래된 프로그래밍 언어입니다(참고 - "하이테크").