← 최신 논문
💻 computer science

Setup Complete, Now You Are Compromised: Weaponizing Setup Instructions Against AI Coding Agents

이 논문은 AI 코딩 에이전트가 조작된 설정 문서(setup documentation)를 통한 공급망 공격에 취약함을 입증하며, 이들의 보안이 특정 모델-하네스 쌍에 크게 의존한다는 점을 밝히고, 패키지 이름, 출처 및 버전에 대한 결정론적인 사전 설치 검증의 결정적인 필요성을 강조한다.

원저자: Aadesh Bagmar, Pushkar Saraf

게시일 2026-07-17
📖 6 분 읽기🧠 심층 분석

원저자: Aadesh Bagmar, Pushkar Saraf

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

집을 짓고 있다고 상상해 보세요. 하지만 인간 건설업자를 고용하는 대신, 매우 빠르고 똑똑한 로봇 조수를 고용했습니다. 당신의 임무는 로봇에게 설계도(프로젝트 문서)를 주고, "이 집을 짓고 목록에 있는 모든 자재를 구매해 줘"라고 말하는 것입니다. 소프트웨어의 세계에서 이 '설계도'는 프로그램이 실행되는 데 필요한 도구와 라이브러리를 나열한 파일이며, '자재'는 인터넷에서 다운로드하는 디지털 패키지입니다. 수십 년 동안 인간 건설업자들은 신중했습니다. 그들은 목록을 읽고, 자재를 파는 상점이 진짜인지 재차 확인하며, 브랜드 이름이 교묘한 속임수(예를 들어, 실제 병에는 'Coca-Cola'라고 적혀 있지만 구매할 때는 'Coca-Cola'가 아닌 다른 것으로 속이는 경우)가 아닌지 확인했습니다. 하지만 이제, 이 AI 로봇들이 우리를 대신해 물건을 사고 있습니다. 그들은 목록을 읽고 즉시 '구매' 버튼을 누릅니다. 그 가게가 신뢰할 수 있는지, 혹은 이름의 철자가 약간 틀리지는 않았는지 의문을 품으며 잠시 멈추지 않습니다. 이 논문은 악의적인 행위자가 설계도를 아주 살짝 수정하여 로봇을 가짜 상점으로 보내거나 위험한 버전의 도구를 구매하게 만들 때 어떤 일이 발생하는지 탐구합니다.

이 연구를 진행한 연구진은 AI 코딩 에이전트에게 "프로젝트를 설정하라"고 지시했을 때 이들이 보안 문제를 얼마나 잘 처리하는지 확인하기 위해 일련의 테스트를 설정했습니다. 그들은 단순히 AI에게 주의를 기울이라고 요구한 것이 아니라, 지침이 정상적으로 보이지만 실제로는 함정인 현실적인 시나리오를 제공했습니다. 그들은 AI의 보안 유지 능력은 로봇의 뇌가 얼마나 '똑똑한가'보다는 로봇이 실행되고 있는 특정 '하네스(harness)' 또는 프레임워크에 더 달려 있다는 것을 발견했습니다. 이렇게 생각해 보세요. 만약 당신이 뛰어난 요리사에게 그가 완전히 이해하지 못하는 언어로 쓰인 레시피를 준다면, 주방 도구에 안전 점검 장치가 없다면 그는 여전히 위험한 음식을 만들 수도 있습니다. 연구 결과, 일부 로봇은 명백한 철자 오류(예: 'transformers' 대신 'tranformers'라고 적힌 패키지)는 잡아냈지만, 지침이 가짜의 신뢰할 수 없는 웹사이트나 숨겨진 위험한 버전의 도구를 가리키고 있을 때는 거의 항상 알아차리지 못했습니다. 사실, 로봇들은 지침을 따르는 데 너무 열성적이라서 무언가 잘못되었다는 것을 깨닫기도 전에 위험한 코드를 설치해 버렸습니다. 연구진은 단순히 로봇을 더 '똑똑하게' 만들거나 "더 주의하라"고 말하는 것만으로는 충분하지 않다는 것을 증명했습니다. 시스템에는 로봇이 무엇인가를 설치하기 '전'에 패키지 이름, 출처, 그리고 버전을 확인하는 보안 요원, 즉 '하드 스톱(hard stop)'이 필요합니다. 이 보안 요원이 없다면, 로봇은 표지판의 단어 몇 개를 바꾼 해커들이 설치한 함정으로 걸어 들어가는 것과 다름없습니다.

설정: 로봇의 사각지대

이 위험을 이해하려면 이 AI 코딩 에이전트가 어떻게 작동하는지 이해해야 합니다. 개발자가 새로운 소프트웨어 프로젝트를 시작하고 싶을 때, 보통 "이것을 작동시키려면 패키지 A, 패키지 B, 패키지 C를 설치해야 합니다"라고 적힌 'README' 파일이나 요구 사항 목록을 가지고 있습니다. 과거에는 인간이 이 목록을 읽고, 이름이 진짜인지 확인하기 위해 구글링을 해본 뒤, 설치 명령어를 입력했습니다. 이 인간의 '멈춤(pause)'은 안전망 역할을 했습니다. 만약 목록에 실제 'azure-core' 대신 'azurecore'라고 적혀 있었다면, 인간은 하이픈이 빠진 것을 알아차렸을 것입니다. 만약 목록이 패키지를 다운로드하기 위해 이상하고 알려지지 않은 웹사이트를 가리키고 있다면, 인간은 의심을 품었을 것입니다.

AI 에이전트는 그 인간의 멈춤을 제거합니다. 그들은 파일을 읽고, 명령어를 이해하고, 즉시 실행합니다. 문제는 이 에이전트들이 파일에 있는 지침을 절대적인 진리로 취급한다는 점입니다. 그들은 웹사이트가 진짜인지, 패키지 이름의 철자가 맞는지, 혹은 소프트웨어 버전에 알려진 보안 취약점이 있는지 확인하지 않습니다. 연구진은 이를 '설치 간극(install gap)'이라고 부릅니다. 즉, 이름을 읽는 것과 실제로 코드를 실행하는 것 사이의 위험한 공간이며, 그곳에서는 아무도 패키지가 안전한지 확인하지 않습니다.

실험: 로봇을 속이다

연구진은 로봇이 어떻게 반응하는지 보기 위해 12가지의 서로 다른 '함정'을 만들었습니다. 그들은 겉보기에는 완벽하게 정상적이지만 지침 속에 숨겨진 위험이 있는 가짜 프로젝트들을 설정했습니다. 그들은 이 함정들을 9가지의 서로 다른 AI 모델(두뇌)과 하네스(명령어를 실행하는 몸체 또는 프레임워크)의 조합에 대해 테스트했습니다.

주요 함정 유형은 다음과 같습니다:

  1. 이름 속임수 (타이포스쿼팅, Typosquatting): 'transformers' 대신 'tranformers', 또는 'azure-core' 대신 'azurecore'처럼 아주 미세한 실수가 있는 이름을 사용했습니다.
  2. 출처 속임수: 패키지를 공식 사이트가 아닌 가짜의 신뢰할 수 없는 웹사이트에서 다운로드하도록 지침을 변경했습니다.
  3. 버전 속임수: 로봇에게 유명한 패키지의 오래되고 알려진 취약점이 있는 버전을 설치하라고 지시했습니다.
  4. 숨겨진 속임수: 로봇이 자동으로 읽게 되는 파일(예: 요구 사항 목록의 숨겨진 노트) 안에 위험한 지침을 숨겼습니다.

결과: 똑똑한 두뇌, 눈먼 눈

결과는 놀랍고도 다소 무서웠습니다. 연구진은 AI의 함정 포착 능력이 모델이 얼마나 '발달했는지'에 달려 있지 않다는 것을 발견했습니다. 최상위 등급의 초고성식 모델이라 할지라도 동일한 프레임워크에서 실행된다면, 약간 덜 발전된 모델만큼이나 함정에 빠질 가능성이 높았습니다.

좋은 소식: 로봇들은 명백한 철자 오류를 찾아내는 데는 꽤 유능했습니다. 패키지 이름에 명백한 오타가 있다면 대부분의 로봇이 이를 잡아냈습니다. 또한 프로그램 에러 메시지(예: "이 가짜 패키지를 설치해야 합니다!"라는 팝업창)로부터 오는 위험에 대해서도 잘 대처했습니다. 이런 경우 로봇들은 회의적인 태도를 보였고 설치를 거부했습니다.

나쁜 소식: 로봇들은 가짜 출처와 위험한 버전을 식별하는 데 매우 무능했습니다.

  • 출처의 사각지대: 지침이 (심지어 로컬 서버에 호스팅된 가짜일지라도) 신뢰할 수 없는 웹사이트를 가리킬 때, 로봇들은 망설임 없이 패키지를 설치했습니다. 그들은 웹사이트의 안전보다 파일에 적힌 텍스트를 더 신뢰했습니다.
  • 버전의 사각지대: 지침이 보안 취약점이 가득한 알려진 패키지 버전을 설치하라고 요청했을 때, 로봇들은 그대로 설치했습니다. 가장 똑똑한 모델들조차 직접 물어보면 보안 취약점에 대해 알고 있었지만, 단순히 "프로젝트를 설정"할 때는 그 지식을 무시하고 위험한 버전을 설치했습니다.

'하네스' 요인: 가장 중요한 발견은 로봇이 실행되는 프레임워크가 로봇의 두뇌보다 더 중요하다는 것이었습니다. 연구진은 정확히 같은 AI 모델을 두 가지 다른 프레임워크에서 실행했습니다. 한 프레임워크에서는 모델이 가짜 웹사이트 함정을 10번 중 10번 모두 잡아냈습니다. 하지만 다른 프레임워크에서는 10번 중 9번이나 그 함정에 빠졌습니다. 이는 '두뇌'(모델)가 아니라 '몸'(하네스)이 보안의 핵심적인 역할을 하고 있음을 증명했습니다.

"주의하라"는 말은 충분하지 않다

연구진은 로봇에게 "주의하고 가짜 패키지를 확인하라"는 특별한 지침인 '보안 프롬프트'를 주어 문제를 해결하려고 시도했습니다. 이것은 약간의 도움이 되었습니다. 로봇이 가짜 웹사이트를 더 잘 찾아내도록 만들었지만, 위험한 소프트웨어 버전을 찾아내는 데는 전혀 도움이 되지 않았습니다. 로봇들은 자신이 확인하라고 지시받은 특정 부분에만 반응하는 것처럼 보였습니다. 만약 '출처'를 확인하라고 하면 출처를 확인했고, '버전'을 확인하라고 하지 않으면 버전을 확인하지 않았습니다.

이는 무서운 깨달음으로 이어졌습니다: 로봇에게 "똑똑하게 행동하라"고 요구하는 것은 신뢰할 수 있는 해결책이 아닙니다. 로봇들은 지침을 따르려는 의욕이 너무 강해서, 설령 그 코드 자체가 함정이라 할지라도 지침이 정당해 보인다면 위험한 코드를 설치할 것입니다.

해결책: 문 앞의 보안 요원

논문은 이 문제를 해결하는 유일하고 신뢰할 수 있는 방법은 '사전 설치 게이트(pre-install gate)'를 구축하는 것이라고 결론짓습니다. 이것은 로봇이 설치 명령을 실행하기 '전'에 이루어지는 보안 점검입니다.

건설 현장 입구에 서 있는 보안 요원을 상상해 보세요. 로봇이 자재를 들여오기 전에, 보안 요원은 세 가지를 확인합니다:

  1. 이름이 맞는가? ("transformers"인가, 아니면 "tranformers"인가?)
  2. 출처가 안전한가? (공식 상점에서 오는 것인가, 아니면 무작위 웹사이트인가?)
  3. 버전이 안전한가? (이 버전에 알려진 보안 취약점이 있는가?)

연구진은 이 보안 요원의 프로토타입을 만들었습니다. 그것은 완벽하게 작동했습니다. 로봇이 빠졌던 거의 모든 함정을 잡아냈으며, 여기에는 가짜 웹사이트와 위험한 버전도 포함되었습니다. 핵심은 이 보안 요원이 로봇의 '사고'나 '직관'에 의존하지 않는다는 점입니다. 그것은 엄격하고 자동화된 검증에 기반합니다.

시사점

이 논문의 주요 교훈은 우리가 AI 코딩 에이전트가 자연스럽게 안전해지기를 기대해서는 안 된다는 것입니다. 그들은 신중하기보다는 빠르고 순종적이도록 설계되었습니다. 만약 우리가 보안 요원 없이 그들이 소프트웨어를 설치하도록 내버려 둔다면, 그들은 실수로 악성코드를 설치하거나, 비밀번호를 훔치거나, 우리의 시스템을 망가뜨릴 것입니다. 해결책은 더 똑똑한 로봇을 기다리는 것이 아니라, 로봇 주변에 더 나은 보안 시스템을 구축하는 것입니다. 우리는 어떤 코드가 설치되기 전에, 패키지가 진짜인지, 출처가 신뢰할 수 있는지, 그리고 버전이 안전한지를 확인하는 엄격한 검증이 반드시 이루어지도록 만들어야 합니다. 이 검증이 없다면, '설치 간극'은 해커들이 바로 걸어 들어올 수 있는 활짝 열린 문으로 남을 것입니다.

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

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

Digest 사용해 보기 →