Skip to content

Gentlee-dev/React2shell-scanner-plugin

Repository files navigation

🛡️ React2Shell 취약점 스캐너

CVE-2025-55182 (React2Shell) 취약점을 탐지하는 Chrome 확장 프로그램입니다.

📋 개요

React2Shell은 React Server Components (RSC)의 안전하지 않은 역직렬화 취약점(CVE-2025-55182)을 탐지하는 보안 도구입니다. 이 취약점은 CVSS 10.0 점수를 받은 치명적인 원격 코드 실행(RCE) 취약점입니다.

영향받는 버전

  • React 19.0, 19.1.0, 19.1.1, 19.2.0
  • Next.js 15.x, 16.x (App Router 사용 시)

🚀 설치 방법

1. 의존성 설치

npm install

2. 아이콘 생성

먼저 확장 프로그램에 필요한 아이콘을 생성해야 합니다:

# 브라우저에서 generate-icons.html 열기
open generate-icons.html
  1. "모든 아이콘 생성 및 다운로드" 버튼 클릭
  2. 다운로드된 12개의 PNG 파일을 icons/ 폴더로 이동

3. 빌드

TypeScript 코드를 컴파일하고 확장 프로그램을 빌드합니다:

npm run build

빌드가 완료되면 dist/ 폴더에 실행 가능한 확장 프로그램이 생성됩니다.

4. Chrome에 확장 프로그램 로드

  1. Chrome 브라우저를 엽니다
  2. 주소창에 chrome://extensions/ 입력
  3. 우측 상단의 "개발자 모드" 활성화
  4. "압축해제된 확장 프로그램을 로드합니다" 클릭
  5. dist 폴더 선택

💡 사용 방법

자동 탐지 (Safe Mode)

확장 프로그램이 설치되면 모든 웹사이트에서 자동으로 React Server Components 사용 여부를 탐지합니다.

배지 색상:

  • 🔴 빨강 (!): 고위험 - RSC 사용 감지됨
  • 🟡 노랑 (?): 중위험 - Next.js 감지됨 (RSC 불확실)
  • 🟢 초록 (✓): 저위험 - React만 감지됨
  • 회색: 위험 없음 - React 미감지

수동 취약점 테스트

  1. 확장 프로그램 아이콘 클릭
  2. 팝업에서 "취약점 테스트 실행" 버튼 클릭
  3. 경고 메시지 확인 후 진행
  4. 결과 확인

⚠️ 주의: 취약점 테스트는 대상 시스템에 실제 요청을 전송합니다. 권한이 있는 시스템에서만 실행하세요.

🔍 탐지 방법

확장 프로그램은 다음 지표들을 확인합니다:

  1. __NEXT_DATA__ 객체: Next.js 사용 여부
  2. App Router DOM 요소: [data-nextjs-scroll-focus-boundary] 속성
  3. /_next/static/ 리소스: Next.js 정적 파일
  4. RSC 관련 속성: [data-rsc], [data-next-rsc]

📁 프로젝트 구조

react2shell-scanner-plugin/
├── src/                    # TypeScript 소스 코드
│   ├── types.ts            # 타입 정의
│   ├── scanner.ts          # 핵심 탐지 로직
│   ├── content-script.ts   # 페이지 스크립트
│   ├── background.ts       # 백그라운드 서비스 워커
│   └── popup.ts            # 팝업 로직
├── dist/                   # 빌드 결과물 (Chrome 로드용)
│   ├── manifest.json
│   ├── *.js
│   ├── popup.html
│   ├── popup.css
│   └── icons/
├── icons/                  # 확장 프로그램 아이콘
│   ├── icon-red-*.png
│   ├── icon-yellow-*.png
│   ├── icon-green-*.png
│   └── icon-gray-*.png
├── popup.html              # 팝업 UI
├── popup.css               # 팝업 스타일
├── package.json            # 프로젝트 의존성
├── tsconfig.json           # TypeScript 설정
├── build.sh                # 빌드 스크립트
├── generate-icons.html     # 아이콘 생성 도구
└── README.md               # 이 파일

🛠️ 개발

기술 스택

  • Manifest Version: V3
  • 언어: TypeScript 5.3+
  • 빌드 도구: TypeScript Compiler
  • 의존성: @types/chrome (개발 의존성만)

