AI가 작성한 코드, 정말 믿어도 될까? 개발자가 반드시 알아야 할 보안 이야기
요즘 개발을 하다 보면 AI 코딩 도구를 사용하지 않는 팀을 찾기가 더 어려워졌습니다.
GitHub Copilot, Claude Code, Cursor, Gemini CLI 등 다양한 AI 도구들이 등장하면서 코드를 작성하는 방식도 빠르게 바뀌고 있습니다.
예전에는 API 하나를 연동하는 데 몇 시간씩 걸렸다면, 이제는 프롬프트 한 줄만 입력해도 몇 초 만에 동작하는 코드가 만들어집니다.
개발 생산성만 놓고 보면 정말 놀라운 변화입니다.
하지만 한 가지 궁금증이 생겼습니다.
AI가 만들어 준 코드는 정말 믿어도 괜찮을까요?
동작하는 코드와 안전한 코드는 다르다
AI가 작성한 코드는 대부분 꽤 그럴듯합니다.
컴파일도 잘 되고, 실행도 되고, 테스트도 통과하는 경우가 많습니다.
그래서 많은 개발자가 자연스럽게 신뢰하게 됩니다.
하지만 보안 관점에서는 이야기가 조금 달라집니다.
예를 들어 AI가 작성한 코드에는 다음과 같은 문제가 숨어 있을 수 있습니다.
즉, '잘 동작한다'는 것과 '안전하다'는 것은 전혀 다른 문제입니다.
AI는 우리 회사의 보안 정책을 모른다
AI는 정말 똑똑합니다.
하지만 우리 회사의 개발 표준이나 보안 정책까지 이해하는 것은 아닙니다.
예를 들어 회사에서는 특정 암호화 라이브러리만 사용하도록 규정했더라도 AI는 인터넷에서 학습한 다른 라이브러리를 사용할 수도 있습니다.
또한 내부 코딩 규칙이나 컴플라이언스 요구사항도 AI가 자동으로 지켜주는 것은 아닙니다.
결국 AI는 가능성이 높은 코드를 생성할 뿐입니다.
그 코드가 우리 조직의 기준에 맞는지는 사람이 직접 확인해야 합니다.
AI 시대에도 보안의 기본은 변하지 않는다
AI가 등장했다고 해서 보안 원칙이 바뀐 것은 아닙니다.
오히려 더 중요해졌습니다.
개발자가 반드시 확인해야 하는 기본 사항은 여전히 같습니다.
✔ 입력값 검증(Input Validation)
✔ 인증(Authentication) 및 권한 관리(Authorization)
✔ 민감 정보 보호
✔ 안전한 예외 처리
✔ 검증된 라이브러리 사용
✔ 최소 권한 원칙 적용
AI는 이러한 내용을 자동으로 보장하지 않습니다.
그래서 개발자의 역할은 사라지는 것이 아니라 오히려 '코드를 작성하는 사람'에서 '코드를 검증하는 사람'으로 변화하고 있다고 생각합니다.
프롬프트도 보안이다
AI를 사용할 때 대부분 이렇게 요청합니다.
"로그인 API 만들어줘."
하지만 조금만 바꿔도 결과는 달라집니다.
예를 들어,
"Spring Security를 사용하고, 입력값 검증을 포함하며, OWASP Secure Coding Guide를 준수하고, 하드코딩된 Secret을 사용하지 않는 로그인 API를 작성해줘."
이처럼 보안 요구사항을 함께 전달하면 AI가 생성하는 코드의 품질도 훨씬 좋아집니다.
최근에는 Prompt Engineering도 개발 역량의 일부라고 이야기하는 이유가 여기에 있습니다.
좋은 프롬프트는 더 좋은 코드를 만들고, 더 안전한 결과를 만들어 줍니다.
AI는 확률적으로 답하지만, 보안은 확실해야 한다
AI의 가장 큰 특징은 확률 기반(Probabilistic) 으로 동작한다는 점입니다.
같은 질문을 입력해도 결과가 달라질 수 있습니다.
하지만 보안은 그렇지 않습니다.
보안은 "아마 괜찮을 것이다."가 아니라 반드시 검증되어야 하는 영역입니다.
그래서 AI가 작성한 코드를 그대로 사용하는 것은 위험합니다.
AI가 제안한 코드는 시작점일 뿐이고, 최종 검증은 반드시 사람이 수행해야 합니다.
AI 코드도 반드시 보안 테스트를 거쳐야 한다
AI가 작성했다고 해서 예외는 없습니다.
오히려 더 철저한 검증이 필요합니다.
개인적으로는 최소한 다음과 같은 절차는 반드시 거쳐야 한다고 생각합니다.
SAST(정적 애플리케이션 보안 테스트)
SCA(오픈소스 및 라이브러리 취약점 분석)
Secret Scan
Dependency Scan
Code Review
보안 정책 검사
AI는 코드를 생성하고,
보안 도구는 코드를 검증하며,
개발자는 최종 판단을 내리는 구조가 가장 이상적입니다.
AI 코드를 리뷰할 때 꼭 확인해야 할 체크리스트
AI가 작성한 코드를 Merge하기 전에 아래 항목을 한 번씩 확인해 보세요.
✅ 입력값 검증이 되어 있는가?
✅ 인증과 권한 처리가 올바른가?
✅ API Key나 비밀번호가 하드코딩되어 있지 않은가?
✅ 오래된 라이브러리를 사용하지 않는가?
✅ 오류 처리와 로그가 안전한가?
✅ 알려진 취약점은 없는가?
✅ 우리 조직의 개발 표준을 준수하는가?
✅ AI의 제안이 실제 테스트로 검증되었는가?
✅ 사람이 최종 리뷰를 완료했는가?
이 체크리스트만 습관처럼 적용해도 AI 코드의 품질은 크게 높아질 수 있습니다.
마무리
AI는 앞으로 소프트웨어 개발의 기본 도구가 될 가능성이 높습니다.
하지만 AI가 아무리 발전해도 변하지 않는 것이 하나 있습니다.
코드에 대한 최종 책임은 개발자에게 있다는 점입니다.
앞으로 중요한 것은 AI를 얼마나 많이 사용하는지가 아니라, AI가 만든 코드를 얼마나 안전하게 검증하고 관리하는가가 될 것입니다.
AI는 개발자를 대체하는 존재가 아니라, 더 좋은 개발을 돕는 강력한 도구입니다.
결국 좋은 개발자는 AI를 잘 사용하는 사람이 아니라, AI가 만든 결과를 올바르게 검증할 수 있는 사람이 아닐까요?
https://softwidesec.com/Appscan
AppScan과 관련된 문의사항은 소프트와이드시큐리티로 연락부탁드립니다.

