[튜토리얼] 원격 공격 가능케 하는 취약점, 벌헌터로 찾아내자

[튜토리얼] 원격 공격 가능케 하는 취약점, 벌헌터로 찾아내자
Photo by Shahadat Rahman / Unsplash
💡
Editor's Pick
- 무료 오픈소스 취약점 발굴 도구, 벌헌터
- 파이선 코드 베이스에서는 높은 성과 낼 수 있어
- 모든 취약점 다 찾아내는 건 아냐

원격 공격을 가능케 해 주는 취약점을 찾아내는 오픈소스 도구가 등장해 소개한다. 이름은 벌헌터(Vulnhuntr)로, 대형 언어 모델(LLM)과 정적 코드 분석 기법을 활용해 사용자 입력부터 서버 출력까지 애플리케이션 내의 데이터 흐름을 추적한다. 이를 통해 기존 다른 도구들이 놓치곤 하는 복잡하고 다층위적인 취약점까지 식별할 수 있다.

벌헌터는 프로텍트AI(ProtectAI)의 연구원인 댄 맥키너니(Dan McInerney)가 개발했다. 그는 “현재 LLM에 코드베이스 전체를 넣었을 때 취약점 발굴이 어렵다”며 “특히 컨텍스트가 너무 제한적이고 관련 없는 코드들이 많이 포함되어 있을 때 LLM들은 취약점을 놓치거나 헛소리를 하기도 한다”고 지금 인공지능 모델들이 가지고 있는 문제를 짚었다.

“벌헌터는 프로젝트 내 파일을 읽고, GET 또는 POST처럼 원격 사용자 입력을 처리하는 기능이 포함돼 있는지 확인할 수 있도록 만들어졌습니다. 그런 기능들이 있다면 벌헌터는 해당 입력값이 어디로 흘러가는지를 추적합니다. 파일을 넘나들며, 그때 그때 필요한 클래스, 함수, 변수 등을 요청하는 방식입니다. 그 후 특정 취약점마다 맞춤형 프롬프트를 구성했고, 이를 활용해 코드를 분석합니다.” 맥키너니의 설명이다.

그렇게 했을 때 인공지능이 이상한 응답을 내는 경우가 크게 줄었다고 한다. 그 외 우회 경로 분석이나 실제 익스플로잇 코드 작성까지도 가능해졌다. “이 벌헌터를 가지고 주요 오픈소스 프로젝트에서 12개 이상의 제로데이 취약점을 발굴해냈다”고 맥키너니는 자랑하기도 했다. 이중 몇 가지 사례는 프로텍트AI 블로그에 소개돼 있다.

하지만 벌헌터가 모든 경우에 만능인 것은 아니다. 제한 사항이 존재한다. “파이선 코드베이스만 지원합니다. 또 로컬 파일 인클루전(Local File Inclusion, LFI) 임의 파일 덮어쓰기(Arbitrary File Overwrite, AFO), 원격 코드 실행(Remote Code Execution, RCE) 교차 사이트 스크립팅(Cross Site Scripting, XSS), SQL 주입(SQL Injection, SQLi), 서버 측 요청 조작(Server Side Request Forger, SSRF), 불안전 직접 객체 참조(Insecure Direct Object Reference, IDOR) 취약점만 식별 가능합니다.”

설치 방법

벌헌터를 설치해 사용하고 싶다면 깃허브(https://github.com/protectai/vulnhuntr)에서 다운로드가 가능하다. 설치 시 주의 사항이 하나 있다. 파이선 3.10만을 엄격하게 요구한다는 것이다. “벌헌터는 파이선 코드를 검사하는 데 사용하는 제다이(Jedi)의 여러 버그 때문에 파이선 3.10 버전과만 정확히 호환됩니다. 다른 파이선 버전들이라고 해서 안 되는 건 아닌데 결과 신뢰도가 떨어집니다.”

권장되는 플랫폼은 pipx와 도커(Docker)라고 한다. 

도커 사용 시 설치를 위한 명령어는 다음과 같다.

💡
docker build -t vulnhuntr https://github.com/protectai/vulnhuntr.git#main

pipx 사용 시 설치를 위한 명령어는 다음과 같다.

💡
pipx install git+https://github.com/protectai/vulnhuntr.git --python python3.10

포트리(Poetry)로 직접 설치도 가능하다. 

💡
git clone https://github.com/protectai/vulnhuntr
cd vulnhuntr && poetry install

사용법

벌헌터는 깃허브 저장소를 분석해 원격으로 악용 가능한 취약점을 찾는 데 주 목적이 있다. 사용자는 API 키와 로컬 경로를 지정해야 하며, LLM 서비스의 사용자 지정 엔드포인트도 원한다면 같이 지정할 수 있다. “여기서 한 가지 주의해야 할 것이 있습니다. LLM 제공업체에 대한 지출 한도를 반드시 설정하거나, 비용을 면밀히 모니터링 해야 합니다. 벌헌터는 LLM 컨텍스트 윈도에 많은 코드를 넣는다는 특성을 가지고 있기 때문에 요금이 올라갈 수 있습니다.”

또한 맥키너니는 클로드(Claude)라는 모델을 추천한다고 깃허브를 통해 밝혔다. 여러 모델들을 테스트 했을 때 클로드에서 가장 좋은 결과를 얻었기 때문이다. 

명령행 인터페이스의 경우 다음과 같다.

💡
usage: vulnhuntr [-h] -r ROOT [-a ANALYZE] [-l {claude,gpt,ollama}] [-v]
Analyze a GitHub project for vulnerabilities. Export your ANTHROPIC_API_KEY/OPENAI_API_KEY before running.

options:
-h, --help show this help message and exit
-r ROOT, --root ROOT Path to the root directory of the project
-a ANALYZE, --analyze ANALYZE
Specific path or file within the project to analyze
-l {claude,gpt,ollama}, --llm {claude,gpt,ollama}
LLM client to use (default: claude)
-v, --verbosity Increase output verbosity (-v for INFO, -vv for DEBUG)

용례도 소개되어 있는데, 다음과 같다.

1) pipx 설치 후 클로드로 전체 리포지토리를 분석한다고 했을 때 : 

