레거시 소스 코드가 어떻게 AI 통제 정책이 되는가? (Scanner to Policy)
Archived from Core
Scanner는 현재 GoVail Core의 요청 경로가 아니다. 정책 힌트 실험의 기록으로 남긴다. 현재 Core는 Architecture를 본다.
개발팀에 처음 AI 코딩 도구를 도입할 때 맞닥뜨리는 실질적인 딜레마가 있습니다.
"우리 회사의 레거시 프로젝트(예: 오래된 PHP 애플리케이션)는 보안 상태가 좋지 않아서 날것 그대로 AI 도구에 넘겨주기에는 너무 위험한데, 그렇다고 AI를 안 쓰기에는 생산성 손실이 아깝다."
만약 하드코딩된 데이터베이스 접속 정보, 날것의 Raw SQL 질의문, 혹은 오래된 보안 취약점을 가진 클래스 파일들이 수두룩한 레거시 소스 코드가 그대로 AI 프롬프트 컨텍스트에 담겨 외부 LLM으로 유출되거나, AI가 이를 바탕으로 위험한 신규 코드를 제안한다면 곤란할 것입니다.
이 문제를 해결하기 위해 고안한 도구가 바로 GoVail Scanner입니다.
1. Scanner는 거창한 보안 진단 도구(SAST)가 아닙니다
시중에는 이미 SonarQube, Veracode, Semgrep 같은 훌륭한 정적 보안 취약점 진단(SAST) 도구들이 많이 있습니다. GoVail Scanner가 그러한 전문적인 보안 진단 도구들과 경쟁하려는 것은 전혀 아닙니다.
Scanner의 목표는 훨씬 소박하고 구체적입니다.
"코드의 전반적인 구조와 위험 요소를 파악해, AI 에이전트가 이 코드베이스를 다룰 때 조심해야 할 '가이드라인 힌트(Policy Hints)'를 뽑아내는 것."
이를 위해 GoVail Scanner는 다음과 같은 수준의 가벼운 탐지만을 수행합니다.
- 프로젝트 프레임워크 힌트 감지 (Laravel 스타일인지, CodeIgniter 스타일인지, 혹은 프레임워크가 없는 날것의 PHP 파일인지)
- 명백하게 소스 코드 내에 하드코딩된 API Key나 패스워드 패턴 탐색
- Raw SQL 패턴이 집중적으로 사용되는 위험한 파일 식별
- 공용 업로드 폴더와 같이 외부 접근 경로 노출 여부 확인
2. 분석 결과에서 정책(Policy)으로의 변환 흐름
Scanner가 소스 코드를 훑고 지나가면 두 가지 중요한 JSON 파일이 출력됩니다.
[ 레거시 소스 코드 ]
│
▼ (GoVail Scanner 정적 스캔)
┌───────────────────────┐ ┌────────────────────────┐
│ scan-report.json │ │ policy-hints.json │
│ (상세 구조/위험 리포트)│ │ (게이트웨이용 룰 추천) │
└───────────────────────┘ └───────────┬────────────┘
│
▼ (정책 룰로 주입)
[ GoVail Gateway ]scan-report.json: 개발자가 직접 보고 소스 코드를 개선하는 데 쓰는 참고용 상세 리포트입니다.policy-hints.json: GoVail Gateway가 읽고 실시간 필터링 정책으로 삼을 수 있는 기계 친화적인 설정값 조각(Hint)입니다.- 예: 스캔 결과
db_connection.php파일에 하드코딩된 기밀(Secret)이 존재한다고 탐지되면, Gateway에 다음과 같은 가이드가 주입됩니다."이 프로젝트 컨텍스트를 사용하는 AI 프롬프트에
db_connection.php와 관련된 단어가 들어오거나, 그 내부 문자열로 추정되는 키가 노출되면 즉시 해당 요청을 차단할 것."
- 예: 스캔 결과
3. 한계와 로드맵
현재의 스캐너는 완전한 자동화 연동 단계라기보다는, 정적 분석을 통해 설정 힌트를 제안하는 단계에 머물러 있습니다. 이 힌트 파일(policy-hints.json)을 Gateway가 동적으로 구독하여 실시간 룰 테이블에 머지하는 구조를 다듬어 나가는 것이 현재의 주요 개발 과제입니다.