9.7.5 AI 생성 코드의 보안 점수 산정 및 배포 승인 기준(Gatekeeper) 설정

9.7.5 AI 생성 코드의 보안 점수 산정 및 배포 승인 기준(Gatekeeper) 설정

지금까지의 SAST (Static Application Security Testing) 분석이 개별적인 취약점을 발라내는 과정이었다면, 이 데이터들을 종합하여 “결국 이 AI가 작성한 코드는 배포(Deployment)되어도 안전한가?“라는 궁극적인 결정을 내려주는 관문이 필요하다.

단 하나의 심각한 취약점이 발견되더라도 프로젝트 전체를 파기할지, 아니면 사소한 정보 노출 경고는 허용할지 결정하는 행위는 결국 비즈니스의 리스크 테이킹(Risk-Taking) 역량에 달려있다. 보안 오라클은 인간을 대신하여 이러한 결정을 자동화하기 위해, ‘보안 점수 산정(Security Scoring)’ 알고리즘과 엄격한 ‘게이트키퍼(Gatekeeper)’ 로직을 도입해야 한다.

1. CVSS(Common Vulnerability Scoring System) 기반의 가중치 점수화

오라클 시스템은 스캔된 취약점들의 단순 개수를 세는 방식을 피하고, 글로벌 보안 표준인 CVSS(V3.1 혹은 V4) 프레임워크를 기반으로 점수 체계를 수립한다.

  • AI의 코드 조각이 3개의 취약점을 포함하고 있다면 오라클은 각 취약점의 Base Score(0.0 ~ 10.0)를 추출한다.
  • 취약점 A: Hardcoded API Key (Critical, CVSS 9.8)
  • 취약점 B: Missing Rate Limiting (Medium, CVSS 5.3)
  • 취약점 C: Insecure Randomness (Low, CVSS 3.1)
  • 보안 점수(Security Score) = 100 - \sum (CVSS 점수 \times 가중치)
  • 가중치는 취약점의 심각도(Severity)에 따라 기하급수적으로 증가하게 설계된다. (예: Low는 1배, Medium은 2배, High는 5배, Critical은 즉시 -100점). 위 예제에서 해당 코드의 보안 점수는 마이너스 영역으로 추락한다.

2. 배포 승인 기준(Quality Gate)의 동적 설정

위에서 산출된 보안 점수는 프로젝트의 성격과 도메인(Domain)에 따라 다르게 평가되어야 하는 **임계값(Threshold)**의 기준이 된다. 오라클의 Gatekeeper 모듈은 이 규칙을 런타임에 실행한다.

  1. Strict Gate (예: 금융/결제 모듈):
  • 요구사항: Security Score 100점 만점에 100점. (단 하나의 Low 등급 취약점도 허용하지 않음)
  • 만약 AI가 이 기준을 통과하지 못하면, 코드는 영구 기각(Reject)되며 사람의 수동 리뷰조차 요청할 수 없는 Fail-Fast 파이프라인을 탄다.
  1. Standard Gate (예: 일반적인 백엔드 API):
  • 요구사항: Security Score 90점 이상. Critical, High 취약점은 0개, Medium은 1개, Low는 3개까지 허용.
  • 통과 시 배포 파이프라인에 탑승하지만, 허용된 마이너 취약점은 JIRA나 Issue Tracker에 ‘AI 기술 부채(AI Technical Debt)’ 티켓으로 자동 생성된다.
  1. Permissive Gate (예: 사내 대시보드 스크립트):
  • 요구사항: Security Score 80점 이상. High 취약점 0개 강제.

3. Human-In-The-Loop (HITL)로의 권한 위임(Escalation)

오라클 시스템이 보안 점수를 산정했을 때, 이것이 합격선과 불합격선의 경계(Borderline)에 걸치거나, SAST 도구가 이 취약점을 ’오탐(False Positive)’일 가능성이 높다고 보고하는 경우가 발생한다.

이때 오라클은 결정을 ‘보류(Pending)’ 상태로 전환하고 Human-In-The-Loop (HITL) 프로세스를 트리거한다.

  • 오라클은 AI가 생성한 코드 컨텍스트, 취약점의 위치(Line Number), CVSS 정보, 그리고 SAST 도구가 추적한 오염원(Taint Source)의 데이터 흐름(Data Flow)을 종합하여 알기 쉬운 마크다운(Markdown) 리포트로 추출한다.
  • 이 리포트는 시니어 보안 엔지니어(Human)에게 슬랙(Slack)이나 PR(Pull Request) 리뷰로 전달된다. 엔지니어는 시스템의 오탐을 판별하여 Override 버튼을 누르거나, 취약점을 승인하여 파이프라인을 기각시킨다.

Gatekeeper 매커니즘은 보안 검증 프로세스의 최종 방어선이다. 코드를 자율적으로 생산해 내는 AI 엔진에 “아무것도 통과하지 못할 수도 있다“는 극도로 비관적이고 보수적인 거부권(Veto)을 행사할 수 있는 독립적 오라클을 구축함으로써, 비관적인 보안 철학(Fail-Secure)을 AI 주도 개발의 근간으로 새겨 넣어야 한다.