
클라우드 서비스 기업 Cloudflare의 컨테이너 제품에서, 한 고객의 컨테이너가 이전에 같은 서버를 사용했던 다른 고객의 잔여 디스크 데이터를 읽을 수 있는 취약점이 발견됐습니다. 문제의 원인은 리눅스 '씬 프로비저닝(얇은 저장 공간 할당)' 기능에서 사용이 끝난 디스크 블록을 새 컨테이너에 넘기기 전에 내용을 지우지 않은 것이었습니다. 연구자들은 실제 테스트에서 24번 중 18번 꼴로 다른 고객의 디렉터리 구조, SQLite 데이터베이스, 환경설정 파일(.env), 자격증명 파일 등을 회수했습니다. Cloudflare는 이미 전체 서비스에 걸쳐 수정을 완료했으며, 고객이 별도로 취해야 할 조치는 없다고 밝혔습니다.
Cloudflare Containers 및 Sandboxes 제품에서 다른 고객 컨테이너가 삭제된 후 반납된 디스크 블록의 잔여 데이터를 새 컨테이너가 읽을 수 있는 교차 테넌트(고객 간) 정보 노출 취약점이 발견됐다.
SQLite 데이터베이스, .env 파일, 자격증명 파일, Chromium 브라우저 프로필, 디렉터리 목록 등 다른 고객의 민감 데이터가 노출될 수 있었으며, AI 코드 샌드박스(Cloudflare Sandboxes·Browser Run)도 영향을 받았다.
리눅스 씬 프로비저닝 기능으로 생성된 64KB 블록이 컨테이너 삭제 후 공용 풀로 반환될 때, 통상적인 기본값인 블록 초기화(wipe)가 비활성화되어 있어 이전 데이터가 그대로 남아 있었다.
Cloudflare는 신규 블록 할당 시 초기화를 재활성화하고, 이미 실행 중인 컨테이너 디스크와 서버 캐시를 전수 교체·초기화했다. 9월 19일 정리를 완료하고 9월 24일 공개했으며, 기존 공격 흔적은 발견되지 않았다.
Cloudflare가 서버 측에서 완전히 수정했으므로 고객이 별도로 패치하거나 설정을 변경할 필요는 없다. 다만 같은 연구팀이 Anthropic Claude, Cursor, Docker, OpenAI Codex 등에서도 유사한 샌드박스 탈출을 잇달아 발견하고 있어, AI 에이전트 및 컨테이너 기반 샌드박스 환경의 격리 안전성을 재점검할 필요가 있다.
본문
Cloudflare Containers의 결함으로, 유료 고객의 컨테이너가 같은 서버를 사용했던 다른 고객의 컨테이너가 남긴 데이터를 읽을 수 있었다고 Cloudflare와 이를 발견한 연구자들이 목요일 밝혔다.
Cloudflare에 따르면, 해당 데이터는 이전 컨테이너가 사용하다 반납한 디스크 공간에서 나온 것으로, 실행 중인 워크로드에서 온 것이 아니며 공격자가 피해 대상을 선택할 수도 없었다. 회사는 서비스 전체에 걸쳐 결함을 수정했으며, 고객이 별도로 취해야 할 조치는 없다고 밝혔다.
Cloudflare Containers는 여러 계정이 공유하는 서버에서 고객 프로그램을 컨테이너 안에 실행하며, 서버 선택은 고객이 아닌 Cloudflare가 한다. Containers 위에서 동작하며 AI 에이전트가 작성한 코드를 포함한 신뢰할 수 없는 코드를 안전하게 실행하는 공간으로 판매되는 Cloudflare Sandboxes도 영향을 받았다.
이 결함은 보안 기업 Accomplish의 Oren Yomtov가 9월 4일 Cloudflare의 버그 바운티 프로그램을 통해 신고했다.
문제의 원인은 공유 디스크의 설정 방식에 있었다. 각 컨테이너는 '씬 프로비저닝(thin provisioning)'이라는 리눅스 기능을 이용해 만들어진 디스크를 64킬로바이트 블록 단위로 할당받는다. 컨테이너가 삭제되면, 해당 블록들은 고객 계정 전체가 공유하는 풀(pool)로 반환된다.
그런데 이 풀은 다음 컨테이너에 블록을 넘기기 전에 내용을 지우는(wipe) 동작을 건너뛰도록 설정되어 있었다. 이는 통상적인 기본값과 달랐다. 따라서 새 컨테이너가 재사용된 블록에 소량의 데이터만 기록하면, 블록의 나머지 공간에는 이전 컨테이너의 데이터가 그대로 남아 있었다.
연구자들은 이를 이용해 미사용 공간에 4킬로바이트짜리 작은 블록을 기록한 뒤, 원시 디스크 수준에서 블록 전체를 다시 읽었다. 직접 기록하지 않은 60킬로바이트 영역에는 이전 컨테이너의 데이터가 그대로 들어 있었다.
연구자들은 Cloudflare가 서버를 지정하는 운영 환경 테스트에서 24번 중 18번, 4개 대륙에 걸친 22개 서버에서 잔여 데이터를 발견했다고 보고했다.
Cloudflare는 회수된 블록에서 디렉터리 구조, 데이터베이스 페이지, 구조적으로 완전한 SQLite 데이터베이스가 발견됐다고 밝혔다. 연구자들이 직접 작성한 보고서에는 디렉터리 목록, SQLite 데이터베이스, Chromium 브라우저 프로필, .env 파일, 자격증명 파일이 나열되어 있으며, 이를 다른 고객의 파일로 기술했다.
연구자들은 자신들의 분석 스크립트가 파일 내용이 아닌 개수와 형식만 출력했으며, Cloudflare에 제출한 자료에 제3자의 이름, 식별자, 자격증명, 회수된 콘텐츠가 포함되지 않았다고 밝혔다.
또한 연구자들은 회수한 데이터를 외부에 공개하지 않고 제출 후 안전하게 삭제했다고 Cloudflare는 전했다. 연구자들은 이 결함으로 다른 고객의 실행 중인 데이터를 변경하거나 워크로드를 중단시킬 수 있다는 점은 입증하지 않았다.
Cloudflare는 두 단계에 걸쳐 결함을 수정했다. 먼저 새로 할당하는 블록에 대해 초기화(wipe)를 재활성화해 보고된 공격 방법을 차단했으며, 연구자들은 9월 14일 자신들의 개념증명(PoC)이 더 이상 작동하지 않음을 확인했다.
그러나 이 변경만으로는 이미 실행 중인 컨테이너 디스크나 각 서버의 준비된 이미지 레이어 캐시에 매핑된 블록은 정리되지 않아, 새 컨테이너가 이를 상속·열람할 가능성이 있었다. 이에 Cloudflare는 실행 중인 모든 컨테이너 디스크를 폐기하고 해당 캐시를 초기화했으며, 서버를 조용한 시간대에 순차적으로 드레인(drain)·재시작했다. 이 정리 작업은 9월 19일에 완료됐고, 5일 후 취약점을 공개했다.
Cloudflare는 다른 누군가가 동일한 방법을 사용한 흔적이 있는지 조사했다. 연구자들의 PoC와 자체 제작한 공격 코드를 기반으로 탐지 시그니처를 만들어, 보유하고 있던 디스크 활동 기록과 대조했다. 그 결과 연구자들과 자사 엔지니어의 공인된 테스트 외에는 발견되지 않았으며, 이 특정 방법이 다른 누군가에 의해 사용됐다는 증거는 없다고 밝혔다.
이 조사 결과는 Cloudflare가 보유한 기록에 한정되며, 기록의 보존 기간이나 안전하지 않은 설정이 언제부터 적용됐는지는 명시되지 않아, 실제 노출 기간이 얼마나 됐는지는 불분명하다.
연구자들은 동일한 디스크 설정이 Cloudflare의 Browser Run 제품에도 영향을 미친다고 별도로 밝혔다. 이들은 이번 취약점을 7월 이후 공개한 코드 샌드박스 탈출 사례 중 여섯 번째로 설명했으며, 앞선 사례로는 Anthropic의 Claude Cowork 및 Claude Code, Cursor의 커맨드라인 툴, Docker, OpenAI의 Codex에서의 발견이 있다. Cloudflare의 공개 게시물에서는 Containers와 Sandboxes만 영향을 받은 제품으로 언급됐으며, Browser Run은 포함되지 않았다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






