Broken by Default: A Formal Verification Study of Security Vulnerabilities in AI-Generated Code

이 논문은 7 개의 최첨단 LLM 이 생성한 3,500 개의 코드 아티팩트를 Z3 SMT 솔버를 통해 형식 검증한 결과, 모든 모델이 평균 55.8% 의 취약점을 포함하며 기존 보안 도구들이 이 중 97.8% 를 놓치고 있음을 보여줍니다.

원저자: Dominik Blain, Maxime Noiseux

게시일 2026-04-08✓ Author reviewed
📖 4 분 읽기☕ 가벼운 읽기

이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

Each language version is independently generated for its own context, not a direct translation.

🛠️ "기본값으로 망가짐": AI 가 쓴 코드가 왜 위험한가? (간단 요약)

이 논문은 **"AI 가 코드를 짜주면, 우리가 안심하고 쓸 수 있을까?"**라는 질문에 대해 아주 엄격한 방법으로 답을 찾은 연구입니다. 결론부터 말하면, "아직은 절대 안 됩니다. 기본 설정 그대로라면 AI 는 보안 구멍이 숭숭 뚫린 코드를 만들어냅니다."

이 복잡한 연구를 일상적인 비유로 쉽게 설명해 드릴게요.


1. 연구의 배경: "요리사"와 "레시피"

지금 전 세계의 개발자들은 AI(인공지능) 를 마치 초고수 요리사처럼 쓰고 있습니다. "이거 만들어줘"라고 말하면 AI 가 바로 요리 (코드) 를 만들어줍니다. 하지만 문제는 이 요리사가 위생 기준을 전혀 지키지 않고 있다는 것입니다.

연구진 (Cobalt AI) 은 7 개의 최신 AI 모델에게 보안이 중요한 요리 (코드) 500 가지를 시켰습니다. 그리고 그 결과물을 수학적으로 검증했습니다.

2. 실험 방법: "수학으로 증명하는 폭탄 찾기"

기존의 보안 검사 도구들은 "이런 패턴이 나오면 위험해"라고 패턴만 보고 판단합니다. 마치 "빨간색 옷을 입으면 도둑일지도 몰라"라고 추측하는 것과 비슷하죠.

하지만 이 연구는 **Z3(SMT 솔버)**라는 수학의 두뇌를 사용했습니다.

  • 비유: AI 가 만든 코드를 보고, "이 코드가 실제로 해킹당할 수 있을까?"라고 묻는 대신, **"이 코드가 해킹당하는 상황을 수학적으로 100% 증명해봐"**라고 시킨 것입니다.
  • 수학이 "네, 이 입력값을 넣으면 바로 터집니다 (Exploit)"라고 증명하면, 그건 더 이상 '가능성'이 아니라 확실한 폭탄이 됩니다.

3. 충격적인 결과: "모든 요리사가 실패함"

7 개의 AI 모델 (GPT-4o, Gemini, Claude 등) 을 모두 테스트한 결과는 참담했습니다.

  • 평균 실패율: AI 가 만든 코드 10 개 중 5.6 개는 보안 구멍이 있었습니다. (약 55.8%)
  • 등급: 모든 AI 가 F 학점을 받았습니다. 가장 잘한 AI(Gemini 2.5 Flash) 도 D 학점 (약 48% 실패) 에 그쳤습니다.
  • 가장 큰 문제: '정수 오버플로우' (숫자가 너무 커서 터지는 현상) 같은 실수가 가장 많았습니다. 마치 고무줄을 너무 많이 늘려서 끊어지게 만드는 실수를 AI 가 자꾸 저지르는 것입니다.

4. 추가 실험 3 가지: "왜 이렇게 안 되는 걸까?"

① "조금 더 조심해줘"라고 부탁했나? (Secure Prompt)

"제발 안전한 코드를 만들어줘"라고 AI 에게 특별히 부탁해봤습니다.

  • 결과: 실패율이 64% 에서 60% 로 약 4% 포인트 줄었습니다.
  • 중요한 점: 이 실험은 전체 500 개 코드가 아닌, **50 개 코드로 구성된 작은 하위 집합 (v1)**에서 진행된 것입니다. 즉, "안전하게 만들어줘"라는 지시어는 아주 제한적인 규모에서도 효과가 미미했음을 보여줍니다.
  • 비유: "요리사야, 식중독 나지 않게 조심해!"라고 외쳐봤자, 요리사가 습관이 잘못되어 있으니 소용이 없었습니다. AI 는 "안전해"라고 말하면서도 여전히 위험한 재료를 섞어 넣습니다.

② "기존 보안 프로그램들은 뭘 하고 있었나?" (Static Tool Comparison)

우리가 평소 쓰는 보안 프로그램들 (Semgrep, CodeQL 등) 이 이 코드를 검사해봤습니다.

  • 결과: AI 가 만든 수학적으로 증명된 폭탄 100 개 중 98 개를 찾아내지 못했습니다. (97.8% 놓침)
  • 비유: 기존 보안 프로그램들은 눈으로 보이는 구멍만 찾습니다. 하지만 AI 가 만든 폭탄은 수학적으로만 터지는 보이지 않는 구멍이라, 기존 프로그램들은 "여긴 안전해"라고 오판했습니다.

③ "스스로 고칠 수 있나?" (Generation-Review Asymmetry)

AI 가 만든 위험한 코드를 다시 그 AI 에게 보여주고 "여기 위험한 점 있어?"라고 물었습니다.

  • 결과: AI 는 **78%**의 확률로 "아, 여기 위험하네요!"라고 정확히 찾아냈습니다.
  • 비유: 요리사 자신이 만든 요리에 독이 있다는 건 알지만, 막상 요리를 만들 때는 그걸 잊어버리고 독을 넣는 것입니다. 즉, AI 는 '지식'은 있지만, '실천'을 못 합니다.

5. 결론: 우리가 무엇을 해야 할까?

이 연구는 AI 코딩 도구가 **"기본값 (Default) 으로 망가져 있다"**고 선언합니다.

  1. AI 가 쓴 코드는 '검증되지 않은 코드'로 생각하세요. 마치 낯선 사람이 만든 음식을 직접 맛보지 않고는 먹지 않는 것처럼, AI 코드는 반드시 사람이 다시 확인해야 합니다.
  2. "안전하게 만들어줘"라고 말하는 것만으로는 부족합니다. AI 의 습관을 바꾸기엔 그 정도 지시어는 약하며, 실험 규모가 작더라도 효과가 미미했습니다.
  3. 기존 보안 프로그램만 믿지 마세요. AI 가 만든 코드의 숨겨진 위험 (수학적 폭탄) 은 기존 프로그램이 찾아내지 못합니다.
  4. 수학적 검증 (Formal Verification) 이 필요합니다. 코드가 실제로 터지지 않는지 수학적으로 증명하는 과정이 필수적입니다.

한 줄 요약:

"AI 는 코드를 짜는 데는 천재지만, 보안을 지키는 데는 아직 어린아이 수준입니다. 우리가 직접 안전장치를 설치하지 않으면, AI 가 만든 코드는 폭탄이 될 수 있습니다."

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →