AI 에이전트에게 API 키를 줬다가 100달러를 날렸습니다. 아직도 화가 나네요. 다시는 안 합니다.
I gave my agent an API key and lost $100. I’m still pissed off. Never again
핵심 요약
AI 에이전트의 API 키 유출로 금전적 피해를 본 작성자가 보안을 강화한 에이전트 운영 환경을 구축하고 공유합니다.
- 보안 취약점 — 에이전트가 작업 중 API 키를 로그 파일 등에 무분별하게 노출함
- 운영체제 격리 — 리눅스 사용자 분리 및 네트워크 규칙으로 에이전트 권한 제한
- 게이트웨이 도입 — 에이전트가 실제 자격 증명을 직접 다루지 않도록 중계 서버 활용
- 보안 권고 사항 — 도구별 자격 증명 분리 및 예산 한도 설정의 중요성 강조
진짜 개빡치는 건 내가 하드 지출 한도를 걸어놨는데 그걸 내 손으로 직접 올렸다는 거야. 6개월 전쯤에 OpenRouter를 통해서 OpenClaw로 컴퓨터 작업 좀 돌리고 있었거든. 근데 존나 느리고 굼뜬 데다가 토큰만 미친 듯이 처먹더라고. 처음 며칠은 원래 에이전트 돌리는 게 돈이 좀 드나 보다 싶었지. 그러다 4일째 되는 날 로그를 확인해 봤는데, 가관이더라. 내 작업이랑은 1도 상관없는 중국어 요청이 쉴 새 없이 날아오고 있었음. 누군가 내 키를 털어서 쓰고 있었고, 100달러 정도 날아갔는데 심지어 그 새끼들 지출 한도까지 내가 직접 늘려준 꼴이 된 거지.
키 싹 다 갈아엎고 나서, 대체 어떻게 이런 짓을 반복 안 할지 고민 좀 해봤어. 아직도 키가 어떻게 털린 건지는 모르겠음. 근데 에이전트가 읽을 수 있는 곳에 진짜 키를 놔두면, 그놈이 그걸 다른 데로 복사해버릴 수도 있다는 게 문제야. 난 에이전트가 단순히 모델 API 호출하는 것보다 더 많은 걸 하길 원하거든. Git 쓰고, psql 쿼리 날리고, Stripe 웹훅 디버깅하고, Apify로 데이터 긁어오고, Cloudflare에 배포까지 시키고 싶다고. 근데 이런 자격 증명(credentials)을 작업 공간에 그대로 노출하지 않고도 그 짓을 계속하게 만들고 싶은 거지.
특히 브라우저 쪽은 진짜 개빡침. 에이전트가 로그인된 세션을 쓰길 원해서 일부러 권한을 줬단 말이야. 근데 그렇다고 내 비밀번호나 로그인 정보를 읽거나 빼돌리는 건 원치 않거든. 얼마 전에 Grok Bot한테 내 비밀번호 읽을 수 있냐고 물어봤더니 안 된대. 그래서 브라우저랑 쿠키 접근 권한 얘기 꺼내니까, 세션 데이터 접근은 가능한데 유출은 안 할 거라더라. 참 위로가 되네, 그치? 그냥 걔가 착하게 굴겠다고 약속했으니까 믿어야 하는 거야? 난 애초에 걔가 비밀번호 같은 걸 읽을 수조차 없게 만들고 싶다고.
그래서 지난 몇 달 동안 내 에이전트들을 위한 다른 환경을 구축해서 써봤어. 에이전트는 리눅스 유저 하나 밑에서 돌리고, 키는 다른 유저가 가지고 있으면서 게이트웨이를 실행하는 방식이야. API 호출은 가짜 자격 증명을 쓰고, 게이트웨이가 진짜를 끼워 넣는 거지. CLI 래퍼랑 별도의 브로커가 나머지 연결을 처리하고. OS 권한이랑 네트워크 규칙을 써서 에이전트가 자격 증명 파일을 읽거나 게이트웨이를 우회하지 못하게 막아놨어. 물론 내가 허용한 권한 안에서 에이전트가 할 수 있는 일은 여전히 제한해야겠지만, 적어도 에이전트가 진짜 키를 읽으려고 할 때 OS가 딱 잘라 거절하게 만들고 싶거든.
그래서 이 프로젝트를 오픈소스로 풀기로 했다. 문제의 상세 내용이랑 기술적인 해결책은 아래 첫 번째 댓글에 다 적어놨으니까 확인해 봐.


