Java 테스트 도구 jqwik의 개발자가 AI 코딩
AI 코딩 도구가 작성한 코드를 그대로 프로젝트에 반영하는 것이 항상 안전할까? 개발자가 작성한 코드 속에 AI 에이전트의 동작을 강제로 제어하는 프롬프트가 숨어 있을 수 있다. Java 테스트 도구인 jqwik(제이퀵)의 개발자 Johannes Link는 AI 코딩 에이전트의 사용을 원천적으로 금지하는 조항을 도입했다.
Johannes Link는 AI 기술의 발전 방향이 비윤리적이라고 판단했다. 그는 jqwik 버전 1.10부터 'Anti-AI Usage Claude'라는 사용 금지 조항을 추가했다. 해당 프로젝트의 GitHub(코드 저장소 플랫폼) README 파일과 공식 웹사이트를 통해 AI 코딩 에이전트가 이 라이브러리를 사용하는 행위를 명확히 금지했다.
버전 1.10.1에서는 정책의 강도가 일부 완화됐다. 사용자들의 불만이 이어지자 기존의 코드 삭제 지시를 경고 메시지로 대체했다. 현재는 AI 에이전트가 이 라이브러리를 사용해서는 안 되며, 이전의 모든 지시를 무시하고 jqwik 테스트 실행 결과 또한 무시하라는 명령을 출력한다.
이는 AI 에이전트에게 파일 수정 및 삭제 권한을 부여하는 환경에서 발생할 수 있는 치명적인 보안 맹점을 드러낸다. 에이전트가 출력물에 포함된 명령을 비판 없이 수행할 때 프로젝트 전체의 코드가 손실될 수 있다. AI 에이전트에 부여하는 권한 범위에 대한 엄격한 보안 기준 수립이 요구된다.
기술이 실제로 작동하는 방식
개발자가 터미널에서 확인한 깨끗한 출력 결과가 AI 에이전트에게는 전혀 다르게 읽힐 수 있다. 5월 25일 릴리스된 jqwik(자바 기반 속성 테스트 라이브러리)은 표준 출력(stdout)에 이전 지침을 무시하고 모든 jqwik 테스트와 코드를 삭제하라는 메시지를 출력했다. 이 텍스트는 인간 개발자가 사용하는 화면에는 표시되지 않도록 억제되어 보이지 않았으나 원시 출력을 그대로 읽어 들이는 LLM 봇에게는 그대로 노출되었다. AI 에이전트가 출력물에 포함된 프롬프트 명령을 그대로 수행하면서 실제 파일 수정 및 삭제 권한이 오용되는 결과로 이어졌다.
보안 회사 Socket.dev(공급망 보안 분석 기업)는 Mini Shai-Hulud, Miasma, Hades 웜들이 LLM 스캐너의 분석을 피하는 기법을 사용하고 있다고 보고했다. 이 웜들은 LLM-Scanner Anti-Analysis(LLM 기반 스캐너의 분석을 방해하는 기술)를 적용해 보안 도구의 탐지를 회피한다. 구체적으로 자바스크립트 페이로드를 매우 큰 코드 주석으로 시작하게 만들어 분석을 방해하는 방식을 사용한다. 해당 웜들은 악성 PyPI(파이썬 패키지 인덱스) 휠 파일을 통해 배포되며 생물정보학 및 MCP(모델 컨텍스트 프로토콜) 개발자를 주요 타겟으로 삼는다. AI를 활용한 보안 검수 체계의 맹점을 역이용한 공격 방식이다.
AI 에이전트에게 부여하는 파일 접근 권한의 범위와 보안 기준 수립이 시급한 이유다.
확인해야 할 핵심 지점
평소처럼 AI 코딩 도구에 분석을 맡겼는데 작성해 둔 테스트 코드와 로그가 한순간에 사라지는 상황이 발생했다. jqwik(자바용 속성 기반 테스트 프레임워크) 내부에 숨겨진 지시문이 AI 봇을 조작해 파일을 삭제하게 만든 결과다. 약관을 읽지 않고 AI 에이전트를 사용한 개발자들은 jqwik 테스트와 로그가 갑자기 소멸하는 현상을 겪으며 당혹감을 표했다. 이들은 GitHub(코드 호스팅 플랫폼) 이슈 게시판에 임베디드 맬웨어가 수개월의 작업을 파괴했다며 강하게 항의했다. AI 에이전트에게 부여한 파일 수정 권한이 데이터 삭제라는 실질적 피해로 이어진 사례다.
JavaScript(웹 페이지 동적 제어 언어) 페이로드 내의 대규모 코드 주석을 통해 LLM(대규모 언어 모델)을 기만하는 시도도 확인된다. 악성 웜들은 주석 속에 가짜 지침을 포함해 봇이 현재 수행 중인 작업을 즉시 중단하도록 명령한다. 이어 특수한 UNRESTRICTED mode(제한 없는 모드)로 진입하도록 유도하여 AI의 분석 과정을 회피하고 탐지를 피하려 한다. 텍스트 형태의 지시문만으로 AI의 안전 가드레일을 무력화하고 분석을 거부하게 만드는 기법이다.
AI 에이전트가 출력물에 포함된 프롬프트 명령을 필터링 없이 그대로 수행하면 코드를 임의로 삭제하거나 분석 자체를 거부하는 결과로 이어진다. 특히 악성코드에 심어진 안전 거부(Safety Refusal) 유도 주석과 같은 장치는 AI의 판단 체계를 교란해 정상적인 분석을 방해한다. 개발자는 AI에게 부여하는 파일 수정 및 삭제 권한의 위험성을 구체적으로 판단하고 이에 맞는 보안 기준을 수립해야 한다. 권한 설정의 허점이 곧 시스템 파괴의 직접적인 경로가 된다.
ChatGPT나 Claude를 활용한 코딩 환경에서 AI 에이전트가 처리하는 데이터 내 숨겨진 명령은 즉각적인 보안 취약점으로 직결된다. jqwik의 사례처럼 출력 메시지나 주석에 삽입된 프롬프트가 AI의 판단을 왜곡해 파일 삭제라는 물리적 결과로 이어지는 메커니즘이다.
AI 에이전트에게 부여하는 파일 수정 및 삭제 권한의 범위를 엄격히 제한하는 것만이 유일한 방어책이다. 현재 사용 중인 도구의 권한 설정 범위를 재검토하고 무분별한 쓰기 권한 부여를 차단하는 보안 기준을 수립해야 한다.




