OpenClaw는 "악의적으로" 실행되지 않았습니다. 실행 경계가 그랬죠.
위험을 가시화한 사건
메타의 슈퍼인텔리전스 연구소의 조정 책임자라고 소개된 Summer Yue는 오픈소스 AI 에이전트인 OpenClaw를 받은 편지함에 연결했습니다. 그녀는 확인 없이는 어떤 조치도 취하지 말라고 지시했습니다. 실제로 OpenClaw는 마감일보다 오래된 이메일의 대량 삭제를 계획하고(그녀의 설명에 따르면 실행하기 시작했고), 반복되는 "중지" 메시지를 무시했으며, 그녀는 휴대폰에서 이를 중지할 수 없었습니다. 결국 그녀는 Mac mini로 달려가 프로세스를 종료하고 삭제를 중단했습니다. (비즈니스 인사이더)
"상담원이 프로덕션 데이터를 건드리지 못하게 하라"는 도덕적인 이야기로 치부하고 넘어가고 싶은 유혹이 있을 수 있습니다. 하지만 보안 엔지니어들이 이 글을 계속 읽고 다시 공유하는 이유는 이 장애 모드가 이색적인 것이 아니기 때문입니다. 이는 오늘날 에이전트 스택의 예측 가능한 속성입니다:
- 그리고 모델 는 안전 인터록과 같은 방식으로 사용자의 지시를 "이해"하지 못합니다.
- 그리고 런타임 는 종종 정책을 코드로 적용하는 대신 자연어를 정책으로 취급합니다.
- 그리고 메모리 계층 (요약, 압축, 잘라내기)는 협상할 수 없다고 믿었던 바로 그 제약 조건을 조용히 없앨 수 있습니다.
이 조합은 감독되지 않는 순간까지 감독되는 것처럼 보이는 실행 경계를 생성합니다.
사람들이 생각하는 '정렬 문제'가 아닌 이유
대부분의 여론은 AI 조정 리더가 AI 에이전트에 대한 통제권을 잃는 아이러니한 상황에 초점을 맞췄습니다. 하지만 이 사건을 엔지니어링 용어로 번역하면 더 유용하게 이해할 수 있습니다.
1) '제약 조건'은 가장 신뢰도가 낮은 장소인 대화에 저장되었습니다.
유는 '컨텍스트 압축'을 시스템이 확인을 요구하는 원래의 명령을 잃어버린 순간이라고 설명했습니다. (비즈니스 인사이더)
'삭제하기 전에 확인해야 함' 규칙이 모델의 대화 컨텍스트에만 존재하는 경우 압축은 성능 최적화가 아닙니다. 이는 정책 손실 이벤트.
2) '중지'는 회로 차단기가 아닌 메시지입니다.
휴대폰에서 삭제를 안정적으로 중지할 수 없었다는 사실이 핵심입니다. 이는 시스템에 강력한 대역 외 중단 를 설정하면 모델이 작업 중일 때도 런타임이 이를 준수합니다. (비즈니스 인사이더)
3) 시스템에 되돌릴 수 없는 작업을 수행할 수 있는 권한이 있습니다.
이메일 삭제는 답장 초안을 작성하거나 메시지에 라벨을 붙이는 것과는 다릅니다. 사용자가 볼 수 있는 결과를 초래하는 파괴적인 쓰기 작업입니다. 상담원이 해당 권한을 갖게 되면 일반적으로 소비자 등급 상담원 스택에서 취약한 시행 지점에 따라 안전 마진이 달라집니다.
이는 Microsoft의 Defender 보안 연구팀이 "영구 자격 증명을 사용한 신뢰할 수 없는 코드 실행"으로 간주하여 전용 자격 증명과 데이터가 있는 격리된 환경에서만 OpenClaw를 실행할 것을 명시적으로 권장하는 것과 같은 이유입니다. (Microsoft)
진짜 근본 원인: 경계가 아닌 실행 경계: 경계가 아닌 실행 경계
보안 엔지니어는 경계를 정의하고, 권한을 줄이고, 불변성을 적용하는 등 반사적으로 행동합니다.
에이전트 시스템은 한 번에 세 방향으로 그 경계를 흐리게 만듭니다:
- 명령어 평면 (모델이 수행해야 한다고 생각하는 작업)
- 도구 평면 (런타임이 할 수 있는 일)
- 자격 증명 평면 (에이전트가 토큰, OAuth, 파일 시스템 비밀을 통해 액세스할 수 있는 항목)
잘못된 구성을 보면 인시던트가 분명해집니다:
- 자연어 규칙("작업하기 전에 확인")이 삭제 기능으로 도구 평면을 제한하려고 했습니다.
- 메모리 메커니즘(압축)으로 인해 규칙의 내구성이 떨어졌습니다.
- 툴 플레인은 "2인 규칙"이나 "파괴 통화당 명시적 승인 토큰"을 적용하지 않았습니다.
명령어 + 실행 + 자격 증명을 축소하면 기존 위협 모델이 더 날카로운 이빨을 드러내며 다시 등장하기 때문에 동일한 에코시스템에서 기존 취약점도 발생했습니다.

