美 NSA·CISA "메모리 오류, 국가안보 위협"
미국 국가안보국(NSA)과 사이버보안·인프라보안국(CISA)이 공동으로 소프트웨어(SW) 개발자들에게 '메모리 안전 언어(MSL)'의 사용을 적극 권장하고 나섰다. NSA와 CISA는 메모리 오류를 근본적으로 차단하기 위한 방안으로 메모리 안전 프로그래밍 언어 채택을 촉구하는 지침을 30일 발표했다. 이들은 "메모리 오류는 단순한 버그를 넘어 국가안보와 주요 기반 인프라를 위협할 수 있는 심각한 문제"라며 메모리 안전 언어가 이를 구조적으로 해결할 수 있는 해법이라고 강조했다. 두 기관은 대표적인 사례로 '하트블리드(Heartbleed)'와 '배드알록(BadAlloc)' 보안 사고를 언급하며 메모리 오류가 얼마나 심각한 결과를 초래할 수 있는지를 경고했다. 하트블리드는 2014년 전 세계 80만 개 이상의 웹사이트에서 발견된 보안 결함으로 병원 환자 기록을 포함한 민감한 개인정보가 대규모로 유출됐다. 배드알록은 차량, 산업 제어 시스템, 임베디드 기기를 포함해 1억9천500만 대 이상의 시스템에 영향을 미친 대규모 메모리 취약점 기반 사고였다. 이들 사례의 공통점은 C, C++와 같은 전통적인 프로그래밍 언어에서 메모리를 수동으로 할당하고 해제하는 과정에서 발생한 오류에서 비롯됐다는 것이다. 이런 오류는 공격자가 시스템을 장악하거나 민감 정보를 탈취하는 데 악용될 수 있다. NSA와 CISA가 권장하는 MSL은 이러한 오류를 애초에 차단하는 기능을 언어 자체에 내장하고 있다. 대표적으로 러스트(Rust), 고(GO), 자바(Java), C#, 파이썬(Python), 스위프트(Swift) 등이 있다. 이들은 버퍼 오버플로우, 초기화되지 않은 메모리 접근 등의 취약점을 언어 차원에서 예방할 수 있도록 설계돼 있다. 러스트는 '소유권(Ownership)' 개념을 기반으로 메모리를 안전하게 관리하고 자바, 고는 '가비지 컬렉션(Garbage Collection)' 기능으로 불필요한 메모리를 자동으로 회수한다. NSA는 이런 메커니즘이 개발자 실수로 인한 보안 사고를 줄이는 동시에 시스템 안정성과 개발 생산성 향상에도 효과적이라고 분석했다. 다만 보고서는 기존 시스템 전체를 MSL로 전면 재작성하는 방식은 현실적으로 어렵다며 단계적이고 전략적인 도입을 권장했다. 신규로 개발되는 소프트웨어에는 MSL을 우선 적용하고 기존 시스템은 네트워크 서비스, 파일 파서, 암호화 처리처럼 보안 위협에 노출되기 쉬운 고위험 구성요소부터 점진적으로 전환하는 방식이다. 언어를 선택할 때는 성능, 개발자 숙련도, 기존 코드와의 호환성 등도 고려해야 한다. 이 같은 전략은 실제 사례에서도 효과가 입증됐다. 구글 안드로이드 팀은 2019년부터 러스트와 자바를 신규 코드에 적용하기 시작했고 2024년까지 전체 보안 취약점 중 메모리 관련 비중을 76%에서 24%로 낮추는 성과를 냈다. 보고서는 "전체 코드를 재작성하지 않고도, 신규 개발에 MSL을 적용하는 전략만으로도 실질적인 보안 향상을 이끌어낼 수 있었다"고 설명했다. 더불어 MSL 도입을 가속화하려면 개발자 생태계 전반의 변화가 필요하다고 강조했다. 현재 컴퓨터공학 교육 과정에는 자바나 파이썬 등 가비지 컬렉션 기반 언어 수업은 널리 포함돼 있지만 러스트처럼 메모리 안전성과 성능을 동시에 지닌 언어 교육은 아직 부족하다는 지적이다. 이에 따라 미국 DARPA는 기존 C 코드를 러스트로 자동 변환하는 '트랙터(TRACTOR)' 프로젝트, 메모리 안전 파서를 생성하는 'V-스펠(V-SPELLS)', 안전한 문서 처리용 '세이프독스(SafeDocs)' 같은 연구를 진행하고 있다. 기업들도 MSL 역량을 채용 조건에 포함시키는 방식으로 도입을 유도하고 있다. 아울러 NSA와 CISA는 C, C++ 같은 기존 프로그래밍 언어가 여전히 중요한 역할을 하는 분야도 분명히 존재한다고 인정했다. 초고속 처리가 필요하거나, 하드웨어를 정밀하게 제어해야 하는 시스템에서는 여전히 C, C++이 불가피하게 사용된다는 것이다. 이 경우에도 보다 안전하게 기존 언어를 활용할 수 있는 현실적인 보완책을 병행해야 한다고 제언했다. 예를 들어 C++에서는 스마트 포인터(smart pointer)를 통해 메모리를 자동으로 관리할 수 있고, 정적 분석이나 동적 분석 도구를 사용해 코드 내 취약점을 사전에 탐지할 수 있다. 또 컴파일 시 보안 강화를 위한 옵션을 적용하면 치명적인 오류나 시스템 침해 가능성을 줄이는 데 도움이 된다. 보고서는 이러한 방법들을 적절히 활용하면 기존 언어로도 일정 수준의 메모리 안전성을 확보할 수 있다고 평가하면서도, 장기적으로는 가능한 범위 내에서 MSL 도입을 점차 확대해 나가는 것이 바람직하다고 강조했다. 또 기존 언어와 새로운 언어의 현실적인 공존과 점진적인 전환을 병행하는 전략이 필요하다는 설명이다. NSA와 CISA 측은 "메모리 안전 언어의 도입은 미래의 사이버 재난을 막는 가장 구조적인 대응책"이라며 "지금 투자하지 않으면 나중에 사고 수습과 긴급 패치에 훨씬 더 많은 비용을 치르게 될 것"이라고 경고했다.