Detecting Privilege Escalation in Polyglot Microservices via Agentic Program Analysis
본 논문은 대규모 언어 모델과 고전적인 프로그램 분석을 결합하여 복잡한 다언어 마이크로서비스 아키텍처에서 권한 상승 취약점을 효과적으로 탐지하는 에이전트 기반 프로그램 분석 프레임워크인 Neo 를 소개하며, 높은 정밀도와 재현율로 25 개의 오픈소스 애플리케이션에서 24 개의 제로데이 결함을 성공적으로 식별했습니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
거대한 하이테크 도시를 상상해 보세요. 모든 건물이 별도의 전문 상점입니다. 한 상점은 의류를 팔고, 다른 상점은 은행 송금을 처리하며, 세 번째 상점은 사용자 계정을 관리합니다. 현대 디지털 세계에서는 이러한 '상점'을 마이크로서비스라고 부릅니다. 이들은 독립적으로 확장할 수 있고, 고장 나면 스스로 수리할 수 있어 훌륭합니다. 하지만 서로 다른 사람들이 서로 다른 도구 (일부는 Python, 일부는 Java, 일부는 Go) 를 사용하여 만든 서로 다른 상점들이기 때문에, 누가 무엇을 할 수 있는지 추적하는 것은 악몽이 됩니다.
여기서 NEO가 등장합니다. NEO 는 두 가지 강력한 능력을 결합한 초지능적이고 지치지 않는 보안 탐정으로 생각하세요:
- 대형 언어 모델 (LLM) 의 인간적 직관: "이 사람은 역할을 변경하려고 한다"와 같은 단어 뒤에 숨겨진 의도를 파악할 수 있는 탐정처럼, 메모를 읽고 그 의미를 이해합니다.
- 로봇 지도 판독기의 정밀도: 도시 전체를 가로질러 서로 다른 건물 사이를 헤매지 않고 사람이 남긴 모든 발자국을 즉시 추적할 수 있는 탐정처럼, 모든 경로를 정밀하게 따라갑니다.
문제: '역할 연기' 결함
이 논문은 **권한 상승 (Privilege Escalation)**이라는 특정 위험을 설명합니다. Alice 라는 고객이 프로필을 '일반 사용자'에서 '개발자'로 변경하고 싶다고 가정해 보세요.
- 그녀는 게이트웨이 상점(정문) 에 들어갑니다. 경비원이 신분증을 확인합니다 (인증). "알겠습니다, 당신은 Alice 입니다."
- 그녀는 프로필 상점으로 갑니다. 점원이 그녀의 요청을 받아 사용자 관리 상점으로 전달합니다.
- 사용자 관리 상점은 그녀의 역할을 변경합니다.
결함: 상점들이 서로 제대로 소통하지 못했습니다. 첫 번째 상점은 그녀가 누구인지 확인했지만, 마지막 상점은 그녀가 무엇을 할 수 있는지 확인하지 않았습니다. 공격자가 시스템을 속여 "Alice 의 역할을 '개발자'로 변경"하는 대신 "Alice 의 역할을 관리자로 변경"하도록 만들 수 있습니다. 상점들이 조율되지 않았기 때문에 시스템은 공격자가 보스가 되는 것을 허용합니다. 이는 호텔 손님이 부엌에 들어가 셰프에게 "지금부터 내가 관리자야, 금고 열쇠를 줘"라고 말하고, 셰프가 그 손님이 그저 손님일 뿐임을 모르고 열쇠를 건네는 것과 같습니다.
도전: 왜 이를 찾기 어려운가?
이러한 허점을 찾는 것은 세 가지 이유로 매우 어렵습니다:
- 다국어 퍼즐: 도시는 서로 다른 언어로 지어졌습니다. 게이트웨이는 Java 로 말하지만, 사용자 관리자는 Python 으로 말합니다. 기존 보안 도구는 한 가지 언어만 말하는 통역사처럼, 국경을 넘어 대화를 따라갈 수 없습니다.
- 숨겨진 의미: 컴퓨터는 코드를 기호로만 봅니다.
setUserRole()이 특별한 허가가 필요한 '권력 행사'라는 것을 알지 못합니다. 그저 함수 이름으로만 보입니다. 인간은 의미를 이해하지만, 컴퓨터는 도움이 필요합니다. - 미로: 정문에서 금고까지 가는 길은 미들웨어, 라우터, 데코레이터를 포함해 10 개의 서로 다른 건물을 비틀며 지나갈 수 있습니다. 기존 도구는 이 미로에서 길을 잃습니다.
해결책: NEO 의 작동 방식
연구진은 NEO라는 '에이전트 (Agentic)' 시스템을 구축했습니다. NEO 를 정적 스캐너가 아닌 스마트한 계획과 마법 같은 도구 상자를 가진 탐정으로 생각하세요.
1. 마법 도구 상자 (코드 검색 원시 연산)
탐정에게 도서관의 모든 책을 읽으라고 요청하는 대신 (이는 시간이 무한히 걸리고 뇌를 압도할 것입니다), NEO 는 탐정에게 구체적이고 강력한 도구를 제공합니다:
- "이름 찾기" 도구: "update" 또는 "role"로 명명된 모든 함수를 즉시 찾습니다.
- "흐름 추적" 도구: 사용자 요청과 같은 데이터 조각이 정문에서 금고까지, 심지어 서로 다른 언어 사이를 뛰어넘더라도 따라갑니다.
- "누가 누구를 불렀나" 도구: 누가 누구와 대화하는지 확인하기 위해 전체 명령 체인을 매핑합니다.
이러한 도구들은 범용 통역사 역할을 하여, 탐정이 Java, Python, Go 를 모두 이해할 수 있게 하며 구문으로 혼란을 겪지 않도록 합니다.
2. 탐정의 뇌 (LLM 에이전트)
NEO 는 대형 언어 모델 (LLM) 을 뇌로 사용합니다.
- 동적 계획: 경직된 체크리스트를 따르는 대신, 탐정은 지도를 보고 의심스러운 경로를 발견하면 "다음 건물의 라우터를 확인해야겠다"라고 결정합니다. 그런 다음 마법 도구 상자를 사용하여 해당 특정 지점으로 확대합니다.
- 의미론적 이해: 탐정은 코드를 읽고 "아, 이 함수는 사용자의 권한을 변경한다. 이는 '권한이 있는 작업'이므로 엄격한 확인이 필요하다"라고 이해합니다.
- 검증: 탐정은 단순히 추측하지 않습니다. "이 문에 경비원이 있는가?"라고 묻습니다. 확인을 찾으면 경비원의 규칙이 충분히 엄격한지 읽습니다. (예: "경비원은 로그인 여부를 확인하지만, 관리자가 될 수 있는지 확인하는가? 아니면? 그렇다면 취약점이다.")
결과: 기록적인 사냥
연구진은 수백만 줄의 코드가 포함된 25 개의 실제 마이크로서비스 애플리케이션 (온라인 상점 및 티켓팅 시스템 등) 에서 NEO 를 테스트했습니다.
- 발견: NEO 는 이전에는 아무도 몰랐던 24 개의 새로운 (제로데이) 취약점을 발견했습니다.
- 정확도: 경보를 울렸을 때 81% 의 정확도를 보였으며, 실제 문제의 85% 를 포착했습니다.
- 비교:
- 기존 도구 (MScan 또는 CodeQL 등): 이들은 한 가지 언어만 말하거나 한 건물만 보는 탐정들처럼, 대부분의 건물 간 공격을 놓쳤습니다.
- 다른 AI 에이전트 (EnIGMA 등): 이들은 도서관의 모든 책의 모든 페이지를 읽으려 하는 탐정들처럼, 압도되어 시간이 부족해지고 단서를 놓칩니다.
- NEO: "마법 도구 상자"를 사용하여 관련 페이지만 가져오고 "탐정 뇌"로 이야기를 이해함으로써, NEO 는 다음으로 가장 좋은 방법보다 24 개 더 많은 취약점을 발견했습니다.
교훈
NEO 는 "스마트한 AI"와 "정밀한 코드 분석" 사이에서 선택할 필요가 없음을 증명합니다. 이 둘을 결합하면 이전에는 보이지 않았던 보안 허점을 찾기 위해 현대 클라우드 소프트웨어의 복잡하고 다국어이며 다건물적인 세계를 항해할 수 있는 시스템을 얻게 됩니다.
연구진은 모든 발견 사항을 소프트웨어 소유자에게 책임 있게 보고했습니다. 많은 문제가 이미 수정되어 이러한 디지털 도시가 모두에게 더 안전해졌습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.