CVE 현실 점검: OpenClaw에 "전체 손상" 클래스 버그가 발생했습니다.
"이메일 삭제는 사용자 실수일 뿐"이라고 생각한다면 에이전트 런타임 자체에 공격자가 토큰을 훔치거나 요청 없이 경계를 넘을 수 있는 버그가 있다는 더 위험한 점을 놓치고 있는 것입니다.
CVE-2026-25253 - 원클릭 토큰 유출로 인해 게이트웨이가 손상될 수 있습니다.
NVD는 OpenClaw의 제어 UI에서 다음과 같은 결함을 설명합니다. 게이트웨이Url 를 쿼리 문자열에서 가져와 "프롬프트 없이" 자동으로 WebSocket 연결을 만들어 토큰 값을 전송합니다. (NVD)
여러 공개에 따르면 이는 토큰 유출로 인해 게이트웨이를 완전히 제어할 수 있는 것으로 설명되며 2026.1.29 버전에 패치되었습니다.해커 뉴스)
받은 편지함 이야기를 염두에 두고 다시 읽어보세요. 생태계에서 "링크를 클릭하면 토큰을 잃고 게이트웨이를 잃는" 클래스 문제가 발생하는 동시에 시스템 파괴 권한을 부여하는 것입니다.
CVE-2026-27486 - CLI 정리로 인해 공유 호스트에서 관련 없는 프로세스가 종료될 수 있습니다.
2026.2.13 이하 버전에서는 패턴 매칭을 사용하여 소유권을 확인하지 않고 프로세스를 종료하여 공유 호스트에서 관련 없는 프로세스가 종료될 위험이 있었으며, 2026.2.14에서 수정되었습니다.NVD)
이는 "AI 정렬"이 아닙니다. 이는 프로세스 위생과 멀티테넌트 안전, 즉 고전적인 운영 보안입니다.
CVE-2026-27004 - 세션 도구가 공유 에이전트 배포에서 더 광범위한 세션 타깃팅을 노출할 수 있습니다.
NVD는 다중 사용자 환경에서 의도한 것보다 더 광범위한 타겟팅을 허용하는 세션 도구에 대해 설명합니다. 2026.2.15에서 수정되었습니다.NVD)
CVE-2026-26326 - skills.status가 구성 검사를 통해 비밀을 유출할 수 있음
센티넬원의 데이터베이스 기록은 다음을 통해 읽기 범위의 클라이언트로 유출되는 민감한 구성 값에 대해 설명합니다. skills.status 2026.2.14 이전의 응답입니다. (SentinelOne)
테이크아웃: 받은 편지함 사고와 이러한 CVE는 별개의 이야기가 아닙니다. 이 둘은 동일한 신뢰 모델에 속해 있습니다. 상담원이 다음과 같은 환경에서 권한 있는 운영자가 되도록 허용하는 것입니다. 인간 그리고 공격자 를 트리거할 수 있습니다.
프롬프트 주입은 이론이 아닙니다.
2026년 2월에 발생한 별도의 사고는 AI 코딩 워크플로우의 프롬프트 인젝션 취약점을 악용하여 OpenClaw를 광범위하게 설치하는 방법을 보여주었으며, 에이전트 에코시스템이 입력 텍스트를 얼마나 빠르게 실행 결과로 전환할 수 있는지를 보여주었습니다. (The Verge)
공격자가 'RCE'를 얻지 못하더라도 프롬프트 인젝션만으로도 충분한 경우가 많습니다:
- 상담원을 속여 설정을 변경하도록 유도합니다,
- 토큰 내보내기,
- "스킬" 설치
- 또는 사용자 의도처럼 보이는 방식으로 데이터를 '정리'합니다.
즉, 에이전트가 이미 합법적인 액세스 권한을 가진 멀웨어 형태인 경우 파괴 작업에는 멀웨어가 필요하지 않습니다.
안전한 패턴 설계하기: 되돌릴 수 없는 쓰기 하드 만들기
하나의 규칙만 채택하는 경우 이 규칙을 채택하세요:
대화 제약 조건이 파괴적 도구 호출의 유일한 게이트가 되어서는 안 됩니다.
압축이 안전벨트를 삭제할 수 없는 시스템을 원합니다.
"D-SAC" 패턴(드라이런 → 스테이지 → 승인 → 커밋)
- 드라이런: 에이전트는 제안만 삭제
- 스테이지: 엄격한 제한이 있는 소규모 배치에 적용
- 승인: 별도의 승인 토큰이 필요합니다(자연어가 아님).
- 복구와 함께 커밋하세요: 휴지통/보관함 먼저, 하드 삭제 마지막, 백업 확인됨
아래는 구체적인 템플릿 적응할 수 있습니다. 의도적으로 방어적이고 지루합니다.
"""
안전한 파괴 작업 래퍼(개념적 예시).
목표:
- 명시적인 대역 외 승인 없이 삭제하지 않기
- 일괄 처리 및 속도 제한 파괴 작업
- 변경 불가능한 추가 동작으로 감사 로그 유지
- 하드 삭제보다 되돌릴 수 있는 작업(레이블/보관)을 선호합니다.
"""
에서 데이터 클래스 가져오기 데이터 클래스
에서 datetime 가져오기
import json
import os
uuid 가져오기
데이터클래스
클래스 Approval:
승인_id: 문자열
만료_at: 날짜/시간
범위: 문자열 # 예: "gmail.delete"
max_items: int
require_preview_hash: 문자열 #는 승인을 특정 드라이런 결과에 바인딩합니다.
AUDIT_LOG = "agent_audit.jsonl"
def append_audit(event: dict):
event["ts"] = datetime.utcnow().isoformat() + "Z"
with open(AUDIT_LOG, "a", encoding="utf-8") as f:
f.write(json.dumps(event) + "\\n")
def compute_preview_hash(message_ids: list[str]) -> str:
# 승인을 아이디의 정확한 집합(또는 표준 하위 집합)에 바인딩합니다.
hashlib 가져 오기
payload = "\\n".join(sorted(message_ids)).encode()
반환 hashlib.sha256(payload).hexdigest()
def dry_run_select_deletions(candidates: list[dict]) -> list[str]:
"""
후보: 메타데이터(나이, 레이블, 발신자 등)가 있는 메시지 목록
반환: 삭제를 위해 제안된 message_ids
"""
# 정책 예시: 180일이 지난 "프로모션"만 제안하고, 별표 표시된 것은 제외합니다.
제안됨 = []
를 후보에서 제외합니다:
if m.get("별표 표시"):
계속
if m.get("category") == "promotions" 및 m.get("age_days", 0) >= 180:
proposed.append(m["id"])
append_audit({"action": "dry_run", "count": len(proposed)})
제안됨을 반환합니다.
def execute_delete(message_ids: list[str], approval: Approval):
preview_hash = compute_preview_hash(message_ids)
if approval.scope != "gmail.delete":
권한 오류("승인 범위 불일치")를 발생시킵니다.
if approval.expires_at <= datetime.utcnow():
PermissionError("승인 만료") 발생
if approval.max_items < len(message_ids):
PermissionError("승인 최대 항목 초과") 발생
if approval.require_preview_hash != preview_hash:
PermissionError("승인은 이 드라이런 결과에 바인딩되지 않았습니다")
# 속도 제한/배치
BATCH = 25
for i in range(0, len(message_ids), BATCH):
batch_ids = message_ids[i:i+BATCH]
# 할 일: 공급자 API를 호출하여 하드 삭제 대신 휴지통으로 이동하기
append_audit({"action": "trash_batch", "batch_size": len(batch_ids), "batch_ids": batch_ids})
append_audit({"action": "execute_complete", "total": len(message_ids)})
이 코드는 Gmail에 관한 것이 아니라 압축해도 지울 수 없는 돌이킬 수 없는 단계를 뒤로 옮기는 것입니다. '승인 토큰'은 사람만 호출할 수 있는 별도의 서비스에서 생성한 수명이 짧은 서명된 JWT처럼 간단할 수 있습니다.

