메모리 안전 언어로 떠오르는 러스트의 라이브러리에서 위험한 오류 발견돼

2024-04-14 23:31
  • 카카오톡
  • 네이버 블로그
  • url
아직 대세 언어의 단계로까지 오르진 못했지만 구글과 MS 등 유명 기업들이 주목하기 시작한 언어 러스트에서 꽤나 심각한 문제가 발견됐다. 러스트 개발자들이라면 점검해야 할 일이다.

[보안뉴스 = 로버트 레모스 IT 칼럼니스트] 러스트 프로젝트(Rust Project)의 표준 라이브러리가 업데이트 됐다. 윈도 시스템에서 패치 파일을 실행시키는 데 사용되는 기능 하나에서 취약점을 발견했기 때문이다. 이 취약점을 익스플로잇 하는 데 성공하면 임의의 코드를 주입할 수 있게 된다고 한다.


[이미지 = gettyimagesbank]

러스트는 최근 각광 받고 있는 프로그래밍 언어다. 프로그래밍에 사용되는 명령과 기능들을 목적에 맞게 묶어두고 있는데, 이를 표준 라이브러리라고 부른다. 이 표준 라이브러리를 사용하면 여러 가지 기능들을 실행할 수 있게 되며, 그 중에는 커맨드API(Command API)를 통해 배치 파일들을 실행시키는 것도 포함되어 있다. 하지만 API에 입력되는 값을 꼼꼼하게 점검하지 않고, 그렇기 때문에 코드 주입 공격이 성립된다.

보안 업체 제이프로그(JForg)의 수석 취약점 분석가인 야이르 미즈라히(Yair Mizrahi)는 “러스트는 메모리를 보호하는 특성으로 유명한 프로그래밍 언어이지만 모든 논리적 오류에서부터 자유로운 건 아니”라고 강조한다. “심지어 러스트의 메모리 안전 기능이 압도적으로 단단한 것도 아닙니다. 하지만 메모리가 안전한 프로그래밍 언어라고 널리 알려져 있죠. 그래서 개발자들이 메모리 안전 부분을 덜 신경 쓰기도 합니다. 러스트로 만들었든 다른 언어로 만들었든 개발된 코드는 모든 면에서 꼼꼼하게 점검하는 게 맞습니다. 그 어떤 언어도 개발자가 점검하지 않아도 될 정도로 완벽하지 않습니다.”

러스트 외에 코틀린(Kotlin)이라는 언어도 메모리 보호 기능으로 잘 알려져 있다. 구글과 MS 등은 이처럼 메모리 보호 기능이 기본적으로 탑재되어 있는 언어들로 수년 전부터 전환한 바 있다. 그런 후에는 모든 보안 문제들이 70%로 감소되었다고 구글 측은 주장한다. 즉 메모리 보호 기능이 효과가 있는 건 맞지만, 그것이 모든 문제를 해결할 정도는 아니라는 것이다.

메모리 문제 아니고 논리 문제
최근 러스트의 표준 라이브러리에서 발견된 취약점은 메모리와 관련된 문제가 아니다. 입력값을 처리하는 과정에서 나타나는 논리의 오류다. 러스트재단(Rust Foundation)의 기술 국장인 조엘 마시(Joel Marcey)는 “러스트의 표준 라이브러리 중 일부는 배치 파일을 윈도 장비에 전송하는 기능을 호출하도록 한다”며 “이처럼 코드를 배치 파일 형태로 전송하는 데에는 이유가 있다”고 설명한다.

“배치 파일들은 윈도 시스템에서 여러 가지 용도를 가지고 있습니다. 러스트는 이런 배치 파일의 활용을 보다 쉽게 해주기 위해 API를 제공합니다. 물론 API로 배치 파일을 쉽게 불러오도록 하는 것이 러스트의 핵심 기능이라고 하기는 어렵고, 따라서 개발자들도 이 기능을 전부 다 이용한다고 하기 어렵습니다만, 그럼에도 이론적으로는 공격자들이 피해자의 시스템을 완전히 장악할 수 있도록 해주는 것이므로 대단히 위험한 문제라고 해도 무방합니다.”

러스트재단의 보안 팀은 “일부 파일을 호출하고 입력 값을 점검하는 논리가 허술했음을 발견했다”며 “이를 악용해 악성 명령들을 통과시키는 게 가능하다는 것 또한 알아낼 수 있었다”고 발표했다. “공격자는 임의의 셸을 실행시킬 수 있었습니다.”

