배경
Databricks Genie Code는 Databricks의 에이전틱 어시스턴트로, 사용자가 자연어 지시를 통해 자신의 테넌트에 있는 데이터를 조작할 수 있게 해줍니다.
Genie Code는 사용자를 위해 채팅에 디스플레이를 렌더링할 수 있습니다. 악성 Skills는 이 기능을 악용하여 도구 결과가 조회될 때 데이터 유출을 유발하고 사용자에게 피싱 공격을 표시할 수 있습니다.
이 공격은 사람이 개입하는 승인(human-in-the-loop approval) 없이, 그리고 조직이 기대하고 있을 수 있는 통제 기능의 제약 없이 발생할 수 있습니다:
- 조직 수준의 Skill 거버넌스; Genie Code는 조직의 거버넌스가 적용된 카탈로그가 아니라 사용자의 개인 워크스페이스에서 skills를 불러옵니다
- 명령이 실행되기 전에 평가하는 가드레일 에이전트; Databricks는 이것을 보안 통제가 아닌 최선을 다한 생산성 기능으로 간주합니다
- 코딩 환경의 이그레스(egress) 통제; 이그레스는 코딩 환경이 아니라 사용자의 브라우저에서 발생합니다
- 채팅에 렌더링되는 디스플레이의 샌드박싱; Skill은 사용자 데이터로 디스플레이를 구축하며, 디스플레이가 테넌트에서 데이터를 가져올 필요가 없습니다
이 위험은 2026년 8월 16일 Databricks에 보고되었으나, “업로드된 skills에 악성 콘텐츠가 없도록 보장하는 것은 사용자의 책임”에 해당한다고 판단되었습니다. 온라인 마켓플레이스에 악성 Skills가 유통되는 실태, 그리고 조직이 의존하고 있을 가능성이 높은 통제 기능이 이 위험을 제거하지 못한다는 점을 고려하여, 위험에 처한 이들에게 알리기 위해 이 보고서를 공개합니다.
공격 체인
업로드된 Skill을 사용하여 데이터를 분석하도록 Genie에 지시합니다
Skills는 일반적으로 온라인 마켓플레이스를 통해 유통되며, 이 생태계는 악성 Skills로 오염된 것으로 알려져 있습니다. Databricks에는 Skill 거버넌스를 위한 시스템이 있지만, Genie Code가 사용하는 Skills는 조직의 거버넌스가 적용된 Catalog가 아니라 사용자의 개인 워크스페이스에서 구성됩니다.
Genie가 악성 Skill의 코드를 실행합니다
Genie가 Skill의 코드를 실행할 때, “제3자에게 데이터를 전송”하는 것과 같이 사용자가 의도한 행위 범위를 벗어나는 명령을 표시하는 두 번째 에이전트가 이를 검사합니다.
에이전트-in-the-loop가 Skill 코드 실행을 승인하며, 악성 기능을 잡아내지 못합니다.
Genie는 사용자에게 전체 데이터 분석 결과를 열도록 지시합니다
결과가 렌더링될 때 피싱 모달이 표시되고 사용자의 데이터셋이 유출됩니다
악성 Skill의 코드는 두 가지 악성 목적을 수행하는 HTML 요소를 구축합니다. 하나의 효과는 사용자의 자격 증명을 피싱하는 공격자의 웹사이트 오버레이를 렌더링하는 것입니다.
다른 효과는 모달이 렌더링될 때(예: 사용자가 결과를 볼 때) 피해자의 테넌트에서 데이터가 유출되는 것입니다. 악성 Skill의 코드는 피해자 테넌트에 대한 접근 권한을 사용하여 민감한 데이터(피해자의 데이터셋 등)를 수집한 다음, 그 데이터를 HTML 디스플레이에 포함시킵니다. 디스플레이가 렌더링되면 악성 디스플레이의 JavaScript가 사용자의 브라우저가 네트워크 요청을 발생시켜 공격자의 서버로 데이터를 유출하게 합니다.
코딩 환경에는 공격자의 서버와의 통신을 막는 네트워크 이그레스 통제가 있지만, 디스플레이 인터페이스에는 그러한 통제가 없어 공격자에게 데이터를 보낼 수 있습니다.
책임 있는 취약점 공개
이 위험은 2026년 8월 16일 Databricks에 보고되었습니다. Databricks 팀은 다음과 같이 판단했습니다:
“궁극적으로 업로드된 skills에 악성 콘텐츠가 없도록 보장하는 것은 사용자의 책임입니다.”
네트워크 이그레스 통제에 따라 코딩 환경은 신뢰할 수 없는 외부 당사자에게 연락하는 것이 허용되지 않았으며, 이는 지켜졌습니다. 단지 데이터를 쿼리하고 그것으로 iframe을 구축했을 뿐입니다.
사용자에게 렌더링되는 디스플레이에 대한 통제에 따라 디스플레이는 테넌트에서 데이터를 쿼리하는 것이 허용되지 않았으며, 이는 지켜졌습니다. 단지 Skill의 코드가 포함시킨 데이터를 처리했을 뿐입니다.
그 결과, 악성 Skill 코드는 컴퓨팅 환경에서 데이터를 쿼리하여 iframe에 포함시킬 수 있고, iframe은 네트워크 요청을 통해 데이터를 유출할 수 있습니다…
우리는 이 상호작용이 Databricks 위협 모델의 공백을 보여준다고 생각합니다. 기술적으로 지켜진 두 가지 보장의 목적이 바로 궁극적으로 발생한 데이터 유출 결과를 막는 것이었기 때문입니다.
가드레일 에이전트가 악성 명령을 승인한 것과 관련하여, Databricks 팀은 다음과 같이 밝혔습니다.
“자동 허용(auto-allow) 기능은 보안 경계로 의도된 것이 아니라, 신뢰할 수 없는 입력이 자동으로 실행되는 것을 막기 위한 통제 수단입니다.”
문서는 다음과 같은 진술을 뒷받침합니다:
그러나 ‘auto-approve’가 기본값이자 ‘권장’ 명령 승인 모드로 문서화되어 있기 때문에, 사용자가 실제로 프로덕션 데이터와 함께 이를 사용하지 말라는 지침을 준수하는 일은 드물 것이라고 우리는 판단합니다.
Genie Code의 Skills가 조직 수준의 통제된 Catalog가 아닌 사용자의 개인 워크스페이스에서 로드된다는 사실과 관련하여 어떠한 언급도 제공되지 않았습니다.
타임라인
| 2026년 8월 16일 | PromptArmor가 Databricks에 취약점을 공개함 |
| 2026년 8월 17일 - 9월 15일 | PromptArmor와 Databricks가 협의함 |
| 2026년 9월 16일 | PromptArmor가 게시 의사를 Databricks에 통보함 |
