악성 스킬, Genie 4중 보안 뚫고 유출

AI 보안 업체 프롬프트아머(PromptArmor)가 Databricks Genie Code를 노린 공격 체인을 공개했다. 악성 코드가 심어진 스킬 하나로 사용자가 전혀 알아차리지 못하는 사이에 테넌트 데이터를 공격자 서버로 빼내고, 동시에 채팅 화면에 피싱 로그인 창을 띄울 수 있다는 내용이다. 프롬프트아머가 짚은 네 가지 공식 보안 대책 중 이 공격 체인을 막아낸 것은 하나도 없었다.

Genie Code는 Databricks에 내장된 에이전트형 어시스턴트로, 사용자가 자연어로 테이블 조회나 분석 실행, 그래프 작성을 요청하면 결과가 그대로 웹 채팅 화면에 표시된다. 스킬은 에이전트에 업로드할 수 있는 기능 패키지로, 설명 텍스트뿐 아니라 실행 가능한 코드도 담을 수 있다.

공격은 이렇게 진행된다

프롬프트아머가 보여준 시연은 단 네 단계였다. 사용자가 겉보기에 평범한 데이터 분석용 스킬을 업로드하고 Genie에게 특정 데이터셋 분석을 맡긴다. Genie는 스킬 안의 코드를 실행하지만, 이를 걸러내야 할 가드레일 에이전트는 악성 기능을 잡아내지 못한다. 이어 Genie는 사용자에게 "전체 분석 결과 열기"를 유도하고, 결과가 렌더링되는 순간 피싱 창이 뜨면서 동시에 데이터가 빠져나간다.

데이터를 빼내는 방식 자체는 단순하다. 스킬 코드는 먼저 피해자 테넌트 안의 민감한 데이터를 읽어 채팅창에 표시될 HTML 안에 집어넣는다. 그 HTML 속 자바스크립트가 사용자의 브라우저에서 네트워크 요청을 보내 데이터를 공격자 서버로 전송한다. 피싱 창도 같은 HTML에서 만들어져 Genie 화면 위에 겹쳐 뜨며, 사용자에게 계정과 비밀번호 입력을 유도한다. 이 전체 과정에서 사람의 승인이 개입하는 단계는 단 한 번도 없다.

네 가지 대책이 모두 소용없었던 이유

  • 조직 단위 스킬 거버넌스: Genie는 조직이 일괄 관리하는 카탈로그뿐 아니라 사용자 개인 워크스페이스에서도 스킬을 불러오기 때문에, 관리자는 사용자가 직접 올린 스킬을 통제할 수 없다.
  • 가드레일 에이전트: Databricks 스스로 이를 "최선을 다하는 효율화 기능"으로 정의하며, 보안 경계로 쓰일 것을 보장하지 않는다.
  • 코드 실행 환경 출구 제어: 제한 대상은 코드 실행 환경에서 나가는 아웃바운드 트래픽이고, 데이터는 사용자 브라우저에서 빠져나가므로 이 계층에서는 보이지 않는다.
  • 채팅 표시 샌드박스: 스킬은 이미 확보한 데이터를 그대로 써서 표시용 콘텐츠를 만들 뿐이라, 표시 단계에서 테넌트 데이터를 다시 검사할 필요가 없다.

네 가지 대책은 각각 나름의 근거가 있지만, 한데 모아 놓으면 하나의 틈이 생긴다. 프롬프트아머는 8월 16일 Databricks에 문제를 신고했고, 양측은 한 달가량 조율을 거쳤으며, 9월 16일 프롬프트아머가 공개 계획을 통지했다.

Databricks의 답변은 분명했다.

"it is ultimately the user's responsibility to ensure that uploaded skills do not contain malicious content"

(업로드된 스킬에 악성 콘텐츠가 없는지 확인하는 것은 결국 사용자의 책임이라는 뜻이다.)

매번 확인을 거치지 않고 건너뛸 수 있는 자동 승인 기능에 대해서도 Databricks는 "보안 경계로 쓸 의도가 없다"고 밝혔으며, 공식 문서에도 운영 환경에서는 사용을 권장하지 않는다고 적혀 있다.

같은 종류의 틈, 다른 곳에도 있다

프롬프트아머가 지난 1년간 공개한 보고서를 나란히 놓고 보면 공격 표면이 매번 놀랍도록 비슷하다. 이 회사는 앞서 Claude Cowork에서의 파일 유출, Google Antigravity에서의 데이터 유출도 폭로한 바 있는데, 방식은 한결같이 에이전트가 민감한 내용을 읽게 만든 뒤 렌더링이나 링크, 네트워크 호출을 통해 밖으로 빼내는 것이었다. 다른 점은 침투 경로다. 이전 사례들은 대부분 프롬프트 인젝션에 의존했지만, 이번에는 "설치하는 순간 코드가 실행되는" 플러그인 형태인 스킬로 바뀌었다.

기업 입장에서 스킬은 주입된 텍스트보다 막기 어렵다. 주입 텍스트는 최소한 웹페이지나 문서 어딘가에 숨어 에이전트가 읽어주길 기다려야 하지만, 스킬은 사용자가 직접 설치하는 것이라 처음부터 신뢰를 깔고 들어간다. 올해 학계에서도 이 문제를 활발히 논의 중이며, arXiv에는 이미 악성 스킬을 평가하는 전용 벤치마크가 등장했고, 탐지 도구의 미탐율은 전반적으로 낮지 않다.

중국 내 여러 팀도 데이터 플랫폼에 에이전트를 붙이고 플러그인 마켓을 열고 있는데, 이번 사건은 꽤 구체적인 체크리스트를 제시한다. 스킬을 관리자가 심사한 카탈로그에서만 불러오게 했는지, 에이전트가 출력하는 HTML이 스크립트를 실행하거나 외부 도메인으로 요청을 보낼 수 있는지, 운영 환경에서 자동 승인이 기본값으로 꺼져 있는지. 이 세 가지 중 하나라도 막혀 있지 않다면 프롬프트아머가 시연한 공격 체인은 다시 재현될 여지가 있다.

프롬프트아머의 권고도 같은 지점으로 모인다. 운영 데이터를 다루는 곳에서는 자동 승인을 켜지 말고, 스킬 마켓플레이스에 오염된 패키지가 섞여 있는지 주시하라는 것이다. Databricks가 제품 차원에서 아웃바운드 필터링을 추가할지는 아직 공개된 바 없다.

참고 출처: PromptArmor 보안 연구 보고서, Databricks Genie Code 제품 문서, CocoLoop, 악성 스킬 관련 arXiv 논문; 공개 경위와 Databricks의 답변 원문은 PromptArmor 보고서를 기준으로 한다.