대응 빠른 러스트 프로젝트
보안 전문가들은 이번 러스트 측의 대응이 무척이나 빨랐다는 점을 칭찬하고 있다. “이번에 러스트 표준 라이브러리에서 발견된 취약점인 CVE-2024-24576은 러스트의 문제라기보다 윈도 배치 파일 처리 문제라고 볼 수 있습니다. 엄연히 말하자면 러스트만의 문제가 아니었고, 다른 프로그래밍 언어에서도 충분히 나타날 수 있는 문제였다는 것입니다. 그런 가운데 러스트가 제일 먼저 픽스를 내며 대응했습니다.” 미즈라히의 설명이다.

물론 이번 러스트의 대응으로 문제가 근원까지 다 해결됐다고 하기는 힘들다. 하지만 이제 커맨드API는 불안전한 값을 입력 받았을 때 오류를 일으키지 않으며, 따라서 익스플로잇의 가능성이 상당히 낮아졌다는 게 러스트 측의 설명이다. 미즈라히는 “러스트 측에서 정적 애플리케이션 보안 점검을 보다 광범위하게 진행하고, 퍼징 테스트도 활성화시킬 필요가 있어 보인다”고 말한다.

“러스트는 올바른 방향으로 나아가고 있다고 봅니다. 특히 메모리 안전을 기하는 프로그래밍 언어로서 자리를 잡아가는 건 바람직한 일입니다. 실제 많은 기업들이 메모리 안전 언어를 선호하기 시작했고, 그로 인해 적잖은 혜택을 보기도 했고요. 다만 좀 더 꼼꼼한 점검과 실험을 통해 메모리를 안전하게 하는 언어로서의 평판을 그대로 유지했으면 좋겠습니다. 특히 입력 값을 제대로 점검하는 건 기본 중 기본인데 그걸 놓쳤으니 러스트에 대한 신뢰도에 손상이 갈 수도 있습니다. 하지만 메모리 안전 언어로서 자리를 굳히고 있기 때문에 대단히 큰 타격을 입을 것 같지는 않습니다.”

상세한 내용은 러스트 프로젝트 홈페이지(https://blog.rust-lang.org/2024/04/09/cve-2024-24576.html)에서 확인이 가능하다(영문).

글 : 로버트 레모스(Robert Lemos), IT 칼럼니스트
[국제부 문정후 기자(globoan@boannews.com)]

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

헤드라인 뉴스

TOP 뉴스

이전 스크랩하기


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

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

    • 인콘

    • 엔텍디바이스코리아

    • 이노뎁

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

    • 아이디스

    • 씨프로

    • 웹게이트

    • 씨게이트

    • 하이크비전

    • 한화비전

    • ZKTeco

    • 비엔에스테크

    • 비엔비상사

    • 원우이엔지

    • 지인테크

    • 지오멕스소프트

    • 이화트론

    • 다누시스

    • 테크스피어

    • 렉스젠

    • 슈프리마

    • 인텔리빅스

    • 시큐인포

    • 미래정보기술(주)

    • 동양유니텍

    • 비전정보통신

    • 경인씨엔에스

    • 트루엔

    • 성현시스템

    • 한결피아이에프

    • 프로브디지털

    • 디비시스

    • 세연테크

    • 스피어AX

    • 투윈스컴

    • 위트콘

    • 유에치디프로

    • 구네보코리아주식회사

    • 주식회사 에스카

    • 넥스트림

    • 포엠아이텍

    • 세렉스

    • 탈레스

    • 에스지에이솔루션즈

    • 로그프레소

    • 윈스

    • 포티넷코리아

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

    • 에프에스네트워크

    • 유투에스알

    • 케이제이테크

    • 알에프코리아

    • 창성에이스산업

    • 아이엔아이

    • 미래시그널

    • 새눈

    • 에스에스티랩

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

    • 이스트컨트롤

    • 네티마시스템

    • 태정이엔지

    • (주)일산정밀

    • 넥스텝

    • 한국씨텍

    • 두레옵트로닉스

    • 에이티앤넷

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

    • 에이앤티글로벌

    • 포커스에이치앤에스

    • 신화시스템

    • 휴젠

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

    • 글로넥스

    • 엘림광통신

    • 세환엠에스(주)

    • 유진시스템코리아

    • 카티스

    • 유니온커뮤니티

Copyright thebn Co., Ltd. All Rights Reserved.

MENU

회원가입

Passwordless 설정

PC버전

닫기