TaintRadar: Semantic-Aware Taint-Style Vulnerability Detection via Augmented Code Property Graphs
TaintRadar는 기존의 오염 추적(taint tracking)의 한계를 극복하기 위해 코드 프로퍼티 그래프(Code Property Graph)에 정화(sanitization), 지속성(persistence), 객체 에일리어싱(object aliasing)을 위한 의미론적 계층을 추가한 새로운 정적 분석 접근 방식으로, 이를 통해 허위 탐지(false positives)를 크게 줄이고 PHP 애플리케이션에서 수많은 실제 및 제로 데이 취약점을 성공적으로 탐지해 냅니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
인터넷을 수백만 명의 사람들(사용자)이 다양한 상점과 사무실(웹사이트)에 끊임없이 쪽지, 소포, 비밀을 전달하는 거대하고 북적이는 도시라고 상상해 보십시오. 대부분의 경우 이 교환은 안전하지만, 때때로 교활한 범죄자가 소포 안에 독이 든 쪽지를 몰래 끼워 넣어, 상점 주인이 자신도 모르게 그것을 마을 전체에 크게 읽어주거나 금고를 털기 위해 사용하기를 기대하기도 합니다. 컴퓨터 과학의 세계에서 이것은 "테인트 스타일 취약점(taint-style vulnerability)"이라고 불립니다. 이는 검증되지 않은 정보가 프로그램 내에서 확인 절차 없이 위험한 곳, 예를 들어 데이터베이스나 화면에 도달하여 혼란을 일으킬 때 발생합니다.
이러한 범죄자들을 막기 위해 보안 전문가들은 "정적 분석(static analysis)"이라는 방법을 사용합니다. 이것은 마치 모든 상점의 문을 직접 열어보지 않고도 모든 상점의 설계도를 읽어내는 매우 똑똑한 탐정과 같습니다. 그들은 모든 쪽지가 위험한 지점에 도달하기 전에 필터링되거나 "살균(sanitization, 정화)"되는지(즉, 깨끗해지는지) 그 경로를 추적합니다. 수년 동안 이 탐정들은 모든 코드의 줄을 연결하는 거대한 3차원 지도인 "코드 프로퍼티 그래프(Code Property Graph, CPG)"를 사용해 왔습니다. 하지만 이 논문은 기존의 지도에 사각지대가 있다고 주장합니다. 기존의 지도들은 데이터가 창고(데이터베이스)에 저장되었다가 나중에 다른 상점에서 어떻게 다시 집어 올려지는지 놓치거나, 복잡하게 움직이는 상자(객체) 내부에서 데이터가 이동할 때 혼란을 겪곤 합니다. 이러한 사각지대 때문에 탐정들은 실제 범죄를 놓치거나, 그저 무해한 쪽지를 보고도 "범인이다!"라고 외치며 많은 시간을 낭비하게 됩니다.
여기에 사각지대를 해결하기 위해 설계된 업그레이드된 새로운 탐정 시스템인 TaintRadar가 등장했습니다. TraintRadar의 연구진은 범인을 잡기 위해서는 지도가 단순히 코드를 연결하는 선 이상의 것, 즉 '의미'에 대한 깊은 이해가 필요하다는 것을 깨달았습니다. 그들은 표준 지도 위에 세 가지 새로운 "초능력"을 층층이 쌓아 올린 시스템을 구축했습니다. 첫째, 이 시스템은 서로 다른 유형의 정화 작업(sanitization)이 정확히 어떻게 이루어지는지 학습하여, 쪽지가 진정으로 안전해졌을 때를 알 수 있습니다. 둘째, 동일한 창고를 공유하는 서로 다른 상점들 사이의 점들을 연결하여, 아침에 떨어뜨려 놓은 더러운 쪽지가 오후에 문제를 일으키기 위해 사용될 수 있다는 사실을 파악합니다. 이는 설령 상점들이 직접 대화하지 않더라도 마찬가지입니다. 셋째, 복잡하게 움직이는 상자 안에서 데이터가 어떻게 이동하는지에 대해 영리하게 작동하며, 프로그램 내부에서 손에서 손으로 전달되는 동안 비밀이 어떻게 변하는지를 정확히 추적합니다.
연구팀이 TaintRadar를 테스트했을 때 결과는 인상적이었습니다. 표준 연습 문제 세트(SARD 벤치마크)에서 이 시스템은 이전 도구들보다 훨씬 적은 실수를 범하면서도 80%의 취약점을 잡아냈습니다. 하지만 진짜 시험대는 19개의 실제 웹사이트에 이를 배치했을 때였습니다. TaintRadar는 이전에 보고되었던 대다수의 알려진 보안 구멍들을 성공적으로 찾아냈습니다. 더욱 흥ante로운 점은, 6개의 서로 다른 애플리케이션에서 이전에 한 번도 발견되지 않았던 29개의 새로운 보안 구멍(소위 "제로 데이(zero-days)")을 찾아냈다는 것입니다. 여기에는 공격자가 데이터베이스에 악성 코드를 주입할 수 있는 26건과 브라우저를 속여 악성 스크립트를 보여줄 수 있는 3건의 사례가 포함되었습니다. 연구진은 이미 이 새로운 발견들을 해당 웹사이트의 소유 기업과, 고유한 ID 번호를 부여하여 수정을 가능하게 하는 공식 CVE(Common Vulnerabilities and Exposures) 데이터베이스에 보고했습니다.
요약하자면, TaintRadar는 데이터의 '이야기'—즉, 데이터가 어떻게 정화되고, 어디에 저장되며, 복잡한 객체를 통해 어떻게 이동하는지—를 이해하도록 탐정을 가르침으로써, 우리가 훨씬 더 날카롭고 정확한 보안 시스템을 구축할 수 있음을 증명합니다. 이 시스템은 단순히 지도 위의 선을 보는 것이 아니라 도시의 리듬을 이해함으로써, 디지털 범죄자들이 틈새로 빠져나가는 것을 훨씬 더 어렵게 만듭니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.