AI가 코드의 흐름과 의미를 이해해 실제로 악용될 수 있는 버그를 찾아내는 기술로, 규칙에 맞는 모양만 찾는 기존 스캐너가 놓치는 여러 부분이 얽힌 문제까지 따라가며 추론한다. 특정 모듈을 깊게 점검하거나 정적 분석 결과 중 진짜 위험한 것만 골라낼 때 쓰며, 기존 도구와 함께 쓸 때 효과가 가장 좋다.
| 항목 | 기존 스캐너 (CodeQL, Semgrep 등) | AI 취약점 발견 |
|---|---|---|
| 찾는 방식 | 미리 정한 규칙·패턴과 비교 | 코드의 흐름과 의미를 이해하고 추론 |
| 잘 찾는 것 | 이미 알려진 위험한 패턴 | 패턴 밖의 버그, 여러 부분이 얽힌 문제 |
| 약점 | 오탐이 많다 | 틀린 가설을 자신 있게 내놓기도 한다 |
방법은 단순하다. Claude Code 같은 코딩 에이전트에 점검할 모듈을 지정하고 "메모리 안전성 이슈나 경쟁 조건을 찾아줘"처럼 무엇을 볼지 구체적으로 요청한다. AI가 실행 흐름 전체를 따라가며 악용될 수 있는 경로를 제시한다.
코드베이스가 크면 소스 파일을 하나씩 넘기며 같은 질문을 반복하는 간단한 스크립트로 돌리면 된다. 실제로 이런 방식으로 Linux 커널 NFS 드라이버에서 23년간 아무도 몰랐던 힙 오버플로우가 발견됐다. 프로토콜 동작을 깊이 이해해야 보이는 버그라 규칙 기반 도구로는 잡기 어려웠다.
두 도구를 단계별로 나눠 쓰는 게 효과적이다. 정적 분석이 넓게 후보를 걸러 내면, AI가 그중 진짜 위험한 것만 추려 낸다.
| 단계 | 맡기는 도구 | 하는 일 |
|---|---|---|
| 1. 후보 찾기 | 정적 분석 도구 | 위험해 보이는 코드를 넓게 표시 |
| 2. 걸러 내기 | AI | 실제로 악용 가능한지 판단 |
| 3. 최종 확인 | 보안 담당자 | 검증하고 패치 우선순위 결정 |
최근에는 AI가 코드를 살피고, 가설을 세우고, 분석 도구를 직접 실행해 진짜 악용되는지 확인하는 과정을 스스로 반복하는 에이전트형 감사가 흐름이다. AI가 혼자 판단을 끝내는 게 아니라, 확실한 결과를 내는 도구들을 부리면서 그 결과를 보고 다음 단계를 정하는 구조다.
AI는 후보를 많이 쏟아내고, 틀린 가설도 자신 있게 말한다. 그래서 지금 가장 큰 병목은 사람이 이 결과를 검증하는 일이다. 보안 전문가 검토 없이 그대로 믿으면 위험하다. 또 같은 기술이 공격에도 쓰일 수 있으므로, 찾은 취약점은 책임 있게 공개하고 패치 순서를 잘 정해야 한다.
가장 흔한 건 코딩 에이전트에 위험한 모듈을 맡겨 깊게 읽히는 방식과, 스캐너가 쏟아낸 경고를 AI로 걸러 진짜만 남기는 방식이다. 어느 쪽이든 마지막 판단은 사람이 한다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 인증·입력 파싱처럼 위험한 모듈을 지정하고 볼 취약점 종류를 구체적으로 요청 |
| 정적 분석 결과 정리 | 스캐너 경고를 AI에 넘겨 악용 가능한 것만 추리고, 나머지는 오탐으로 분류 |
| 코드 리뷰 | 변경된 코드를 보안 관점에서 한 번 더 읽혀 배포 전에 위험한 흐름을 확인 |
| 오픈소스·보안 연구 | 파일을 하나씩 넘기는 스크립트로 오래된 코드를 훑고, 찾은 버그는 관리자에게 책임 있게 제보 |