AI VIDEO BRIEFING

AI 코딩 에이전트 보안 가이드: OWASP 스킬과 훅으로 처음부터 방어적 코드를 쓰게 만드는 방법

AI 코딩 에이전트는 왜 취약한 코드를 만들까? NDC 콘퍼런스의 OWASP 발표에서 제시된, 사후 수정 대신 계획 단계에서 보안 지침을 스킬과 훅으로 주입해 방어적 코드를 처음부터 쓰게 하는 접근법을 자세히 정리했다.

AI 코딩 에이전트에게 보안을 가르치는 법: OWASP 스킬과 훅 활용 영상 대표 이미지

핵심 메시지

  • AI 코딩 에이전트는 인터넷의 온갖 코드로 학습해 안전한 코드와 취약한 코드를 구분하지 못하며, 확률적 특성 때문에 SQL 인젝션 같은 취약점을 그대로 반복한다.
  • AI는 '증폭기'라서, 좋은 관행 위에 얹으면 좋게, 나쁜 코드 위에 얹으면 더 나쁘게 결과를 키운다.
  • 단순히 '안전하게 만들어 줘'라고 요청하는 방식은 맥락과 최신성이 부족해 한계가 있으므로, 계획 단계에서 보안을 먼저 반영하는 것이 낫다.
  • OWASP ASVS 검증 항목을 '스킬'로 만들어 필요한 순간에만 관련 지침을 불러오고, 훅으로 리마인더를 주입하면 방어적 코드 작성 확률을 높일 수 있다.

쉽게 이해하기

OWASP 오슬로 챕터를 이끄는 보안 전문가가 NDC 콘퍼런스에서 'AI 코딩 에이전트가 더 방어적으로 코드를 짜게 하는 법'을 주제로 발표했다. 그는 쿼리 문자열을 그대로 SQL에 넣는 전형적인 인젝션 취약점을 예로 들며, 에이전트가 문제를 식별은 해도 확률적 특성 탓에 늘 올바르게 처리하지는 못한다고 지적했다.

에이전트가 실수하는 이유로는 인터넷의 모든 코드(안전·취약 구분 없이)로 학습했다는 점, 방대한 데이터를 압축한 '흐릿한 기억'이라 정확히 떠올리지 못한다는 점, 강화학습이 주로 '작동하는 코드'에 맞춰져 보안까지 챙기지는 못한다는 점을 들었다. 발표자는 작은 모델에서 다음 토큰 확률을 보여 주며, 무관한 단어 하나만 바꿔도 비밀번호 저장 알고리즘 추천이 bcrypt에서 취약한 SHA·MD로 바뀌는 모습을 시연했다.

지난해 도라(DORA) 보고서의 핵심 메시지처럼 AI는 '증폭기'다. 좋은 관행을 따르면 AI도 그렇게 하지만, 나쁜 코드를 주면 그 취약점을 그대로, 때로는 더 심하게 반복한다. 실제로 상단 함수의 취약점을 아래 자동 완성에서 똑같이 재현하는 예가 제시됐다.

그는 '안전하게 만들어 줘'라는 사후 요청이나 특정 취약점만 겨냥한 스캔·수정 루프의 한계를 짚었다. 대신 계획 단계에서 보안을 먼저 반영하는 '왼쪽으로 이동' 접근을 제안하며, OWASP ASVS(17개 범주·80개 하위 범주·345개 검증 항목)를 근거 자료로 활용했다. 전부를 컨텍스트에 넣지 않고, 에이전트가 하려는 작업에 맞는 지침만 골라 불러오는 '스킬' 형태(OWASP의 secure agent playbook)로 만든 것이 핵심이다.

여기에 파일 편집 시 보안 지침 적용을 상기시키는 '훅'을 더했다. 이는 클로드가 스스로 할 일 목록·파일 읽기에 리마인더를 붙이는 방식에서 착안한 것이다. 발표자는 앤트로픽이 최근 정규식으로 위험 패턴을 탐지하고 훅과 백그라운드 리뷰를 결합한 자체 보안 가이던스 스킬을 내놓았다고 소개하면서, 사후 수정보다 처음부터 안전하게 쓰는 방향을 선호한다고 밝혔다.

주요 인사이트

  • 보안에서는 에이전트의 '창의성'이 오히려 위험하다. 예컨대 로그인 구현 시 서명 없는 base64 토큰 형식을 스스로 발명하는 등, 검증된 표준 대신 임의 선택을 하지 않도록 좋은 선택지를 명시해 줘야 한다.
  • 스킬은 새로 등장한 취약점에도 대응할 수 있다. 모델이 모르는 신종 위협이라도 '이 작업을 할 때는 이 지침을 참고하라'고 가르쳐 두면 학습 시점 이후의 문제까지 다룰 수 있다.
  • 속도·비용 면에서 모든 것을 에이전트에게 맡길 필요는 없다. 의존성 취약점 점검은 npm audit 같은 기존 도구가 훨씬 빠르고 정확하므로, 토큰은 정말 필요한 곳에 쓰는 편이 낫다.

자주 묻는 질문

AI 코딩 에이전트는 왜 취약한 코드를 만드나요?

안전한 코드와 취약한 코드가 구분되지 않은 채 인터넷의 모든 코드로 학습했고, 강화학습이 주로 '작동하는 코드'에 맞춰져 있으며, 확률적으로 토큰을 선택하는 특성 때문에 취약한 패턴을 그대로 반복하기 쉽습니다.

'안전하게 만들어 줘'라고 프롬프트에 적으면 충분한가요?

'모범 사례를 쓰라'는 요청이 어느 정도 도움은 되지만, 맥락과 최신성이 부족해 오래된 조언이나 잘못된 방법을 택할 수 있습니다. 발표자는 계획 단계에서 관련 지침을 스킬로 불러오는 방식을 권합니다.

OWASP ASVS를 스킬로 만드는 이유는 무엇인가요?

345개 검증 항목 전부를 컨텍스트에 넣으면 낭비가 크므로, 에이전트가 하려는 작업에 맞는 지침만 필요한 순간에 골라 불러와 컨텍스트를 절약하고 일관되게 좋은 결과를 얻기 위해서입니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식