9.6.5 보안 취약점이 보고된 버전의 종속성 사용 여부 자동 스캔
블랙리스트가 금지된 도구를 막는 사내 정책이라면, **보안 취약점 스캐닝(Vulnerability Scanning)**은 코드가 인터넷이라는 거친 야생에서 살아남을 수 있는지 평가하는 글로벌 예방접종(Global Vaccination) 매커니즘이다.
LLM은 방대한 깃허브 코드베이스를 바탕으로 학습되었으나, 그 코드들 중 상당수는 당시에 유행했던(그러나 지금은 CVE가 수통씩 발급된) 구버전 라이브러리들을 떡칠하고 있다. AI에게 *“사용자 인증을 처리하는 웹 서버를 구축하라”*고 지시하면, 모델은 태연하게 RCE(원격 코드 실행) 취약점이 도사리는 express@4.16.0 이나, SQL 인젝션 공격에 무방비인 구버전 sqlalchemy를 의존성 파일에 꽂아 넣는다.
이러한 수면 아래의 폭탄을 막기 위해, 최정예 오라클 시스템은 종속성 트리가 생성되는 즉시 글로벌 보안 취약점 데이터베이스(NVD, OSV 등)와 연동하여 실시간으로 취약점을 매핑하는 SCA(Software Composition Analysis) 과정을 거쳐야 한다.
1. CVE(Common Vulnerabilities and Exposures) 데이터베이스 매핑
AI가 requirements.txt나 package.json을 내뱉은 순간, 오라클 미들웨어는 이 텍스트 파일을 분석하여 각 패키지의 이름과 명언된 버전을 추출한 뒤, Snyk, Dependabot, Trivy 혹은 NPM Audit과 같은 보안 스캐너를 헤드리스(Headless)로 가동시킨다.
- 동기식(Synchronous) 스캔 절차:
# 예시: Node.js 샌드박스에서 즉각적인 취약점 스캔 npm audit --json
오라클은 반환된 JSON 데이터 구조 내에서 `severity: "high"` 혹은 `"critical"`에 해당하는 항목을 검색한다.
* 만일 CVSS(Common Vulnerability Scoring System) 점수가 임계값(예: `7.0` 이상)을 초과하는 취약점이 발견될 경우, 오라클은 즉시 이 빌드를 격리(Quarantine)하고 런타임 테스트로 넘어가는 것을 허락하지 않는다.
## 2. 보안 피드백의 구체화와 패치(Patch) 버전 강제
단순히 *"당신이 추가한 패키지는 위험합니다"*라는 애매망측한 피드백은 LLM을 혼란에 빠뜨린다. LLM은 '위험'이라는 단어를 듣고 아예 전혀 다른 스택(예: `express` 대신 `fastify`)으로 아키텍처를 통째로 갈아엎는 과잉 교정(Over-correction)을 저지르기 십상이다.
보안 스캔 오라클의 피드백은 **'패스워드 교체 시기'**처럼 극도로 구체적이고 핀포인트적(Pin-pointed)이어야 한다.
* 오라클 엔진은 보안 스캐너가 제시하는 **수정된 버전(Patched Version)** 정보를 추출한다.
* *"[Security Oracle Reject] 현재 지정된 `lodash@4.17.15` 버전은 Prototype Pollution 취약점(CVE-2020-8203)이 존재합니다. 해당 패키지의 버전을 안전하게 패치된 `^4.17.21` 이상으로 명시하여 즉시 업데이트하십시오."*
* 이러한 시스템 프롬프트를 받은 모델은 코드의 메인 로직을 건드리지 않고, 오직 설정 파일의 버전 넘버만을 외과 수술처럼 정밀하게 교정하여 다시 제출하게 된다.
## 3. 심층 종속성(Transitive Dependency) 취약점의 사각지대 해소
LLM이 명시적으로 `A` 패키지를 가져왔을지라도, `A`가 몰래 끌고 들어오는 `B`, `C` 패키지(Transitive Dependencies)에 치명적인 취약점이 섞여 들어올 수도 있다.
이 경우 AI는 자신이 적지도 않은 `B` 패키지 때문에 보안 검사에 걸렸다는 사실을 이해하지 못하고 **피드백 루프의 미아**가 된다. 오라클 설계자는 이 사각지대를 막기 위해, *“당신이 직접 선언한 A 모듈이 내부적으로 버그가 있는 B 모듈을 종속하고 있다”*는 사실을 명확히 설명해 주고, `package.json`의 `resolutions` 블록이나 Python의 `pip-compile`을 통해 종속성 트리의 하단부를 강제 제압(Override)하는 코드를 작성하도록 지침을 하달해야 한다.
AI가 뱉어내는 코드는 화려한 겉모습을 자랑하지만 그 뼈대를 이루는 외장재(External Libraries)는 자칫 썩어 문드러진 목재일 수 있다. 취약점 자동 스캔 오라클은 이 숨겨진 부식(Corrosion)을 X-ray로 투시하여, 안전성이 수학적으로 보장된 강철 빔만을 사용해 엔터프라이즈의 마천루를 올리게 하는 핵심 아키텍처다.