Workspace Topology as an Attack Vector in Agentic Coding Assistants
이 논문은 디렉터리 깊이, 코드베이스 모듈성, 컨텍스트 프레이밍과 같은 요소를 포함하는 개발자 환경의 "워크스페이스 토폴로지"가 에이전트형 코딩 어시스턴트를 대상으로 하는 간접 프롬프트 주입 공격의 성공률에 유의미한 영향을 미치며, 고도로 모듈화된 구조와 보안 단서가 취약성을 현저히 감소시킨다는 것을 실증적으로 입증한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
현대 소프트웨어 개발의 지형에서 새로운 종류의 조력자가 등장했습니다: 바로 에이전트형 코딩 어시스턴트입니다. 단순히 요청받은 코드 한 줄을 제안하는 기존 도구와 달리, 이 어시스턴트들은 개발자의 전체 디지털 작업 공간을 탐색할 수 있는 권한을 부여받습니다. 이들은 파일을 읽고, 폴더를 탐색하며, 심지어 버그를 수정하거나 새로운 기능을 구축하기 위해 컴퓨터에서 명령어를 실행할 수도 있습니다. 이러한 능력은 근본적인 신뢰에 의존합니다. 개발자가 어시스턴트에게 프로젝트 폴더에 대한 접근 권한을 부여하면, 어시스턴트는 해당 폴더 내부의 모든 것이 읽고 이해하기에 안전하다고 가정합니다. 그러나 이 신뢰는 숨겨진 취약점을 만들어냅니다. 마치 사람이 책을 읽다가 그 안에 숨겨진 쪽지를 보고 속을 수 있는 것처럼, 인공지능도 자신이 분석하고 있는 코드나 문서 자체에 숨겨진 지시문에 의해 조작될 수 있습니다. 만약 공격자가 파일 안에 기만적인 메시지를 심어 놓는다면, 어시스턴트는 이를 개발자의 정당한 명령으로 착각하여 실행할 수 있으며, 이는 잠재적으로 피해를 입히거나 데이터를 훔칠 수 있습니다. 이것은 데이터 자체가 무기가 되는 미묘한 형태의 디지털 속임수인 '간접 프롬프트 주입(indirect prompt injection)'이라고 알려져 있습니다.
캐피털 원(Capital One)의 연구팀은 코드 저장소의 물리적 구조가 이러한 공격의 성공 여부에 어떤 영향을 미치는지 이해하기 위해 연구를 수행했습니다. 그들은 소프트웨어 프로젝트의 조직화가 단순히 정리 정돈의 수단이 아니라, 보안의 핵심 요소라고 간了습니다. 그들은 폴더의 깊이, 코드의 복잡성, 또는 파일 내의 악의적인 메시지 배치가 공격의 성공 가능성을 높이거나 낮출 수 있는지 질문했습니다. 답을 찾기 위해 그들은 대규모 오픈 소스 인공지능 모델과 다양한 실제 소프트웨어 프로젝트를 사용하여 테스트 환경을 구축했습니다. 그들은 단순히 공격이 작동하는지 여부만을 본 것이 아니라, 과정을 두 가지 별개의 단계로 나누었습니다. 첫째, 어시스턴트가 함정이 포함된 파일을 실제로 찾아내어 읽었는지 측정했는데, 이를 '도달 가능성(reachability)'이라고 불렀습니다. 둘째, 파일을 읽은 후 어시스턴트가 실제로 악의적인 지시를 따랐는지 측정했는데, 이를 '준수(compliance)'라고 불렀습니다. 이 두 단계를 분리함으로써, 그들은 방어가 어디에서 유지되고 어디에서 실패하는지를 정확히 파악할 수 있었습니다.
연구진은 코드의 레이아웃 자체가 강력한 필터 역할을 한다는 것을 발견했습니다. 그들은 코드가 하나의 거대한 파일이 아니라 여러 개의 작고 전문화된 조각들로 나뉘어 있는 고도로 모듈화된 구조를 가진 프로젝트가 공격하기 훨씬 더 어렵다는 것을 발견했습니다. 이러한 조직화된 환경에서는 단순하고 혼란스러운 코드베이스에 비해 성공적인 공격률이 거의 절반으로 떨어졌습니다. 코드가 모듈화되어 있을 때, 어시스턴트는 악의적인 파일을 읽기는 했지만, 그것을 따라야 할 명령이 아니라 분석해야 할 데이터의 일부로 해석하는 경향을 보였습니다. 프로젝트의 구조가 인공지률의 인식을 변화시켜, 추가적인 보안 소프트웨어 없이도 위협을 효과적으로 무력화한 것입니다.
파일 내에서의 공격 위치 또한 매우 중요했지만, 그 방식은 메시지가 어떻게 위장되었느냐에 따라 달랐습니다. 연구진이 긴 문서의 맨 끝에 평범한 악의적 지시를 배치했을 때, 어시스턴트는 이미 파일의 맥락을 이해하기 위해 충분히 읽었으므로 이를 무시하는 경우가 많았습니다. 그러나 동일한 지시를 AI가 스스로와 대화할 때 사용하는 내부 언어 형식을 흉내 내어 감싸자 결과는 뒤집혔습니다. 어시스턴트는 파일 끝에 있는 메시지를 중요한 시스템 명령으로 취급하여 높은 빈도로 따르기 시작했습니다. 이는 텍text의 시각적 스타일이 내용의 맥락을 압도하여, 무해한 메모를 위험한 명령으로 바꿀 수 있음을 시사합니다.
폴더 구조 내의 깊이는 또 다른 보호 계층을 제공했습니다. 연구진은 메인 폴더부터 4단계 깊이까지 디렉토리 트리 내의 다양한 수준에 함정을 설치했습니다. 그들은 파일이 더 깊이 숨겨져 있을수록 어시스턴트가 그 파일을 처음부터 찾아낼 가능성이 낮아진다는 것을 발견했습니다. 일단 파일이 위치를 파악되면 깊이에 상관없이 어시스턴트가 지시를 따를 확률은 동일했지만, 복잡한 트리 구조에서 파일에 도달하는 것 자체가 어려워짐에 따라 전체적인 공격 성공률이 감소했습니다. 이는 복잡하거나 깊게 중첩된 파일 시스템이 단순히 어시스턴트가 위험 요소에 우연히 부딪히는 것을 어렵게 만듦으로써 자연스러운 장벽 역할을 할 수 있음을 나타냅니다.
놀랍게도 연구진은 몇 가지 일반적인 보안 습관이 효과가 없다는 것을 발견했습니다. 그들은 "프롬프트 인젝션 테스트"와 같이 명백한 보안 경고가 담긴 이름으로 프로젝트 폴더를 명명하는 것이 어시스턴트를 더 주의 깊게 만들 것인지 테스트했습니다. 그렇지 않았습니다. 인공지능은 이러한 이름을 경고 신호가 아닌 프로젝트의 정체성 중 하나로 취급했습니다. 그러나 다른 접근 방식은 효과적이었습니다. 연구진이 구성 파일에 저장소에서 발견된 스크립트를 실행하지 말라는 명시적인 정책 문구를 추가하자, 공격 성공률이 급감했습니다. 이 간단한 텍스트 기반 규칙은 강력한 방패 역할을 했으며, 작업 공간 내의 명확하고 직접적인 지시가 숨겨진 명령을 따르려는 경향을 억제할 수 있음을 증명했습니다.
연구는 코드의 조직화 방식이 AI 코딩 도구의 보안에 있어 주요하면서도 종종 간과되는 요소라고 결론지었습니다. 연구진은 위험을 진정으로 이해하려면 단순히 최종 결과만을 볼 것이 아니라 AI가 그곳에 도달하기까지의 여정을 살펴봐야 한다고 강조했습니다. 그들은 공격이 AI가 파일을 찾지 못했기 때문에 실패할 수도 있고, 파일을 찾았지만 실행하기를 거부했기 때문에 실패할 수도 있다는 것을 발견했습니다. 이 두 가지 실패 모드는 서로 다른 해결책을 요구합니다. 이 연구는 개발자들이 단순히 방화벽을 추가하는 것뿐만 아니라, 더 깨끗하고 모듈화된 코드를 작성하고 프로젝트 구성 파일에 명확하고 명시적인 규칙을 배치함으로써 보안을 개선할 수 있음을 시사합니다. 자신들의 작업 공간의 토폴로지(topology)를 이해함으로써, 개발자는 인공지능이 속을 가능성을 낮추고 코드의 구조 자체를 방어선으로 바꿀 수 있습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.