메모리 안전 장치가 내포된 프로그래밍 언어에 대한 관심 높아진다

2022-12-07 14:27
  • 카카오톡
  • 네이버 블로그
  • url
드디어 C와 C++의 시대가 저무는 걸까. ‘보안’을 이유로 구글에서는 오랜 시간 프로그래밍 업계에 군림했던 이 두 언어를 러스트나 C#, 자바스크립트와 같은 신진 세력들로 교체하기 시작했다. 왜? 메모리 안전 문제 때문이다. 취약점을 유형별로 나눠 통째로 없애가겠다는 게 구글의 계획이다.

[보안뉴스 문가용 기자] 소프트웨어 산업이 각종 취약점 공격에 대한 방어력을 강화하기 시작했다. 특히 ‘메모리 안전’ 문제와 관련이 있는 유형의 취약점들인 버퍼 오버플로우와 UaF 등에 대한 대처 방법이 하나 둘 늘어나고 있다고 한다. 가장 인기 높은 방법 중 하나는 메모리 안전 언어(memory-safe languages)인 자바, C#, 러스트(Rust) 등을 적극 활용하는 것이다. 언어만 살짝 바꿨을 뿐인데 메모리 안전 취약점들이 크게 감소했다고 한다.


[이미지 = utoimage]

지난 주 구글도 최근 들어 안드로이드 OS에 새로운 코드를 추가할 때 “대부분 메모리 안전 언어로 작성된 코드를 활용했다”고 밝혔다. 그 결과 지난 3년 동안 메모리 안전 관련 취약점이 223개에서 85개로 줄었다고 한다. 구글의 소프트웨어 엔지니어인 제프리 반더 스토에프(Jeffrey Vander Stoep)는 “취약점을 유형별로 나누고, 가장 위험한 유형부터 통째로 없애는 방안을 마련 중에 있다”고 설명한다. “프로그래밍 언어를 바꿈으로써 메모리 안전 취약점들이 눈에 띄게 줄어들었고, 이제 다음 유형의 취약점들을 공략하게 될 것입니다.”

지난 수십 년 동안 C와 C++는 소프트웨어 개발에 있어 ‘디폴트 언어’나 다름이 없었다. 여러 가지 장점을 가지고 있었기 때문이다. 하지만 약점도 있었으니, 바로 C#, 고, 자바, 파이선, 루비, 러스트, 스위프트와 같은 현대 언어들에 비해 메모리 보호 기능이 부족하다는 것이었다. 그럼에도 C와 C++는 꾸준히 사용됐고 그 결과 애플리케이션의 59%에서 메모리 관련 취약점들이 발견됐다. 자바스크립트로 만들어진 애플리케이션에서 메모리 관련 취약점은 9%, 파이선에서는 10%만 나올 뿐이었다.

버퍼 오버플로우와 워머블 취약점
C와 C++를 사용하는 것만으로도 메모리 안전 문제가 내포된 애플리케이션이 높은 확률로 탄생한다는 것인데, 이처럼 오류와 취약점이 있는 소프트웨어를 만들어 출시하는 게 너무나 간단한 일이라는 것은 모든 소프트웨어 회사들의 골칫거리였다. MS와 같이 큰 회사의 경우도 2018년까지 70%의 확률로 메모리 안전 문제가 포함된 소프트웨어를 출시하곤 했었다. 소프트웨어 엔지니어 알렉스 게이노(Alex Gaynor)는 “2020년 기준 여러 생태계에 걸쳐 메모리 안전 취약점이 60~70%에 달했다”고 설명하기도 한다.

베라코드(Veracode)의 CTO인 크리스 와이소팔(Chris Wysopal)은 “메모리 안전 취약점은 익스플로잇도 쉬운 편”이라고 지적한다. “이 때문에 여러 중대한 사건의 뿌리에 이런 류의 메모리 안전 취약점들이 존재하는 걸 자주 발견할 수 있습니다. 메모리 안전 오류는 최소 고위험군에 속하는 문제로, 공격자들이 임의의 코드를 실행함으로써 애플리케이션이나 장비를 완전히 장악하게 합니다. 심지어 워머블(자동 증식이 가능한 특성) 익스플로잇을 허용하기도 합니다.”

보다 안전한 언어로 갈아타기
이런 상황에서 덜 안전한 언어를 고집한다는 건 그냥 아집일 뿐이다. 구글이 자사 개발자들에게 메모리 안전 언어로 전환하라고 촉구한 것은 너무나 당연한 일이다. 현재 구글에서 만들어지는 모든 새로운 코드 중 C와 C++로 만들어지는 건 반도 되지 않는다고 한다. 안드로이드 최신 버전인 13은 거의 대부분이 메모리 안전 코드로 작성됐다. C와 C++가 있던 자리에 러스트가 들어섰다고 구글은 설명한다. 현재 미국의 NSA조차도 메모리 안전 프로그래밍 언어의 사용을 권하고 있다.