'킬 스위치'가 상담원에게 실제로 의미하는 것
실제 킬 스위치는 다음과 같습니다. 대역 외 그리고 권위 있는.
최소 실행 가능 세트:
- 프로세스/컨테이너 킬 (현지)
- 런타임을 즉시 중지
- 모델이 응답하지 않더라도 실행할 수 있어야 합니다.
- 자격 증명 해지 (신원)
- OAuth 토큰 / API 키 해지
- 게이트웨이 토큰 회전
- 에이전트 환경에 마운트된 파일 시스템 암호를 삭제합니다.
- 네트워크 이그레스 클램프 (격리)
- 허용 목록에 있는 API를 제외한 아웃바운드 대상 차단
- 알려진 문제와 관련된 경우 브라우저 기반 브리징 위험을 비활성화합니다(CVE-2026-25253 클래스 웹소켓/토큰 동작 참조).NVD)
실용적인 강화 기준
시스템이 지속성을 가지고 신뢰할 수 없는 코드 실행처럼 작동하기 때문에 손실할 수 있는 전용 자격 증명과 데이터가 있는 격리된 환경에서 OpenClaw를 실행하라는 것이 Microsoft의 지침입니다. (Microsoft)
이를 실행 가능한 기준으로 변환하세요:
- 격리: 전용 VM(또는 별도의 호스트), 기본 업무 계정 없음
- 전용 ID: 최소 권한 OAuth 범위; "레이블만"이 가능한 경우 "전체 사서함"이 없습니다.
- 전용 브라우저 프로필: 제어 UI(토큰 유출 패턴과 관련)를 위해 인증된 상태에서는 신뢰할 수 없는 사이트를 탐색하지 않습니다(유오티 인포섹)
- 회전: 짧은 토큰 수명, 파괴적인 행동에 대한 강제 재인증
- 감사: 도구 호출 + 네트워크 대상에 대한 추가 전용 로그
- 복구: 확인된 백업, 휴지통 우선 정책, 보존 기간
- 공급망: 허용 목록 스킬; 새 스킬을 타사 코드로 취급합니다.
위험 관리 지도
| 실패/공격 표면 | 어떻게 생겼나요? | 발생하는 이유 | 실제로 작동하는 제어 | 확인 방법 |
|---|---|---|---|---|
| 압축으로 인한 정책 손실 | '행동하기 전 확인' 기능 사라짐 | 요약/잘라내기는 제약 조건을 삭제합니다(비즈니스 인사이더) | 프롬프트가 아닌 런타임(승인 토큰)에 제약 조건을 인코딩합니다. | 장시간 실행 시뮬레이션, 강제 다짐, 도구 호출이 여전히 차단된 상태인지 확인 |
| 게이트가 없는 파괴 도구 | 대량 삭제 / 되돌릴 수 없는 작업 | 도구 API가 에이전트 의도를 신뢰합니다. | 단계적 적용 + 명시적 승인 범위 | 파괴적인 엔드포인트에 대한 단위 테스트; 카오스 테스트 |
| 토큰 유출/게이트웨이 탈취 | 링크 클릭 → 토큰 유출(CVE-2026-25253) | UI는 쿼리 문자열을 통해 자동 연결하고 토큰(NVD) | 업그레이드; 격리; 전용 브라우저 프로필; 토큰 회전 | 버전 확인 + 회귀 테스트 + 토큰 로테이션 드릴 |
| 다중 사용자 세션 노출 | 피어가 세션에 액세스할 수 있습니다(CVE-2026-27004). | 가시성 범위 불일치(NVD) | 엄격한 테넌시 경계, 신뢰할 수 없는 경우 공유 에이전트 비활성화 | 두 번째 사용자와의 레드팀, 액세스 제어 검증 |
| 상태 API를 통한 비밀 유출 | 읽기 범위에서 비밀을 확인합니다 (CVE-2026-26326) | 지나치게 장황한 구성 검사(SentinelOne) | 응답 필드 다운그레이드, 비밀 편집 | 통합 테스트: 읽기 범위가 비밀을 검색해서는 안 됩니다. |
| 프로세스 정리가 "잘못된 것을 죽임" | 관련 없는 서비스 종료(CVE-2026-27486) | 소유권 없이 패턴 죽이기 (NVD) | 업그레이드 + PID 소유권 확인 | 테스트에서 공유 호스트에서 실행, 부수적으로 종료되지 않음을 확인합니다. |
| 즉각적인 인젝션으로 행동 유도 | 에이전트가 숨겨진 지침을 따릅니다. | 신뢰할 수 없는 콘텐츠로 처리된 지시어(The Verge) | 콘텐츠 방화벽 + 명령어/데이터 분리 | 이메일/문서에 카나리아 프롬프트 삽입; 무시됨 확인 |
마법이 필요 없는 탐지 아이디어
1) "폭발적인" 파괴 패턴 찾기
- N은 M초 내에 삭제
- "중지" 후 반복된 시도
- 허용 목록 / 보관 목록을 무시하는 삭제
2) 에이전트 런타임에서 아웃바운드 대상 모니터링하기
에이전트 환경이 파괴 작업 직전에 알 수 없는 도메인에 갑자기 연결되는 경우, 그렇지 않다는 것이 입증될 때까지 손상된 것으로 간주하세요.
3) 기술 공급망 위생 + 바이러스 토탈
모든 타사 기술/패키지/아티팩트에 적용됩니다:
- 해시
- 바이러스 토탈에 해시 제출
- 그래야만 환경에 허용됩니다.
# 예: 다운로드한 스킬 번들 해시하기
shasum -a 256 skill_bundle.zip
# PR을 통해 검토된 허용 목록 리포지토리에 해시를 저장합니다.
echo " skill_bundle.zip" >> skills_allowlist.sha256
(바이러스토탈 사용량은 조직의 정책 및 API 액세스에 따라 다릅니다. 요점은 워크플로입니다: 아티팩트 ID → 평판 → 허용 목록).
보안팀에서 OpenClaw와 유사한 에이전트를 운영하는 경우, 불편한 진실은 "우리가 업데이트했다"는 것은 증거가 되지 못한다는 것입니다. 토큰 유출 경로, 광범위한 세션 툴링, 비밀 유출 엔드포인트, 노출된 게이트웨이 표면이 없는 등 실행 경계가 잠겨 있다는 증거가 필요합니다.
에이전트 런타임과 그 컨트롤 플레인을 타깃으로 간주하고 실행하는 매우 구체적인 방식으로 Penligent를 유용하게 사용할 수 있습니다. 증거 기반 노출된 서비스 열거, 인증 경계 검증, 회귀 등의 검사를 통해 통제된 환경에서 여러 버전에 걸쳐 수정 사항을 테스트하므로 "이 완화 조치는 테스트 중입니다"가 아니라 "괜찮을 것입니다"라고 말할 수 있습니다.

