AI 생성 코드의 보안 리스크: 데이터, 메커니즘, 거버넌스
AI는 이미 당신 회사 코드의 상당 부분을 쓰고 있다. 예측이 아니라 현재형이다. 진짜 질문은 그 코드의 보안 수위이며, 실증 연구의 답은 낙관적이지 않다.
데이터가 말하는 것
- 일찍이 2021년 뉴욕대의 'Asleep at the Keyboard' 연구는 고위험 시나리오에서 GitHub Copilot이 생성한 프로그램의 약 40%에 악용 가능한 취약점이 있음을 밝혔다.
- Veracode의 2025년 벤치마크——100개 이상 모델, 80개 코딩 과제——에서는 약 45%의 과제에서 AI가 OWASP Top 10급 결함을 들여왔다. 모델이 '돌아가는 코드'를 쓰는 능력은 좋아졌지만 이 비율은 뚜렷이 개선되지 않았다.
- 스탠퍼드의 대조 실험은 더 위험한 층위를 드러냈다. AI 어시스턴트를 쓴 개발자는 덜 안전한 코드를 쓰면서도 자기 코드의 안전성에 대한 확신은 오히려 더 높았다.
결함률은 질적으로 그대로인데 코드 생산량은 자릿수로 늘고 있다. 고정된 취약점 비율에 폭증하는 분모를 곱하면 결함의 절대 수는 홍수가 된다.
네 가지 리스크 메커니즘
오염된 학습 데이터. 모델은 방대한 공개 코드에서 배운다. 그 안의 낡은 관용구, 폐기된 API, 전형적 취약점 패턴까지 함께.
맥락의 부재. 모델은 당신의 위협 모델을 보지 못한다. 이 입력은 사용자 제어인가? 이 엔드포인트는 인터넷에 노출돼 있는가? 맥락이 없으면 낙관 시나리오가 기본값이 된다.
보안 제약 없는 프롬프트. 개발자의 지시는 거의 언제나 '이 기능을 구현해줘'이지 '안전하게 구현해줘'가 아니다. 명시적으로 요구하지 않으면 모델은 강화하지 않는다는 것이 연구들의 일관된 결론이다.
환각 의존성(slopsquatting). 모델은 존재하지 않는 패키지 이름을 무시 못 할 빈도로 지어낸다. 공격자는 그 이름들을 선점 등록하고 기다리면 된다. AI 시대의 타이포스쿼팅이며, 자세한 사례는 공급망 공격의 진화에서 다룬다.
거버넌스: 탐지를 '생산 순간'으로
- 실시간 탐지: 코드가 쓰이는 순간 분석한다. 작성자가 사람이든 AI든. 룰 매칭이 아니라 비즈니스 시맨틱과 데이터 흐름을 이해하는 엔진이 필요하다. 그렇지 않으면 AI의 생산 속도에서 오탐이 팀을 익사시킨다. Sectrend CleanCode Security Agent는 오탐률 15% 미만, 증분 스캔 60초 미만——바로 이 리듬을 위해 설계됐다.
- 수리 폐쇄 루프: 탐지·판정·수정을 같은 턴 안에 수렴시켜 AI가 들여온 문제는 그 자리에서 AI가 고치게 한다. 백로그에 쌓지 않는다.
- 의존성 도입 심사: AI가 제안하는 모든 의존성에 존재 여부와 평판 검증을 수행해 환각 패키지와 사칭 패키지를 차단한다.
- CI 게이트 최후 방어: 실시간 탐지를 빠져나간 코드를 병합 전에 막는 관문을 파이프라인에 남겨 둔다.
엔지니어링 조직을 위한 세 가지 지표
측정 없는 거버넌스는 포즈일 뿐이다. 대시보드에 올릴 세 가지——AI 코드 비중과 그 결함 밀도의 분리 측정(AI가 얼마나 쓰는지에 더해 그 부분이 천 행당 몇 건의 결함을 들여오는지 별도 곡선으로 본다), 탐지 지연(코드 작성부터 문제 발견까지의 시간. 일 단위에서 초 단위로의 압축이 수리 비용을 자릿수로 바꾼다), 동일 턴 수정률(발견된 문제 중 같은 개발 턴 안에서 해결된 비율. 스캐닝 도구와 보안 역량을 가르는 유일한 지표).
보안팀의 역할도 바뀐다. 코드를 한 줄씩 심사하는 문지기에서 규칙과 맥락의 공급자로——조직의 위협 모델, 시큐어 코딩 규약, 승인된 컴포넌트 화이트리스트를 AI의 작업 맥락과 파이프라인 게이트에 코드화한다. 수도꼭지 하나를 지키던 시대는 끝났다. 이제는 정수장 전체를 운영해야 한다.