요즘 개발을 하다 보면 AI 코딩 도구를 사용하지 않는 팀을 찾기가 더 어려워졌습니다.
GitHub Copilot, Claude Code, Cursor, Gemini CLI 등 다양한 AI 도구들이 등장하면서 코드를 작성하는 방식도 빠르게 바뀌고 있습니다.
예전에는 API 하나를 연동하는 데 몇 시간씩 걸렸다면, 이제는 프롬프트 한 줄만 입력해도 몇 초 만에 동작하는 코드가 만들어집니다.
개발 생산성만 놓고 보면 정말 놀라운 변화입니다.
하지만 한 가지 궁금증이 생겼습니다.
AI가 만들어 준 코드는 정말 믿어도 괜찮을까요?
동작하는 코드와 안전한 코드는 다르다
AI가 작성한 코드는 대부분 꽤 그럴듯합니다.
컴파일도 잘 되고, 실행도 되고, 테스트도 통과하는 경우가 많습니다.
그래서 많은 개발자가 자연스럽게 신뢰하게 됩니다.
하지만 보안 관점에서는 이야기가 조금 달라집니다.
예를 들어 AI가 작성한 코드에는 다음과 같은 문제가 숨어 있을 수 있습니다.
입력값 검증이 빠져 있는 경우
API Key나 비밀번호가 코드에 그대로 포함된 경우
오래된 라이브러리를 사용하는 경우
인증이나 권한 검증이 충분하지 않은 경우
이미 알려진 보안 취약점을 그대로 사용하는 경우
즉, '잘 동작한다'는 것과 '안전하다'는 것은 전혀 다른 문제입니다.
AI는 우리 회사의 보안 정책을 모른다
AI는 정말 똑똑합니다.
하지만 우리 회사의 개발 표준이나 보안 정책까지 이해하는 것은 아닙니다.
예를 들어 회사에서는 특정 암호화 라이브러리만 사용하도록 규정했더라도 AI는 인터넷에서 학습한 다른 라이브러리를 사용할 수도 있습니다.
또한 내부 코딩 규칙이나 컴플라이언스 요구사항도 AI가 자동으로 지켜주는 것은 아닙니다.
결국 AI는 가능성이 높은 코드를 생성할 뿐입니다.
그 코드가 우리 조직의 기준에 맞는지는 사람이 직접 확인해야 합니다.
AI 시대에도 보안의 기본은 변하지 않는다
AI가 등장했다고 해서 보안 원칙이 바뀐 것은 아닙니다.
오히려 더 중요해졌습니다.
개발자가 반드시 확인해야 하는 기본 사항은 여전히 같습니다.
✔ 입력값 검증(Input Validation)
✔ 인증(Authentication) 및 권한 관리(Authorization)
✔ 민감 정보 보호
✔ 안전한 예외 처리
✔ 검증된 라이브러리 사용
✔ 최소 권한 원칙 적용
AI는 이러한 내용을 자동으로 보장하지 않습니다.
그래서 개발자의 역할은 사라지는 것이 아니라 오히려 '코드를 작성하는 사람'에서 '코드를 검증하는 사람'으로 변화하고 있다고 생각합니다.
프롬프트도 보안이다
AI를 사용할 때 대부분 이렇게 요청합니다.
"로그인 API 만들어줘."
하지만 조금만 바꿔도 결과는 달라집니다.
예를 들어,
"Spring Security를 사용하고, 입력값 검증을 포함하며, OWASP Secure Coding Guide를 준수하고, 하드코딩된 Secret을 사용하지 않는 로그인 API를 작성해줘."
이처럼 보안 요구사항을 함께 전달하면 AI가 생성하는 코드의 품질도 훨씬 좋아집니다.
최근에는 Prompt Engineering도 개발 역량의 일부라고 이야기하는 이유가 여기에 있습니다.
좋은 프롬프트는 더 좋은 코드를 만들고, 더 안전한 결과를 만들어 줍니다.
AI는 확률적으로 답하지만, 보안은 확실해야 한다
AI의 가장 큰 특징은 확률 기반(Probabilistic) 으로 동작한다는 점입니다.
같은 질문을 입력해도 결과가 달라질 수 있습니다.
하지만 보안은 그렇지 않습니다.
보안은 "아마 괜찮을 것이다."가 아니라 반드시 검증되어야 하는 영역입니다.
그래서 AI가 작성한 코드를 그대로 사용하는 것은 위험합니다.
AI가 제안한 코드는 시작점일 뿐이고, 최종 검증은 반드시 사람이 수행해야 합니다.
AI 코드도 반드시 보안 테스트를 거쳐야 한다
AI가 작성했다고 해서 예외는 없습니다.
오히려 더 철저한 검증이 필요합니다.
개인적으로는 최소한 다음과 같은 절차는 반드시 거쳐야 한다고 생각합니다.
SAST(정적 애플리케이션 보안 테스트)
SCA(오픈소스 및 라이브러리 취약점 분석)
Secret Scan
Dependency Scan
Code Review
보안 정책 검사
AI는 코드를 생성하고,
보안 도구는 코드를 검증하며,
개발자는 최종 판단을 내리는 구조가 가장 이상적입니다.
AI 코드를 리뷰할 때 꼭 확인해야 할 체크리스트
AI가 작성한 코드를 Merge하기 전에 아래 항목을 한 번씩 확인해 보세요.
✅ 입력값 검증이 되어 있는가?
✅ 인증과 권한 처리가 올바른가?
✅ API Key나 비밀번호가 하드코딩되어 있지 않은가?
✅ 오래된 라이브러리를 사용하지 않는가?
✅ 오류 처리와 로그가 안전한가?
✅ 알려진 취약점은 없는가?
✅ 우리 조직의 개발 표준을 준수하는가?
✅ AI의 제안이 실제 테스트로 검증되었는가?
✅ 사람이 최종 리뷰를 완료했는가?
이 체크리스트만 습관처럼 적용해도 AI 코드의 품질은 크게 높아질 수 있습니다.
마무리
AI는 앞으로 소프트웨어 개발의 기본 도구가 될 가능성이 높습니다.
하지만 AI가 아무리 발전해도 변하지 않는 것이 하나 있습니다.
코드에 대한 최종 책임은 개발자에게 있다는 점입니다.
앞으로 중요한 것은 AI를 얼마나 많이 사용하는지가 아니라, AI가 만든 코드를 얼마나 안전하게 검증하고 관리하는가가 될 것입니다.
AI는 개발자를 대체하는 존재가 아니라, 더 좋은 개발을 돕는 강력한 도구입니다.
결국 좋은 개발자는 AI를 잘 사용하는 사람이 아니라, AI가 만든 결과를 올바르게 검증할 수 있는 사람이 아닐까요?
https://softwidesec.com/Appscan
AppScan과 관련된 문의사항은 소프트와이드시큐리티로 연락부탁드립니다.