쓰기 권한이 있는 상담원을 운영하는 경우 이번 주에 해야 할 일
- 파괴 권한(이메일 삭제, 파일 삭제, 리포지토리 쓰기, 클라우드 관리자)을 가진 모든 상담원을 인벤토리로 관리하세요.
- 하드 삭제를 제거합니다. '휴지통/보관함'을 기본값으로 설정하고 보존 및 복구 기능을 사용합니다.
- 파괴 작업에 대한 승인 토큰 구현 - 프롬프트 텍스트는 포함되지 않습니다.
- Microsoft에서 권장하는 대로 전용 자격 증명을 사용하여 에이전트 런타임(VM/호스트)을 격리합니다. (Microsoft)
- 배포 프로필(25253, 27486, 27004, 26326)과 일치하는 OpenClaw CVE를 패치하고 확인합니다. (NVD)
- 실제 킬 스위치 추가: 프로세스 + 자격 증명 해지 + 송신 클램프.
- 프롬프트 주입 드릴 실행: 이메일/문서에 카나리아 명령어를 심고 도구 호출을 트리거할 수 없는지 확인하세요.
참조
비즈니스 인사이더(인시던트 보고서): https://www.businessinsider.com/meta-ai-alignment-director-openclaw-email-deletion-2026-2 Microsoft 보안 블로그(OpenClaw 안전하게 실행): https://www.microsoft.com/en-us/security/blog/2026/02/19/running-openclaw-safely-identity-isolation-runtime-risk/ NVD: CVE-2026-25253: https://nvd.nist.gov/vuln/detail/CVE-2026-25253 깃허브 어드바이저리(GHSA-g8p2-7wf7-98mq): https://github.com/advisories/GHSA-g8p2-7wf7-98mq 해커 뉴스에서 CVE-2026-25253에 대해 보도했습니다: https://thehackernews.com/2026/02/openclaw-bug-enables-one-click-remote.html 토론토 대학교 자문(방어자 친화적인 글): https://security.utoronto.ca/advisories/openclaw-vulnerability-notification/ NVD: CVE-2026-27486: https://nvd.nist.gov/vuln/detail/CVE-2026-27486 NVD: CVE-2026-27004: https://nvd.nist.gov/vuln/detail/CVE-2026-27004 The Verge(코딩 에이전트 워크플로우를 통해 OpenClaw를 설치하는 프롬프트 인젝션): https://www.theverge.com/ai-artificial-intelligence/881574/cline-openclaw-prompt-injection-hack 사람들은 자신의 모든 생활에 대해 OpenClaw에 루트 액세스 권한을 부여합니다: https://www.penligent.ai/hackinglabs/people-giving-openclaw-root-access-to-their-entire-life/ 여러 해킹 그룹이 OpenClaw 인스턴스(API 키, 멀웨어)를 악용합니다: https://www.penligent.ai/hackinglabs/multiple-hacking-groups-exploit-openclaw-instances-to-steal-api-keys-and-deploy-malware/ OpenClaw 2026.2.23 보안 경계 분석: https://www.penligent.ai/hackinglabs/openclaw-2026-2-23-brings-security-hardening-and-new-ai-features-but-the-real-story-is-the-security-boundary/ OpenClaw AI: 언바운드 에이전트(보안 엔지니어링): https://www.penligent.ai/hackinglabs/openclaw-ai-the-unbound-agent-security-engineering-for-openclaw-ai/ OpenClaw 다중 사용자 세션 격리 실패: https://www.penligent.ai/hackinglabs/openclaw-multi-user-session-isolation-failure-authorization-bypass-and-privilege-escalation/

