AI 코딩 어시스턴트가 반복해서 생성하는 15가지 버그 (그리고 이를 잡아내는 스캐너)
요약
AI 코딩 어시스턴트가 공통적으로 생성하는 15가지 구조적 버그 패턴을 탐지하는 AST 스캐너 'AINAScan'을 소개합니다. 이 도구는 LLM을 사용하지 않는 결정론적 방식으로 보안 취약점과 AI 특유의 논리적 오류를 잡아냅니다.
핵심 포인트
- AI 모델(GPT-4, Claude 등)이 공통적으로 저지르는 15가지 구조적 버그 패턴 발견
- AINAScan은 LLM 없이 AST 기반으로 동작하여 일관된 탐지 결과 제공
- 33가지 보안 패턴과 9개 언어 지원 및 GitHub Action 연동 가능
- 상위 샌니타이저 확인 로직을 통해 오탐률을 거의 0%로 낮춤
AI 코딩 어시스턴트(AI coding assistants)는 빠릅니다. 또한 동일한 유형의 구조적 실수를 저지르는 데 있어 놀라울 정도로 일관적입니다.
수백 개의 AI 생성 파일을 스캔한 결과, 저는 동일한 패턴을 계속해서 발견했습니다:
# 패턴 1: MISSING_WRITE
# AI가 실제로 저장하지 않는 저장 함수를 생성함
def save_user(data):
...
이것들은 무작위적인 버그가 아닙니다. 이는 GPT-4, Claude, Gemini, Copilot과 같은 언어와 모델 전반에 걸쳐 나타나는 **구조적 패턴 (structural patterns)**입니다. AI는 언뜻 보기에는 올바르게 보이지만 런타임(runtime)에서 작동하지 않는 코드를 작성합니다.
문제는 기존의 스캐너(scanners)들이 이를 위해 설계되지 않았다는 점입니다. Bandit과 Semgrep은 보안 취약점(security vulnerabilities)을 잡아냅니다. 하지만 이들은 당신의 save_user()가 실제로 저장하는지 여부는 확인하지 않습니다.
내가 만든 것
AINAScan — 다음과 같은 기능을 갖춘 결정론적 AST 스캐너(deterministic AST scanner):
- 15가지 바이브 코딩 패턴 (vibe-coding patterns) (위에서 언급한 구조적 버그들)
- 33가지 보안 패턴 (security patterns) (SQL 인젝션 (SQL injection), SSRF, 경로 탐색 (path traversal), 커맨드 인젝션 (command injection), XSS 등)
- 9가지 언어: Python, JS, TS, Go, Ruby, Java, PHP, Kotlin, C/C++
- LLM 미사용 — 동일한 코드에 대해 항상 동일한 결과 생성
15가지 바이브 코딩 패턴
| 패턴 | 탐지 내용 |
|---|---|
MISSING_WRITE | DB 쓰기가 없는 save/store 함수 |
| ... |
사용해 보기 (30초 소요, 가입 불필요)
curl -X POST https://pleasing-transformation-production-90c2.up.railway.app/v1/scan \
-H "X-API-Key: vg_free_test" \
-F "file=@your_agent.py"
응답은 다음과 같습니다:
{
"passed": false,
"block_count": 2,
...
GitHub Action — PR에서 바이브 코딩 버그 잡기
name: VibeGuard Security Scan
on: [pull_request]
...
오탐 (False positive) 설계
제가 많은 시간을 할애한 부분 중 하나는 상위 샌니타이저(upstream sanitizer) 탐지입니다.
경로 탐색(path traversal) 문제를 플래그(flagging)하기 전에, 스캐너는 싱크(sink) 이전의 60줄을 확인하여 가드 패턴(guard patterns)을 체크합니다:
if '..' in path:
return 400 # 스캐너가 이를 확인하고
filepath = open(path) # BLOCK을 WARN으로 낮춥니다
이를 통해 잘 관리된 오픈 소스 저장소(Django, FastAPI, celery)에서의 오탐률(false positive rate)을 약 40%에서 거의 0%에 가깝게 낮추었습니다.
또한 10만 개 이상의 GitHub 스타를 보유한 10개의 저장소를 대상으로 테스트를 진행했으며, 정상적인 코드에서 오탐(false positive)은 단 한 건도 발생하지 않았습니다.
링크
- 라이브 API (Live API): https://pleasing-transformation-production-90c2.up.railway.app/
- 무료 키 (Free key) (6월 24일까지 전체 Pro 기능 사용 가능):
vg_free_test - GitHub: https://github.com/Moonsehwan/aina-scan
질문은 언제나 환영합니다. 특히 다른 분들이 AI가 생성한 코드베이스에서 어떤 바이브 코딩 (vibe-coding) 패턴을 목격하고 계신지 매우 궁금합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기