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

발행: (2026년 1월 18일 오전 09:54 GMT+9)
4 min read
원문: 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

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...