Offcanvas

개발자 / 애플리케이션

메모리 안전성 우려에... ‘C++의 아버지’ 비야네 스트롭스트룹 나섰다

2023.02.01 Paul Krill  |  InfoWorld
美 국가안보국(National Security Agency; NSA)은 해커들이 메모리 문제를 자주 악용하기 때문에 가능하다면 C/C++ 대신 메모리 안전을 보장하는 프로그래밍 언어를 사용하라고 권장했다. 

NSA가 이 유서 깊은 프로그래밍 언어를 쓰지 말라고 권고하자 C++를 개발한 덴마크의 컴퓨터 과학자 비야네 스트롭스트룹이 항변에 나섰다. 
 
ⓒGetty Images Bank

1979년 C++를 설계한 스트롭스트룹은 2022년 11월 발표된 NSA의 소프트웨어 메모리 안전 지침에 대응하여 지난 수십 년 동안 더 개선되고, 더 안전하며, 더 효율적인 C++를 구축해왔다고 강조했다. 그는 “이러한 작업은 [안전] 보장 없이 관리해야 하는 코드 기반을 중단하거나 추가 도구 체인을 도입하지 않고도 정적으로 보장된 유형-안전 및 리소스-안전 C++ 제공을 목표로 했다”라고 밝혔다

한편 NSA는 C/C++ 사용을 권장하지 않고 있다. 개발자가 코드 안전성을 확인하는 엄격한 테스트를 실시하긴 하지만 소프트웨어의 메모리 문제가 [여전히] 악용되는 취약점의 많은 부분을 차지하기 때문이다. “가능하다면 메모리 보호 기능을 거의 또는 전혀 제공하지 않는 프로그래밍 언어에서 메모리 안전 언어로 전략적 전환을 고려하라”라고 NSA는 권고했다. 

NSA에 따르면 메모리 안전 언어에는 C#, 고, 자바, 루비, 러스트, 스위프트 등이 있다. 이어 “C와 C++는 메모리 관리의 자유와 유연성을 제공하긴 하지만 개발자에 과도하게 의존한다”라고 전했다. 

하지만 스트롭스트룹은 [C++의] 안전성이 개선됐다고 말했다. 그는 “C++보다 더 ‘안전한’ 언어를 고려한다면 C/C++와 멀어지는 게 나쁘다고 생각하진 않는다. 하지만 사실은 그렇지 않다. 여기에서 ‘안전성’은 메모리 안전에 국한되며, 언어가 어떤 안전과 보안을 침해하기 위해 악용될 수 있는 수십 가지 다른 방법을 제외한다”라고 설명했다. 

그는 NSA가 ‘C++’와 더 오래된 ‘C’ 언어를 한 쌍으로 엮었다는 점도 지적했다. 스트롭스트룹은 ‘클래스(Class)를 더한 C’라고 불렸던 C++는 C 언어의 확장이라면서, “C와 C++를 하나의 범주(C/C++)로 묶어버린 탓에 [C++에서 이뤄진] 30년 이상의 발전을 무시했다. 하나의 범주처럼 굳어져 버린 C/C++를 이야기할 때 사실상 C의 문제에 초점이 맞춰진다. C++에서는 이러한 취약점의 대부분을 피할 수 있다. 개발자의 의도를 직접적으로 표현하는 효율적인 코드를 작성할 수 있어서다”라고 전했다. 

아울러 스트롭스트룹은 인포월드(InfoWorld)와의 서면 인터뷰에서 그가 ‘안전’을 어떻게 정의하는지도 공유했다. 그는 “모든 객체가 그 유형에 따라 사용되고 리소스가 누출되지 않는 유형 및 리소스 안전을 목표로 한다. C++에서 이는 일부 런타임 범위 검사, 댕글링 포인터를 통한 액세스 제거, 캐스트 및 유니언 오용 방지를 의미한다. C++는 생산성이나 효율성을 손상시키지 않고 개런티를 제공할 수 있는 컨테이너, 범위, 범위 루프 및 변형 등 높은 수준의 기능을 제공한다”라고 설명했다.

NSA가 인용한 이른바 ‘안전한 언어’와 관련해 그는 모든 언어가 정적으로 확인되지 않은 코드를 거칠 때 취약하다고 밝혔다. 게다가 모든 시스템은 하드웨어를 사용해야 하며, 효과적인 하드웨어 액세스는 거의 안전하지 않다고 덧붙였다. 스트롭스트룹은 C++를 안전하게 사용하기 위한 전략을 공유했다. 
 
• 안전하지 않은 코드가 실행되지 않았는지 확인하기 위한 정적 분석
• 산업 규모의 정적 분석을 실행할 수 있도록 코드를 단순화하는 코딩 규칙
• 단순화된 코드를 쉽게 작성하고 필요하다면 런타임 검사를 보장하는 라이브러리

이어 그는 수백만 명의 C++ 개발자와 수십억 개의 C++ 코드 라인이 있다고 언급했다. 현재 이 언어의 주요 용도는 항공우주, 의료기기, AI/ML, 그래픽, 바이오의약품, 고에너지 물리학 등이다. 

한편 NSA는 메모리 관리가 ‘메모리 안전’ 언어에서도 완전하게 안전하지 않으며, 정적 및 동적 애플리케이션 보안 테스트(SAST 및 DAST) 등의 메커니즘을 사용하여 메모리 안전성이 높지 않은 언어에서도 메모리 안전을 개선할 수 있다고 인정했다. 하지만 SAST, DAST 역시 메모리 안전성이 높지 않은 코드를 완전히 안전하게 만들 순 없다고 NSA는 덧붙였다. ciokr@idg.co.kr
 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.