Home > 전체기사

소프트웨어 개발에 사용되는 스니펫들 점검하면 취약점도 나온다?

  |  입력 : 2021-05-04 16:51
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기
코드의 조각들이 요즘 개발 프로젝트에서는 널리 활용된다. 그런데 이 스니펫들을 기능별로 모아 검사함으로써 일관되지 않은 부분을 찾아내면 버그와 취약점이 나올 확률이 높다고 한다.

[보안뉴스 문가용 기자] 소프트웨어 개발 방법론에 있어서 일관적으로 반복 생산할 수 있는 체계는 가장 이상적이고 효율적인 것으로 꼽힌다. 또한 개발 프로젝트의 단위가 자꾸만 커지면서 어느 새 ‘필수적’인 것이 되어버렸다. 이런 상황에서 노스이스턴대학(Northeastern University)의 연구원들이 일관적이지 않은 프로그래밍 요소들을 탐지함으로써 버그와 취약점을 잡아낼 수도 있다고 주장하고 나섰다.

[이미지 = Pixabay]


여기서 연구원들이 말하는 ‘일관적이지 않은 프로그래밍 요소’란 ‘코드 스니펫(code snippet)’을 말한다. 코드 스니펫은 ‘코드 조각’으로도 번역되는데, 프로그래밍 된 코드의 작은 일부를 가리키며, 다양한 프로그래밍 프로젝트에서 재사용 가능하다. 다만 특정 기능을 수행하고 문제를 해결하는 데 있어 전체 프로그래밍의 방법 및 접근법이 달라질 수(즉 일관적이지 않을 수) 있다.

노스이스턴대학의 연구원들의 주장은 이런 코드 스니펫들과 나머지 코드 요소들을 비교하여 일관적이지 않은 부분들을 파악함으로써 보안 문제 중 일부가 해결될 수 있다는 것이다. 이러한 접근법을 연구원들은 픽스(FICS)라고 부른다. ‘기능적으로 유사하지만 일관성이 부족한 코드 스니펫(Functionally-similar yet Inconsistent Code Snippet)’이라는 말의 준말이다. 그리고 실제 픽스를 사용해 다섯 개의 오픈소스 프로젝트를 분석해 22개의 새로운 취약점과 버그를 찾아냈다고 한다.

픽스가 기존 코드 분석 방법론들을 대체할 혁신적인 코드 점검법인 것은 아니다. 연구원들도 이 점을 강조하고 있다. 그저 코드를 분석해 취약점을 찾아내야 하는 분석가들에게 새로운 무기가 하나 더 생겼다는 차원에서 연구 성과를 바라볼 수 있다고 연구원 중 한 명인 만수르 아마디(Mansour Ahmadi)는 강조한다. 아마디는 현재 아마존의 보안 엔지니어이기도 하다.

“코드의 정적 분석과 같은 방법론에 있어서 제일 중요한 건 ‘찾아내려는 취약점이 기존에 발견된 취약점이어야 한다’ 혹은 ‘정적 분석 방법론에 입력된 패턴과 맞아떨어져야 한다’는 것입니다. 그런데 시스템에 이전에 알려지지 않은 취약점이 있다고 하면 어떨까요? 정적 분석으로는 찾아내지 못합니다. 하지만 ‘픽스’를 사용하면 잡아내는 게 가능합니다.”

픽스는 머신러닝을 기반으로 한 기술이다. 다만 다른 유사 프로젝트들과 달리 ‘패턴’ 혹은 ‘시그니처’를 찾아내는 게 인공지능의 목적은 아니다. 특정 기능을 수행하되 비슷한 기능을 가진 다른 요소들과 다른 방법 혹은 접근법을 가지고 있는 스니펫들을 찾아내는 것이 목적이다. “바운드 확인을 하지 않는 단순 버그부터 UaF와 같은 복잡한 버그까지, 코드베이스에 버그가 없는 코드 스니펫과, 그와 유사하지만 버그가 많은 코드 스니펫이 공존하고 있다면 픽스를 통해 이 버그들을 찾아내는 건 가능한 일입니다.”

이러한 ‘조건’ 때문에 픽스가 잘 통하는 프로젝트가 있고 그렇지 않은 프로젝트가 있다. 잘 통하는 건 당연히 여러 스니펫이 활용된 ‘어느 정도 규모를 갖춘’ 프로젝트들이다. “여러 개발자들이 만들어 놓은 요소들을 짜깁기 하는 것이 요즘 소프트웨어 개발 방식이죠. 그런 짜깁기 요소가 많이 가미된 프로젝트일수록 픽스의 방법론은 높은 정확도를 보입니다.”

픽스는 그 자체로 ‘보안 방법론’으로서 개발된 것은 아니다. 취약점보다는 버그를 찾는 것에 더 적합하기도 하다. 다만 그러한 과정 중에 취약점이 발견되는 게 꽤나 높은 확률로 반복되었다는 게 연구원들의 설명이다. “실험을 진행하면서 메모리 유출, 사용자 입력값 확인, 올바르지 않은 타이프캐스팅 등을 찾아냈습니다. 그리고 몇 개에는 CVE 번호를 부여해 달라고 신청까지 한 상태입니다.”

이번 연구 결과는 올해 8월 열릴 유즈닉스 시큐리티 컨퍼런스(USENIX Security Conference)를 통해 상세히 발표될 예정이다. 관련 내용은 여기(https://www.usenix.org/conference/usenixsecurity21/presentation/ahmadi)서 조금 더 열람할 수 있다.

현재 연구원들은 “픽스의 작동 원리 때문에 잘못된 탐지 결과가 나오는 경우”를 놓고 좀 더 심도 깊은 연구를 진행 중에 있다고 한다. 이는 개발자가 ‘버그가 많은’ 혹은 ‘올바르지 않은’ 스니펫을 정상 스니펫보다 더 많이 사용한 경우다. 그럴 때면 머신러닝 알고리즘이 비정상을 정상으로 인지할 수 있다. 즉 오염된 학습 데이터가 주입됨으로써 잘못된 결과가 나오는 것이다. “하지만 현재까지의 조사 결과, 이런 사례는 극히 드문 것으로 보입니다. 저희가 조사했을 때 딱 한 경우만 여기에 해당되는 것으로 분석됐습니다.”

3줄 요약
1. 코드 스니펫들에서 버그를 손쉽게 찾아내는 방법이 새롭게 개발됨.
2. 이 방법의 이름은 ‘픽스’라고 하는데, 의외로 취약점을 찾아내는 데에도 도움이 됨.
3. 정확한 내용은 8월에 발표될 예정이며, 현재는 특이한 경우의 수들이 연구되고 있음.

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

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

  •  
  • 0
  • 페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기

  •  SNS에서도 보안뉴스를 받아보세요!! 
모니터랩 파워비즈 6개월 2021년7월1~12월31일 까지엔사인 파워비즈 2021년6월1일~11월30일 까지2021 전망보고서위즈디엔에스 2018파워비즈배너 시작 11월6일 20181105-20200131
설문조사
2021년 상반기 발생했던 보안 사건 가운데 가장 파급력이 컸던 이슈는 무엇이라고 보시나요?
솔라윈즈 사건
콜로니얼 파이프라인 사건
카세야 사건
익스체인지 서버 취약점 사건
원자력연구원/KAI 해킹 사건
국내 대기업 주요 정보 다크웹 유출 사건
기타(댓글로)