이처럼 메모리 안전 언어로의 이동이 가시적으로 눈에 띄고 있다는 건 취약점을 줄인다는 면에서는 좋은 소식이다. 하지만 메모리 안전 언어만으로 모든 문제가 해결되는 건 아니다. 왜냐하면 모든 프로그램들마다 약점이 있고, 메모리 보호 기능의 수준도 제각각이기 때문이다. 그래서 NSA는 다양한 애플리케이션 보안 도구들을 같이 활용해 가며 개발하라고 권하고 있기도 하다.

“보안이 강화된 언어를 찾아 프로그래밍을 한다는 건 너무나 좋은 방향임이 확실합니다. 하지만 언어 자체가 소프트웨어 보안 도구는 아니지요. 우리는 보안을 위해 뭔가 변화를 꾀하고, 그 변화에 적잖은 노력이 들어갈 때 보안이 꽤나 튼튼해진다고 생각하려는 경향이 있습니다. 내가 힘들었으니 보안이 잘 되었겠지, 라고 여기는 겁니다. 사실 비논리적이죠. 내가 힘든 것과 보안이 튼튼한 건 아무런 상관이 없어요. 언어를 바꿔서 보안을 강화했다면, 그 다음의 절차를 밟아 여전히 빈 곳을 보충해야 합니다. 그래서 언어를 바꾼 데 이어 보안 도구들을 활용하라고 NSA가 권하는 것이죠.” 와이소팔의 설명이다.

3줄 요약
1. 코드하면 떠오르던 C와 C++은 메모리 보호 기능이 취약함.
2. 그래서 이 언어들로 앱 만들면 메모리와 관련된 취약점들이 자주 생김.
3. 이 때문에 최근에 메모리 안전 프로그래밍 언어들로 많이 바꿔가는 편.

[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>

헤드라인 뉴스

TOP 뉴스

이전 스크랩하기


과월호 eBook List 정기구독 신청하기

    • 씨프로

    • 인콘

    • 엔텍디바이스코리아

    • 핀텔

    • 아이비젼

    • 아이디스

    • 씨프로

    • 웹게이트

    • 엔토스정보통신

    • 하이크비전

    • 한화비전

    • ZKTeco

    • 비엔에스테크

    • 지오멕스소프트

    • 원우이엔지

    • 지인테크

    • 홍석

    • 이화트론

    • 다누시스

    • 테크스피어

    • TVT코리아

    • 슈프리마

    • 인텔리빅스

    • 시큐인포

    • 미래정보기술(주)

    • 세연테크

    • 비전정보통신

    • 트루엔

    • 경인씨엔에스

    • 한국씨텍

    • 성현시스템

    • 아이원코리아

    • 프로브디지털

    • 위트콘

    • 다후아테크놀로지코리아

    • 한결피아이에프

    • 스피어AX

    • 동양유니텍

    • 포엠아이텍

    • 넥스트림

    • 펜타시큐리티

    • 에프에스네트워크

    • 신우테크
      팬틸드 / 하우징

    • 옥타코

    • 네이즈

    • 케이제이테크

    • 셀링스시스템

    • 네티마시스템

    • 아이엔아이

    • 미래시그널

    • 엣지디엑스

    • 인빅

    • 유투에스알

    • 제네텍

    • 주식회사 에스카

    • 솔디아

    • 지에스티엔지니어링
      게이트 / 스피드게이트

    • 새눈

    • 에이앤티글로벌

    • 케비스전자

    • 한국아이티에스

    • 이엘피케이뉴

    • (주)일산정밀

    • 구네보코리아주식회사

    • 레이어스

    • 창성에이스산업

    • 엘림광통신

    • 에이앤티코리아

    • 엔에스티정보통신

    • 와이즈콘

    • 현대틸스
      팬틸트 / 카메라

    • 엔시드

    • 포커스에이아이

    • 넥스텝

    • 인더스비젼

    • 메트로게이트
      시큐리티 게이트

    • 엠스톤

    • 글로넥스

    • 유진시스템코리아

    • 카티스

    • 세환엠에스(주)

Copyright thebn Co., Ltd. All Rights Reserved.

시큐리티월드

IP NEWS

회원가입

Passwordless 설정

PC버전

닫기