CVE-2026-1721: CVE-2026-1721: JSON.stringify()가 Cloudflare 에이전트에서 당신을 배신할 때

발행: (2026년 2월 15일 오전 05:10 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

개요

  • 취약점 ID: CVE-2026-1721
  • CVSS 점수: 6.2 (중간)
  • 공개일: 2026-02-13
  • 취약점 유형: Reflected Cross‑Site Scripting (XSS)
  • CWE ID: CWE‑79
  • 공격 벡터: 네트워크 (반사형)
  • Exploit 상태: PoC 제공

Cloudflare Agents AI Playground(버전 )에 반사형 XSS 결함이 존재합니다. 브라우저가 생성된 JSON 문자열 내부의 “ 태그를 파싱하면서, 공격자는 JSON 컨텍스트를 탈출하고 임의의 JavaScript를 삽입할 수 있어 세션 탈취 및 데이터 유출(예: LLM 채팅 기록 및 Model Context Protocol (MCP) 서버)로 이어집니다.

기술적 세부 사항

  • 근본 원인: 브라우저가 인라인 HTML 내 스크립트 태그를 파싱하는 방식을 오해함. JSON.stringify는 “ 시퀀스를 이스케이프하지 않으므로, 공격자가 스크립트 태그를 조기에 종료시킬 수 있습니다.

  • 전형적인 취약 코드:

// Vulnerable handler (inline script)
const safeError = JSON.stringify(result.authError);
return new Response(`alert(${safeError})`);
  • 악용 방법: 공격자는 maliciousCode()를 포함한 조작된 authError 값을 제공하여, 삽입된 스크립트가 피해자의 브라우저에서 실행되도록 합니다.

영향

  • 세션 탈취: 공격자는 인증 토큰이나 MCP 세션 식별자를 탈취할 수 있습니다.
  • 데이터 유출: 민감한 채팅 로그와 모델 컨텍스트 데이터가 읽혀서 공격자 제어 엔드포인트로 전송될 수 있습니다.
  • 범위: 취약한 agents npm 패키지를 사용하는 모든 애플리케이션에 영향을 미칩니다.

해결 단계

  • 업그레이드 agents npm 패키지를 버전 0.3.10 이상으로 업데이트합니다.
  • 감사 커스텀 OAuth 콜백 핸들러에서 JSON.stringify(또는 유사한) 사용을 HTML/JS 응답 내부에 포함하고 있지 않은지 확인합니다.
  • 검증 errorerror_description 파라미터가 응답 본문에 그대로 렌더링되지 않도록 합니다.
  • 배포 인라인 스크립트를 차단하고 신뢰된 소스만 허용하는 Content Security Policy (CSP)를 적용합니다.
  • HTML 컨텍스트용 적절한 직렬화기 사용 JSON.stringify 대신 HTML 문자를 이스케이프하는 라이브러리(예: serialize-javascript)를 사용합니다.
  • CSP 구현 인라인 스크립트를 금지(script-src 'self')하고 nonce 또는 hash 기반 스크립트 실행을 허용합니다.

참고 자료

0 조회
Back to Blog

관련 글

더 보기 »