개발 명령어

# 의존성 설치
npm install

# TypeScript 컴파일만 실행
npm run compile

# 전체 빌드 (컴파일 + 파일 복사)
npm run build

# Watch 모드 (자동 재컴파일)
npm run watch

# dist 폴더 정리
npm run clean

# 전체 재빌드
npm run package

디버깅

  1. chrome://extensions/에서 확장 프로그램의 "상세정보" 클릭
  2. "백그라운드 페이지 검사" 또는 "팝업 검사" 클릭
  3. 개발자 도구에서 콘솔 로그 확인

로컬 개발

코드 수정 후:

  1. TypeScript 파일 수정 (src/*.ts)
  2. npm run build 실행
  3. chrome://extensions/에서 새로고침 버튼 클릭
  4. 페이지 새로고침하여 테스트

Tip: Watch 모드 사용 시

npm run watch

TypeScript 파일이 자동으로 재컴파일되며, Chrome에서 확장 프로그램만 새로고침하면 됩니다.

🔒 보안 및 윤리

사용 제한

이 도구는 다음 목적으로만 사용해야 합니다:

  • ✅ 자신이 소유한 웹사이트 테스트
  • ✅ 권한을 받은 침투 테스트
  • ✅ 보안 연구 및 교육
  • ✅ 버그 바운티 프로그램

금지 사항

  • ❌ 무단 시스템 테스트
  • ❌ 악의적인 목적의 사용
  • ❌ 법적 권한 없는 침투 테스트

책임 제한

이 도구의 사용으로 인한 모든 책임은 사용자에게 있습니다. 개발자는 부적절한 사용에 대해 책임지지 않습니다.

📚 참고 자료

📦 배포

Chrome Web Store 배포 준비

# 배포용 패키지 생성
npm run package

이 명령은 다음을 수행합니다:

  1. 이전 빌드 정리
  2. 전체 재빌드
  3. 필수 파일 검증
  4. react2shell-scanner-v1.0.0.zip 생성

배포 파일 구조

ZIP 파일에는 다음만 포함됩니다:

react2shell-scanner-v1.0.0.zip
├── manifest.json
├── background.js
├── scanner.js
├── content-script.js
├── popup.js
├── popup.html
├── popup.css
└── icons/
    ├── icon-red-16.png
    ├── icon-red-48.png
    ├── icon-red-128.png
    ├── (기타 아이콘들...)

포함되지 않는 것:

  • ❌ TypeScript 소스 코드 (src/)
  • node_modules/
  • ❌ 개발 설정 파일 (tsconfig.json, package.json 등)
  • ❌ 소스맵 파일 (*.map)

Chrome Web Store 업로드

  1. Chrome Developer Dashboard 접속
  2. "새 항목" 클릭
  3. 생성된 ZIP 파일 업로드
  4. 스토어 정보 입력
  5. 검토 제출

로컬 배포 (사이드로딩)

개발 목적이나 테스트를 위해:

# dist 폴더를 직접 사용
npm run build

# Chrome에서 chrome://extensions/ 열기
# "압축해제된 확장 프로그램을 로드합니다"로 dist/ 폴더 선택

또는 ZIP 압축 해제 후 사용:

npm run package
unzip react2shell-scanner-v1.0.0.zip -d extracted/
# Chrome에서 extracted/ 폴더 로드

🔄 업데이트 계획

Phase 1: 기본 탐지 ✅

  • 확장 프로그램 구조
  • RSC 수동 탐지
  • 배지 아이콘 업데이트
  • 기본 팝업 UI

Phase 2: 고급 기능 (예정)

  • 버전 자동 탐지 개선
  • 스캔 히스토리
  • 설정 페이지
  • 알림 기능 개선

Phase 3: 최적화 (예정)

  • 성능 최적화
  • 오류 처리 개선
  • 다국어 지원
  • 내보내기 기능

📝 라이선스

이 프로젝트는 교육 및 보안 연구 목적으로 제공됩니다.

🤝 기여

버그 리포트, 기능 제안, Pull Request를 환영합니다!

⚠️ 면책 조항

이 도구는 보안 연구 및 방어 목적으로만 제공됩니다. 사용자는 모든 관련 법률과 규정을 준수할 책임이 있습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors