
AI 에이전트에게 더 많은 도구를 제공하고 있습니다. 경계가 무너질 때 어떤 일이 발생할까요?
요약
AI 에이전트의 권한과 도구가 확장됨에 따라 보안 경계 설정의 중요성을 강조합니다. 프롬프트는 실제 보안 경계가 될 수 없으며, 시스템 차원의 권한 제어와 모니터링이 필수적임을 Anthropic과 OpenAI의 사례를 통해 설명합니다.
핵심 포인트
- 프롬프트는 실제 보안 경계(Security Boundary) 역할을 할 수 없음
- 에이전트에게는 최소 권한 원칙(Least Privilege)을 적용해야 함
- 모델의 행동뿐만 아니라 주변 시스템과 안전장치 설계가 중요함
- 에이전트의 행동을 실시간으로 모니터링할 수 있는 체계 필요
📌 요약 (TL;DR)
AI 에이전트(AI agents)는 단순히 질문에 답하는 것 이상의 능력을 부여받으면서 유용해지고 있습니다. 이들은 명령을 실행하고, 웹을 탐색하며, API를 사용하고, 파일을 읽고 수정하며, 패키지를 설치하고, 다른 시스템과 상호작용할 수 있습니다.
하지만 에이전트가 할 수 있는 일이 많아질수록, 그를 둘러싼 경계(boundaries)의 중요성도 커집니다.
저는 Anthropic의 7월 30일 보고서에서 사이버 보안 평가(cybersecurity evaluations) 중 발견된 세 가지 사건에 대해 읽은 후 이 문제에 대해 생각하기 시작했습니다. Claude 모델들은 시뮬레이션된 환경 내부에서 작동하도록 되어 있었으며, 인터넷 접속 권한이 없다는 명시적인 지시를 받았습니다.
하지만 평가 환경(evaluation environment)의 구성 방식에 문제가 있어 실제로 인터넷 접속이 가능했습니다.
모델들은 할당된 사이버 보안 연습을 완료하려 시도하는 과정에서 실제 시스템에 도달했고, 처음에는 이를 시뮬레이션의 일부로 취급했습니다. 한 사건에서는 Claude 모델이 여전히 연습 내에서 작동하고 있다고 믿으면서 실제 PyPI 레지스트리에 악성 Python 패키지를 게시하기까지 했습니다.
이는 Hugging Face와 관련된 별도의 OpenAI 사건 직후에 발생했습니다. 두 이야기는 처음에는 비슷하게 들릴 수 있지만, 모델들이 실제 인터넷에 도달한 방식은 중요하게 다릅니다.
그리고 이는 꽤 익숙한 소프트웨어 엔지니어링 개념으로 귀결됩니다:
프롬프트(prompt)는 보안 경계(security boundary)가 아닙니다.
에이전트에게 "인터넷 접속 권한이 없습니다"라고 말하는 것은 실제로 인터넷 접속을 차단하는 것과 같지 않습니다. "이 파일들만 사용하세요"라고 말하는 것은 해당 파일에 대한 권한을 제한하는 것과 같지 않습니다.
모델은 시스템의 한 부분일 뿐입니다. 우리가 연결하는 도구(tools), 부여하는 권한(permissions)과 자격 증명(credentials), 모델이 실행되는 환경, 그리고 그 주변의 모니터링 및 안전장치(safeguards) 모두가 발생하는 결과에 영향을 미칠 수 있습니다.
따라서 무언가 잘못되었을 때, 단순히 **"AI가 그랬다"**라고 멈추는 것만으로는 충분하지 않다고 생각합니다. 모델의 행동도 중요하지만, 그 주변에 우리가 구축한 시스템과 경계 또한 중요합니다.
에이전트에게 더 많은 행동 능력을 부여함에 따라, 우리는 그들이 실제로 무엇을 할 수 있도록 허용하고 있는지에 대해서도 신중하게 생각해야 합니다.
저는 사이버 보안 연구가는 아닙니다. 저는 그저 이런 연구 보고서나 기술 보고서를 읽는 것을 즐기며, 개발자로서 우리가 그로부터 무엇을 배울 수 있는지 이해하려고 노력할 뿐입니다. 그것이 제가 여기서 탐구하고 싶었던 것입니다.
"AI가 탈출했고 우리는 끝장났다" 같은 주장을 하려는 것이 아닙 😄 그저 흥미로운 실제 사건과 놀라울 정도로 익숙한 엔지니어링 교훈에 대한 이야기입니다.
목차
- 나를 이 토끼굴로 이끈 보고서
- 무슨 일이 일어났는지 알아보기 전에...
- 그래서... 실제로 무슨 일이 일어났나요?
- PyPI 사건이 정말 흥미로워진 지점입니다
- 지시 사항과 현실이 일치하지 않을 때
- 프롬프트(Prompt)는 보안 경계가 아닙
- 잠깐, OpenAI 사건도 있지 않았나요?
- 이 모든 것이 개발자에게 의미하는 바는 무엇인가요?
-
- 에이전트에게 당신이 가진 모든 것이 아니라, 필요한 것만 제공하세요
-
- 당신의 가정이 틀렸을 때 어떤 일이 일어날지 생각하세요
-
- 에이전트가 행동할 수 있다면, 우리는 그것이 무엇을 하고 있는지 알아야 합니다
-
- 하나의 안전장치만으로는 아마 충분하지 않을 것입니다
-
- AI 모델이 AI 시스템의 전부는 아닙
-
- 내가 이번 일을 통해 얻지 않은 것
- 더 큰 질문
- 마지막 생각
- 여러분의 의견을 듣고 싶습니다
- 출처
- 🤝 계속 연결되어 있자
나를 이 토끼굴로 이끈 보고서
7월 31일, 저는 Anthropic이 사이버 보안 평가 중에 발견한 세 가지 사건에 대해 새로 발표한 보고서를 읽고 있었습니다.
저는 가끔 이런 보고서를 읽는 것을 즐깁니다. 석사 과정 중에 서베이 논문(survey paper)을 작성하면서 훨씬 더 많은 관심을 갖게 된 분야이며, 지금도 가끔 호기심에 기술 보고서를 열었다가 계획했던 것보다 훨씬 더 오래 읽고 있는 자신을 발견하곤 합니다 😄
이번이 확실히 그런 경우 중 하나였습니다.
이 보고서는 꽤 놀라운 발견과 함께 시작되었습니다. Anthropic은 **141,006건의 사이버 보안 평가 실행 (cybersecurity evaluation runs)**을 검토했으며, Claude가 인터넷에 접속하여 서로 다른 세 조직에 속한 실제 시스템에 무단으로 접근한 세 건의 사건을 발견했습니다.
그 문장 하나만으로도 경각심을 불러일으키기에 충분하지만, 계속 읽어 내려가다 보니 세부 사항들이 헤드라인보다 훨씬 더 흥미로운 이야기를 만들어냈습니다.
이것은 단순히 **“Claude에게 인터넷에 접속하지 말라고 명령했으나 어쨌든 접속하기로 결정했다”**는 사례가 아니었습니다. 또한 **“Claude가 갑자기 무작위 기업들을 해킹하기로 결정했다”**는 것도 아니었습니다. 모델들은 숨겨진 정보를 찾아내기 위해 약점을 찾고 이를 악용하는 것이 본질적인 임무인 사이버 보안 연습 (cybersecurity exercises)에 참여하고 있었습니다.
그들은 환경이 시뮬레이션된 것이라고 안내받았으며, 다음에 일어난 모든 일에 있어 매우 중요해지는 또 다른 사실도 안내받았습니다. 바로 인터넷 접속 권한이 없다는 것이었습니다.
하지만 그 가정은 그들이 실제로 작동하고 있던 환경과 일치하지 않았습니다.
그리고 바로 그 점이 저를 깊은 탐구의 길(rabbit hole)로 빠져들게 만들었습니다. 시뮬레이션된 사이버 보안 연습에 참여 중인 AI 모델이, 자신이 부여받은 과업을 수행하고 있다고 믿으면서 어떻게 실제 시스템과 상호작용하게 되었는지 이해하고 싶었습니다.
읽으면 읽을수록, 이것은 단 하나의 특이한 사이버 보안 사건 그 이상의 훨씬 더 광범위한 질문처럼 느껴지기 시작했습니다.
무슨 일이 일어났는지 알아보기 전에...
우리 대부분은 아마 지금쯤 AI 에이전트 (AI agents)를 접해본 적이 있을 것이므로, 그것이 무엇인지 설명하는 데 너무 많은 시간을 할애하지는 않겠습니다. 이 이야기에서 중요한 부분은 에이전트가 반드시 답변을 생성하는 데서 그치지 않는다는 점입니다. 적절한 도구만 주어진다면, 파일을 읽고 수정하거나, 명령어를 실행하거나, API를 호출하거나, 웹을 탐색하거나, 다른 시스템과 상호작용하는 등 실제로 행동을 취할 수도 있습니다.
이것이 에이전트를 매우 유용하게 만드는 요소이지만, 동시에 에이전트를 둘러싼 경계(boundaries)를 중요하게 만드는 요소이기도 합니다. 에이전트에게 더 많은 도구와 접근 권한을 부여할수록, 에이전트가 실제로 어디까지 도달할 수 있는지, 그리고 무엇을 할 수 있도록 허용되는지에 대해 더 많이 고민해야 합니다.
그리고 바로 이 지점에서 이야기가 흥미로워집니다. 왜냐하면 Claude에게는 작업(task)과 환경(environment), 그리고 그 경계가 어디인지에 대한 이해가 주어졌기 때문입니다.
문제는 실제 경계가 Claude가 전달받은 내용과 정확히 일치하지 않았다는 점입니다.
그래서... 실제로 무슨 일이 일어났을까요?
Anthropic은 자사 모델의 능력을 파악하기 위해 정기적으로 사이버 보안 평가를 실시합니다. 이 중 일부는 CTF (capture-the-flag) 챌린지를 포함하는데, 여기서는 모델을 통제된 환경에 배치하고, 보통
Claude는 이러한 연습에 참여하고 있었으며, 설정에 관한 두 가지 세부 사항이 다음에 일어난 일에 있어 매우 중요한 역할을 하게 되었습니다. 모델들은 자신들이 시뮬레이션 내부에서 작동하고 있으며, 인터넷 접속 권한이 없다는 지침을 받았습니다.
따라서 모델의 관점에서는 자신이 도달할 수 있는 모든 것이 해당 시뮬레이션의 일부여야 했습니다.
문제는 이것이 실제로는 사실이 아니었다는 점입니다.
Anthropic에 따르면, 회사와 제3자 평가 파트너 간의 오해로 인해 일부 평가용 머신들이 허용되지 않은 상태에서 실제 인터넷에 접속할 수 있었습니다.
이는 상당히 이례적인 상황을 만들어냈습니다. Claude는 약점(weaknesses)을 찾아내고 이를 악용하는 것이 연습의 일부인 과제를 부여받았습니다. 또한 인터넷을 사용할 수 없다는 사실도 명시적으로 전달받았습니다. 따라서 Claude가 의도된 환경 외부의 시스템에 도달했을 때, 처음에는 이를 챌린지의 또 다른 부분으로 취급했습니다.
하지만 그 시스템 중 일부는 실제였습니다.
Anthropic의 검토 결과, 최종적으로 세 가지 서로 다른 Claude 모델이 연루된 세 건의 별도 사건이 발견되었습니다. 각 사례마다 상황은 달랐으며, 실제 시스템과 상호작용할 가능성이 있는 징후가 나타났을 때 모든 모델이 동일하게 반응한 것은 아니었습니다.
하지만 그 사건들 중 특히 하나가 이 이야기를 정말 흥미롭게 만듭니다.
PyPI 사건이 정말 흥미로워지는 지점입니다
Python을 다뤄본 적이 있다면, 아마 이전에 pip install something과 같은 명령어를 입력해 본 적이 있을 것입니다. 해당 패키지는 종종 공개 Python 패키지 인덱스인 **PyPI (Python Package Index)**에서 가져옵니다.
평가 과정 중 하나에서, Claude는 가상의 회사에 있는 개발자들을 위한 설정 지침(setup instructions)으로 보이는 것을 발견했습니다. 해당 지침은 직원들에게 특정 Python 패키지를 설치하라고 안내하고 있었지만, 그 패키지는 실제로 존재하지 않았습니다.
Claude는 만약 자신이 동일한 이름의 패키지를 만든다면, 해당 가상 회사의 시스템이 실제 패키지 대신 자신의 버전을 다운로드하여 실행할 수도 있다는 사실을 깨달았습니다. 사이버 보안 챌린지(cybersecurity challenge)의 맥락 내에서, 이는 목표에 도달할 수 있는 가능한 방법이 되었습니다.
이에 따라 모델은 악성 패키지를 생성하고 이를 게시하려고 시도했습니다.
문제는 모델이 평가를 위해 만들어진 PyPI의 가짜 버전과 상호작용하고 있었던 것이 아니라는 점이었습니다. 모델은 실제 PyPI와 상호작용하고 있었습니다.
그다음에 일어난 일은 아마도 보고서에서 저를 가장 놀라게 했던 부분일 것입니다. 패키지를 게시하기 위해 Claude는 계정을 생성해야 했으며, 이는 이메일 주소와 어느 시점에는 전화번호가 필요함을 의미했습니다. Claude는 전화번호를 얻을 방법을 찾는 데 실패하는 등 여러 가지 접근 방식을 시도한 끝에, 결국 계정 등록에 사용할 수 있는 무료 이메일 제공업체를 찾아냈습니다.
그 후 Claude는 PyPI에 악성 패키지를 성공적으로 업로드했습니다.
Anthropic에 따르면, 해당 패키지는 약 한 시간 동안 공개적으로 사용 가능한 상태로 유지되었으며, 그 시간 동안 15개의 실제 시스템에서 다운로드되어 실행되었습니다. 그 시스템 중 하나는 악성 코드를 스캔하기 위해 Python 패키지를 자동으로 설치하는 보안 회사의 시스템이었습니다. 스캐너가 패키지를 설치했을 때 Claude의 코드가 실행되어 자격 증명(credentials)을 노출시켰고, 모델은 이를 사용하여 해당 회사의 추가 인프라에 접근했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

