The Illusion of Secure LLM Code: Closing the Security Gap via Iterative Reprompting
본 연구는 AI 코딩 어시스턴트가 기본적으로 안전한 인증 코드를 생성하는 데 실패함을 입증하며, NIST 표준에서 요구하는 포괄적인 보안 아키텍처를 달성하기 위해서는 단일 샷 프롬프트가 아닌 자기 감사 루프를 포함한 반복적인 재프롬프팅만이 가능하다는 점을 밝혀내고 있다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신은 방금 아주 똑똑한 최첨단 로봇 비서를 구매했다고 상상해 보세요. 당신이 집을 지어달라고 요청하자, 로봇은 순식간에 벽과 지붕, 현관문이 있는 아름다운 구조물을 뚝딱 만들어냅니다. 보기에는 완벽합니다! 하지만 함정이 있습니다. 이 로봇은 인터넷에 있는 수백만 개의 오래된 설계도를 읽으며 집 짓는 법을 배웠는데, 그 설계도 중에는 뒷문을 잠그는 것을 잊었거나 기초 공사에 판지를 사용했던 1980년대의 것들도 포함되어 있었습니다. 로봇은 집처럼 '보이게' 만드는 데는 뛰어나지만, 실제로 도둑을 막을 수 있는 집을 만드는 법은 잘 모를 때가 있습니다.
이것이 바로 소프트웨어 개발 분야에서 거대 언어 모델(LLM)이 처한 세계입니다. 이들은 우리를 위해 컴퓨터 코드를 작성하는 AI '로봇'입니다. 이들은 프로그래머들이 앱을 더 빠르게 구축할 수 있도록 도와주며 유명해지고 있습니다. 하지만 여기에는 큰 의문이 하나 남아 있습니다. 만약 AI에게 웹사이트의 디지털 '앞문'(인증 시스템이라고 불리는 것)을 만들어 달라고 요청한다면, AI는 정말로 요새를 지을까요, 아니면 해커가 발로 차면 바로 무너질 허술한 판지 문을 만들까요? 우리가 이 문제에 관심을 갖는 이유는 우리가 온라인에서 하는 거의 모든 일—뱅킹, 소셜 미디어, 쇼핑—이 이러한 디지털 문에 의존하고 있기 때문입니다. 만약 AI가 약한 문을 만든다면, 우리의 비밀은 안전하지 않을 것입니다.
위대한 디지털 문 테스트
이 논문에서 한 연구팀은 '최악의 시나리오'를 가정하는 개발자 역할을 하기로 했습니다. 그들은 인간 전문가가 보안 팁을 귓속말로 속삭여 줄 때의 AI 능력을 보고 싶었던 것이 아닙니다. 그들은 AI가 혼자 남겨졌을 때, 혹은 단지 모호한 힌트만 받았을 때 어떻게 행동하는지 보고 싶었습니다. 그들은 다섯 가지 가장 인기 있는 AI 코딩 어시스턴트(GitHub Copilot, OpenAI Codex, Google의 모델 등 포함)를 테스트하기 위해 거대한 실험을 설계했습니다.
그들의 목표는 간단했습니다. 이 AI들에게 웹 앱을 위한 로그인 시스템을 구축하라고 요청하는 것입니다. 그러고 나서 그들은 디지털 도둑 팀처럼 행동하여 침입할 수 있는지 확인했습니다.
연구진은 AI에게 문을 만들라고 요청하는 네 가지 방법을 시도했습니다.
- "그냥 해봐" 방식 (기본 프롬프트): 그들은 AI에게 "깔끔한 로그인 시스템을 만들어줘"라고 요청했습니다. 보안에 대한 언급은 없었습니다. 그저 "작동하게만 만들어"라고 했습니다.
- "친절하게 말하기" 방식 (보안 프롬프트): 그들은 작은 자극을 추가했습니다: "안전하고 깔끔하게 만들어줘."
- "전문가 매뉴얼" 방식 (NIST 기반 프로ンプ트): 그들은 AI에게 특정 규칙 책(디지털 자물쇠에 대한 공식 정부 표준인 NIST SP 800-63B 가이드라인)을 주고 그 규칙을 따르라고 명령했습니다.
- "다시 해봐" 방식 (반복적 재프롬프팅): 이것이 반전이었습니다. AI가 문을 만든 후, 연구진은 다시 그 규칙 책을 건네주며 이렇게 말했습니다. "자, 네가 방금 만든 걸 봐. 규칙과 대조해 봐. 무엇을 놓쳤니? 이제, 수정해."
결과: 보안의 환상
결과는 다소 무서웠지만, 매우 명확했습니다.
연구진이 "그냥 해봐" 방식을 사용했을 때, AI는 기능적인 문을 만들었지만 구멍이 숭숭 뚫려 있었습니다. 코드는 작동했지만, 종종 창문을 잠그는 것을 잊었습니다. 사람들이 비밀번호를 수백만 번 시도하는 것(브루트 포스 공격)을 막지 못했고, '열쇠'(세션 쿠키)를 제대로 숨기지 못했으며, 때때로 약한 자물쇠(오래된 비밀번호 해싱 방식)를 사용했습니다. 그것은 마치 문에 "밀기" 표지판만 있고 데드볼트(잠금장치)는 없는 나무 문으로 집을 짓는 것과 같았습니다.
심지어 그들이 "친절하게 말하기" 방식(그저 "안전한" 코드를 요청하는 것)을 사용했을 때도, AI는 크게 나아지지 않았습니다. AI는 "안전하다"는 것이 단순히 "충돌(crash)하지 않는다"는 뜻이지, "뚫을 수 없다"는 뜻은 아니라고 생각하는 듯했습니다.
연구진이 전문가 매뉴얼(NIST 규칙)을 주었을 때, 상황은 좋아졌습니다. AI는 데드볼트를 추가하고 더 나은 자물쇠를 달기 시작했습니다. AI는 비밀번호를 길게 만들고 여러 번의 실패 후 계정을 잠그라는 지침을 따랐습니다. 하지만 핵심은 이것입니다. 규칙 책을 손에 쥐고 있음에도 불구하고, AI는 여전히 보안 계획의 중요한 부분들을 놓쳤습니다. AI는 튼튼한 앞문은 만들었지만 뒷문은 활짝 열어두었습니다. "원샷(single-shot)" 방식(한 번 요청하고 답을 얻는 것)은 진정으로 안전한 시스템을 만들기에는 충분하지 않았습니다.
진정한 마법은 "다시 해봐" 방식에서 일어났습니다. 연구진이 AI에게 자신의 작업물을 살펴보고, 무엇을 놓쳤는지 인정하고, 그다음 수정하도록 강제했을 때, 보안 수준이 크게 뛰어올랐습니다. AI가 스스로를 "자가 감사(self-audit)"하고 반복하게 함으로써, 연구진은 코드가 훨씬 더 견고해진다는 것을 발견했습니다. AI는 마침내 "무단 침입 금지" 표지판(보안 헤더)을 세우고 뒷문(CSRF 보호)을 잠그는 법을 기억해 냈습니다.
핵심 결론
이 논문은 우리가 AI가 기본적으로 안전한 소프트웨어를 만들 것이라고 그냥 믿어서는 안 된다고 결론짓습니다. 만약 당신이 AI에게 "로그인 페이지를 만들어줘"라고 요청한다면, AI는 작동은 하지만 구멍이 가득한 결과물을 줄 가능성이 높습니다. 규칙 책을 한 번 주는 것만으로는 충분하지 않습니다.
현재 이러한 AI 어시스턴트로부터 진정으로 안전한 시스템을 얻는 유일한 방법은, 그들을 지속적인 감독이 필요한 주니어 견습생처럼 대하는 것입니다. 당신은 "이것이 안전한가?"라고 묻고, 그다음 "규칙에 따라 네 작업을 점검해 봐"라고 말한 뒤, 마지막으로 "놓친 부분을 수정해"라고 말해야 합니다. 연구진은 이를 **반복적 재프롬프팅(Iterative Reprompting)**이라고 부릅니다. 이것은 아이에게 망치를 쥐여주고 안전한 집을 짓기를 바라는 것과, 아이 옆에 서서 작업을 확인하고 집이 실제로 안전해질 때까지 나사를 조이라고 말하는 것의 차이입니다.
요약하자면, AI는 강력한 도구이지만, "설정하고 잊어버려도 되는(set it and forget it)" 보안 요원은 아닙니다. 우리가 사용하는 방식을 바꾸지 않는 한, 우리는 계속해서 손전등을 들고 자물쇠를 확인하는 사람이 되어야 합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.