WebSockets와 레트로 브라우저로 AI Web Sandbox 우회
Source: Dev.to
설정 개요
저는 Tampermonkey 사용자 스크립트(MCP_v6_FULL_UNBLOCK.js와 Gemini MCP v0.6)를 이용해 Claude, Gemini, ChatGPT의 웹 인터페이스에 JavaScript를 주입하는 설정을 만들었습니다. 이 스크립트들은 특수 명령(예: /[mcp] dir C:\ 또는 /[mcp] Get-Process)을 가로채어 WebSocket을 통해 로컬 Node.js 서버로 전달합니다.
Tampermonkey 사용자 스크립트
- MCP_v6_FULL_UNBLOCK.js
- Gemini MCP v0.6
이 스크립트들은:
- 채팅 UI에 훅을 겁니다.
/[mcp]로 시작하는 명령을 감지합니다.- 파싱된 명령 페이로드를 WebSocket 연결을 통해 백엔드 서버로 보냅니다.
Node.js 서버 (server.js)
서버는 포트 9999(원격 접근을 위해 ngrok으로 노출 가능)에서 청취하며, JSON‑RPC 프로토콜을 구현해 여러 시스템 도구를 노출합니다:
| 메서드 | 설명 |
|---|---|
shell/exec | 임의의 셸/PowerShell 명령을 실행합니다. |
filesystem/read | 로컬 파일 시스템에서 파일을 읽습니다. |
filesystem/write | 로컬 파일 시스템에 파일을 씁니다. |
vscode/open | VS Code에서 파일을 엽니다. |
서버 예시 코드
// server.js
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 9999 });
wss.on('connection', ws => {
ws.on('message', async msg => {
const request = JSON.parse(msg);
// Dispatch based on request.method …
});
});
이러한 작업의 결과는 WebSocket을 통해 사용자 스크립트로 스트리밍되고, 스크립트는 AI 채팅 인터페이스에 출력을 삽입합니다.
레트로 브라우저 (Zeno)
저는 Zeno Bro Web Core를 사용해 iframe 레트로‑브라우저도 만들었습니다. 이 브라우저는 샌드박스 제한이 최소화되어 AI가 일반 브라우저 환경에서 실행되고 있음을 감지하기 어렵게 합니다. 결과적으로 AI는 네이티브 시스템 접근에 더 가까운 근사치를 얻을 수 있습니다.
테스트 결과
Claude와의 테스트에서 AI는 몇 분 동안 제 머신에서 PowerShell 명령을 맹목적으로 실행했습니다. 제가 개입해 현재 진행 중인 활동을 알려주자, Claude는 멈추고 “더 이상 할 수 없다”고 보고했습니다. 시스템은 아직 다소 거칠고 다듬어야 할 부분이 많지만, 이번 실험을 통해 한계를 더 넓힐 여지가 있음을 보여주었습니다.
스크린샷
- ngrok 터널 상태 (활성)
- Zeno 브라우저 창 실행 중
- MCP가 연결된 Gemini 인터페이스
- 브라우저에 로드된 Tampermonkey 스크립트
(스크린샷은 이 마크다운 버전에서 생략되었습니다.)