구글, 수억 줄 C++ 코드 보안 혁신... 메모리 취약점 40% 차단

강화된 C++라이브러리로 공간 메모리 안전성 문제 해결

컴퓨팅입력 :2024/12/09 10:24

구글이 수억 줄에 달하는 C++ 코드의 보안 취약점을 해결하기 위해 표준 라이브러리의 보안을 강화했다. 

9일 뉴스택 등 외신에 따르면 구글 보안 연구팀은 C++의 공간 메모리 (Spatial Memory) 보안 강화를 위해 '강화된 C++라이브러리(hardened libc++)'를 도입했다고 밝혔다.

C++는 높은 성능과 유연성으로 모든 산업 분야에서 널리 사용되는 언어다. 하지만 메모리 관리의 어려움으로 인해 공간 메모리 안전성 문제가 자주 발생하는 단점이 지속해서 지목되고 있다.

구글 보안 연구원에서 공개한 10년 간 메모리 안전 악용 사례 비율(이미지=구글)

공간 메모리 안전성 문제는 프로그램이 허용된 메모리 공간 외 잘못된 영역을 읽거나 쓰는 오류를 말한다. 이로 인해 프로그램이 비정상적으로 동작하거나 종료될 수 있다.

사이버범죄자들은 이런 상황을 노려 메모리에 악성 데이터를 삽입하거나 민감한 데이터를 탈취하기 위해 시도한다.

구글의 보안 연구팀인 프로젝트 제로(Project Zero)에서 추적한 데이터에 따르면 지난 10년간 발생한 메모리 안전성 취약점 악용 사례의 40%가 공간 메모리 안전성과 관련된 것으로 나타났다.

또한 해당 문제는 G메일, 유튜브, 구글맵 등 대규모 서비스에서 치명적인 보안 사고로 이어질 가능성이 있어 대안 마련이 시급했다. 하지만 내부에서 사용 중인 C++ 코드가 수억 줄에 달할 정도로 규모가 커 이를 다른 언어로 대체하는 방안을 활용하기에 어려움이 있었다.

이에 구글은 기존의 C++ 코드에서 발생할 수 있는 취약점을 줄이기 위해 '강화된 C++ 라이브러리'라는 보안 기능을 도입했다. 이 기능은 자바, 파이썬, 러스트 등 현대 프로그래밍 언어에서 기본적으로 제공되는 경계 검사를 C++의 표준 라이브러리(libc++)에 추가해 잘못된 메모리 접근을 방지한다.

구글 측은 강화된 C++ 라이브러리를 1년 이상 테스트 환경에서 적용해본 결과 수백 개의 숨겨진 버그를 발견하고 수정할 수 있었다고 밝혔다.

테스트를 마친 후 정식 서비스에 도입한 결과 새로운 취약점 공격을 1천~2천건을 매년 예방하는 성과를 달성했다. 또한 프로그램 오류가 30% 감소했으며 메모리 문제로 인한 데이터 손상 및 예기치 못한 동작도 방지할 수 있었다.

또한 강화된 C++ 라이브러리로 인해 요구되는 추가 성능은 평균 0.3% 불과했으며, 대규모 서비스에서도 거의 체감되지 않는 수준의 워크로드가 증가하는 것으로 나타났다.

구글은 앞으로 더 많은 코드에 경계 검사를 도입하 러스트 등 메모리 안전 언어를 적용해 안전성을 더욱 강화한다는 방침이다

관련기사

알렉스 리버트 등 구글 보안연구팀은 "강화된 C++ 라이브러리는 최소한의 오버헤드로 C++ 코드의 안전성, 신뢰성 및 디버깅 가능성을 향상시키는 실용적이고 효과적인 방법"이라며 "C++를 사용하는 조직이라면 표준 라이브러리의 강화 모드를 기본적으로 보편적으로 활성화할 것을 권장한다"고 말했다.

이어 "이번 기능은 안전한 C++ 코드베이스를 향한 여정의 첫 단계"라며 "광범위한 C++ 커뮤니티와 적극적으로 협력함으로써 공간적 안전이 표준이 되는 미래를 만들 계획"이라고 강조했다.