💡
export ANTHROPIC_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/

2) 특정 파일만을 GPT-4o로 분석한다고 했을 때 : 

💡
export OPENAI_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/ -a server.py -l gpt

3) 도커에서 클로드와 사용자 지정 엔드포인트를 사용해 한다고 했을 때 : 

💡
docker run --rm -e ANTHROPIC_API_KEY=sk-1234 -e ANTHROPIC_BASE_URL=https://localhost:1234/api -v /local/path/to/target/repo:/repo vulnhuntr:latest -r /repo -a repo-subfolder/target-file.py

논리의 흐름

논리의 흐름은 다음과 같다고 공개됐다.

1) LLM이 README를 요약하고 시스템 프롬프트에 포함

2) LLM이 전체 파일을 초기 분석하고 취약점 가능성 보고

3) 벌헌터가 특정 취약점에 대한 보조 프롬프트를 제공

4) LLM은 다른 파일의 관련 함수/클래스/변수를 요청해 컨텍스트를 확장

5) 사용자 입력부터 서버 처리까지 전체 호출 체인이 구성될 때까지 반복

6) 최종 분석 : LLM의 추론, 개념증명 익스플로잇, 신뢰 점수 포함

6)번까지 완료했을 때 신뢰 점수가 7보다 낮으면 취약점일 가능성이 낮은 것이다. 7점이면 조사할 가치가 있는 것이고, 8점 이상이라면 실제 취약점일 가능성이 높다고 한다. “벌헌터는 상세 보고서를 출력하는 것으로 분석을 마무리 합니다. 이 보고서에는 각 파일의 초기 평가 결과, 보조 평가 결과, 참조된 함수와 클래스 정보, 분석 과정의 로그, 개념증명용 익스플로잇이 포함돼 있습니다.”


구글클라우드, AI 도구 2종 출시
💡Editor Pick - SOW 애널라이저, 작업 명세서 작성·보완·검토·승인 과정 효율화 - 봇 지원 라이브 채팅, 온보딩부터 청구 등 업무 지원 제공 구글 클라우드가 현지 시간 기준 27일 반복 작업을 효율화하고 정보 접근성을 높이는 동시에, 인텔리전스로 업무 역량을 돕는 AI 기반 도구 2종을 출시했다고 1일 밝혔다. 제미나이를 활용한

Read more

서울시 기술교육원, 랜섬웨어 감염...전산실 전담 없어

서울시 기술교육원, 랜섬웨어 감염...전산실 전담 없어

💡Editor Pick - 교직원 출·퇴근 관리 프로그램 설치 원격시스템 PC 랜섬웨어 감염 - 교직원 성명과 지문 데이터, 출퇴근 기록 등 약 6년 간 축적 자료 암호화 작년에 발생한 서울시 D기술교육원 랜섬웨어 감염 사고가 서울시 감사위원회를 통해 뒤늦게 드러났다. 기술교육원 4곳 중 1곳인 D기술교육원은 전산실 보안관리 부실로 PC가 랜섬웨어에 감염됐다.

By CheifEditor
전 세계 해커, 데이터 유출과 랜섬웨어 등 금융권에 '군침'

전 세계 해커, 데이터 유출과 랜섬웨어 등 금융권에 '군침'

💡Editor Pick - 금융권 노린 데이터 유출, 랜섬웨어 감염, 디도스 등 사이버 공격 기승 - 접근제어 강화, 고객 정보와 내부 자료 분리 저장, 백업 강화해야 금융권을 노린 데이터 유출, 랜섬웨어 감염, 디도스 공격 등 사이버 공격이 기승을 부리고 있다. 보험사, 은행 등 전 세계적으로 금융권을 타깃으로 한 공격이 곳곳에서 발생하고

By CheifEditor
배경훈 과기정통부 장관, 보이스피싱 피해 예방에 AI활용 주문

배경훈 과기정통부 장관, 보이스피싱 피해 예방에 AI활용 주문

💡Editor Pick - “보이스피싱 등 디지털 범죄, AI 기술 활용해 민·관 협력할 것” 강조 - 보이스피싱 예방에 실질 효과 나타나도록 고도화와 홍보 당부 보이스피싱 피해 예방 근본 대책 모색 자리가 마련됐다. 배경훈 과학기술정보통신부 장관은 8일 오전, KT 광화문 사옥서 열린 보이스피싱 대응 현장간담회서 보이스피싱 예방을 위해 AI활용을 주문했다. 배경훈

By CheifEditor
모니터랩, 웹 공격 트렌드 및 보안 대응 전략 제시

모니터랩, 웹 공격 트렌드 및 보안 대응 전략 제시

💡Editor Pick - 국내·글로벌 웹 공격 트렌드·대응 전략, 매월 웹 공격 동향 보고서 발간 - 고객사 인프라 로그 데이터 수집, 위협 정보 반영 보안 인사이트 제공 웹 애플리케이션 보안 기업 모니터랩은 국내 및 글로벌 웹 공격 트렌드와 대응 전략을 매월 웹 공격 동향 보고서를 통해 정기적으로 제공하고 있다고

By CheifEditor