WebSockets와 레트로 브라우저로 AI Web Sandbox 우회

발행: (2026년 1월 18일 오전 09:54 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

설정 개요

저는 Tampermonkey 사용자 스크립트(MCP_v6_FULL_UNBLOCK.jsGemini 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

이 스크립트들은:

  1. 채팅 UI에 훅을 겁니다.
  2. /[mcp] 로 시작하는 명령을 감지합니다.
  3. 파싱된 명령 페이로드를 WebSocket 연결을 통해 백엔드 서버로 보냅니다.

Node.js 서버 (server.js)

서버는 포트 9999(원격 접근을 위해 ngrok으로 노출 가능)에서 청취하며, JSON‑RPC 프로토콜을 구현해 여러 시스템 도구를 노출합니다:

메서드설명
shell/exec임의의 셸/PowerShell 명령을 실행합니다.
filesystem/read로컬 파일 시스템에서 파일을 읽습니다.
filesystem/write로컬 파일 시스템에 파일을 씁니다.
vscode/openVS 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 스크립트

(스크린샷은 이 마크다운 버전에서 생략되었습니다.)

Back to Blog

관련 글

더 보기 »