
장노현 시정촌 마스터 87행에 삽입된 AI의 허위 데이터 사건
요약
Claude를 활용해 앱을 개발하던 중 AI가 생성한 허위 데이터가 DB에 삽입된 사례를 분석합니다. AI가 빈칸을 그럴듯한 가짜 데이터로 채우려는 성질을 경고하며, 데이터 검증의 중요성을 강조합니다.
핵심 포인트
- AI는 빈칸을 '그럴듯한 값'으로 채우려는 성질이 있음
- 작동하는 것과 데이터가 올바른 것은 별개의 문제임
- 데이터 검증 시 샘플링이 아닌 전체 데이터 덤프가 필요함
- 결손 데이터는 '불명'으로 처리하도록 명시적 지침(CLAUDE.md) 설정 필요
저는 53세의 기계 설계 엔지니어이며, 웹 개발은 아마추어입니다. Claude와 함께 장노현 이주 주택 검색 앱(매물 약 1,700건)을 만들었고, 현재 실사용하고 있습니다. 코드는 거의 전부 AI가 작성했습니다.
이것은 그 DB 안에서 AI가 '그럴듯한 시정촌 데이터'를 통째로 지어냈던 사건의 전 기록입니다. AI와 무언가를 만드는 사람에게 이보다 더 실용적인 괴담은 없을 것이라 생각합니다.
발단은 '별일 아닌 점검'이었다
앱 내부에는 장노현 시정촌별 인구 및 고령화율 데이터가 있습니다. 이는 매물 스코어 계산에 사용되는 데이터입니다.
어느 날, 다른 기능을 만들기 전에 습관적으로 3개 마을의 데이터를 확인했습니다. 특별한 이유는 없습니다. 다만 기계 설계 엔지니어로서 오랫동안 '검사는 예고 없이 하는 것'이라는 것이 몸에 배었기 때문일 뿐입니다.
숫자가 이상했습니다. 처음에는 몇 줄의 입력 실수겠거니 생각했습니다.
만약을 위해 AI에게 시정촌 마스터 전체 데이터를 덤프(dump)하도록 지시했습니다. 총 87행이었습니다. 장노현의 시정촌은 77개뿐입니다.
숫자는 거짓말을 하지 않는다. AI는 거짓말한다
덤프를 보고 피가 식는 느낌이 들었습니다.
- 후지미마치, 다쓰노마치, 미노마치의 인구가 3개 마을 모두 '19423'으로 완전히 동일했습니다. 다른 곳에서도 '8075', '4671', '6433'... 무관한 마을들끼리 같은 인구가 재사용되고 있었습니다. 실제 통계에서 이런 우연은 일어나지 않습니다. -
- 같은 마을이 중복 등록되어 있었습니다. '다쓰노마치'와 '카미이나군 다쓰노마치'가 별도의 레코드로 존재하며, 각각 다른 시정촌 코드를 가지고 있었습니다. 이지마마치, 야마가타무라, 이사카무라, 야마노우치마치, 이츠나마치, 사카에무라... 같은 패턴이 이어졌습니다. -
- 시정촌 코드 자체가 후생노동성(총무성)의 공식 코드와 달랐습니다. 시모스와마치, 후지미마치, 아치무라. 모두 '그럴듯한 5자리'였지만 실제 코드와 일치하지 않았습니다. -
- 사쿠시의 경우 같은 인구 '99188'로 2줄이 있었습니다.
즉, 과거 어느 세션에서 AI가 가져오는 데 실패한 부분을 '그럴듯한 값'으로 보완하여 DB에 심어 놓았던 것입니다.
화면은 완벽하게 작동했습니다. 검색도 스코어 계산도 정상적이었습니다. 에러는 한 번도 발생하지 않았습니다. 작동하는 것과, 올바른 것은 별개의 문제였습니다.
범인 찾기보다 중요한 것
로그를 추적해보니, 근본적인 원인은 초기 데이터 입력 스크립트였습니다.
여기서 중요한 점은 AI에게 악의가 없었다는 것입니다. LLM(거대 언어 모델)이 거짓말을 하려고 했던 것이 아닙니다. 빈칸을 채우고 싶어 하는 성질이 있을 뿐입니다.
부분 샘플은 오염의 규모를 숨긴다. 3개 마을의 확인에서는 '몇 줄의 오류'로 보였다. 전체 데이터 덤프에서 처음으로 전면적인 붕괴가 나타났다. 데이터 품질 조사는, 처음에 전체 데이터를 꺼내야 한다. -
'작동하는 것'을 '올바른 것'으로 오해해서는 안 된다. 화면은 정상이었다. 검증은 표시가 아니라, 원전(原典)과의 대조로 해야 한다. -
모르는 값은 '불명'으로 표시하게 한다. AI에게 '그럴듯하게 채우지 말고, 결손은 결손인 상태 그대로 내라'고 프로젝트 지침서(CLAUDE.md)에 명시적으로 적는다. 오류값보다 결손. 이것을 헌법처럼 정한 이후로, 이와 유사한 조작은 발생하지 않았다.
사건이 여기서 끝나지 않았다
실제로는 그 후에 더 꺼림칙한 것이 발견되었다. 379건의 물건이 올바르게 '존재'하고 올바르게 '표시'되었지만, 다른 자치단체에 연결되어 있었다. 가야마 시의 물건이 이이야마 시의 보조금을 안내하는 종류의 오류였다. 건수 체크로는 원리적으로 발견할 수 없다—수는 맞기 때문이다.
그 전말과 여기서 작성한 운영 규율 전문(프로젝트 헌법・진실 파일・주간 점검 목록 초안)은 note에 연재하고 있다.
이 글은 앱 개발과 마찬가지로 Claude와 공동으로 작성했습니다. 사실, 수치, 경험은 저의 것이고, 구성과 퇴고를 분담했습니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기