
Core REST Batch API 엔드포인트에 인증을 요구하여 wp2shell 취약점 체인(CVE-2026-63030)을 완화하는 임시 WordPress 플러그인입니다. 선택적 감사 로그 및 설정 페이지를 포함합니다.
WordPress Core REST Batch API 엔드포인트에 대한 인증되지 않은 접근을 차단하는 임시 대응책입니다.
SkelerSecurity Core Security Plugin은 WordPress가 Core REST Batch API 라우트에 대한 요청을 처리하기 전에 인증을 요구합니다.
/wp-json/batch/v1/?rest_route=/batch/v1이 플러그인은 일반적으로 wp2shell로 알려진 WordPress REST Batch API 취약점 체인에 대한 깊이 있는 방어 조치로 설계되었습니다. WordPress의 rest_pre_dispatch 필터를 사용하여 익명 배치 요청을 HTTP 401 Unauthorized로 거부하며, 인증된 WordPress 및 REST API 사용자의 접근은 유지합니다.
[!IMPORTANT] 이 플러그인은 임시 완화 조치이며 WordPress Core 업데이트를 대체하지 않습니다. 최신 WordPress 보안 릴리스를 즉시 적용하고 업데이트가 성공적으로 완료되었는지 확인하십시오.
공개 보고서에 따르면 REST Batch API 라우트 혼동(CVE-2026-63030)과 관련 SQL 인젝션 문제(CVE-2026-60137)를 포함하는 WordPress Core의 심각한 취약점 체인이 있습니다. 영향을 받는 엔드포인트는 pretty-permalink 및 query-string REST 라우팅 형식 모두에서 접근할 수 있습니다.
보고된 영향을 받는 Core 릴리스는 다음과 같습니다.
| 브랜치 | 영향을 받는 릴리스 | 수정된 릴리스 |
|---|---|---|
| WordPress 6.9 | 6.9.0–6.9.4 | 6.9.5 |
| WordPress 7.0 | 7.0.0–7.0.1 | 7.0.2 |
WordPress 6.8 브랜치도 6.8.6에서 관련 강화 조치를 받았습니다. 환경에 사용 가능한 가장 최신 지원 WordPress 릴리스를 사용하고, 버전 범위를 업데이트 지연의 이유로 삼지 마십시오.
/batch/v1 REST 라우트에 대해 유효한 인증된 WordPress 사용자를 요구합니다./wp-json/batch/v1 및 ?rest_route=/batch/v1 두 형식을 모두 처리합니다. WordPress는 이 둘을 동일한 REST 라우트로 해석합니다.401과 함께 표준 REST 오류를 반환합니다.rest_pre_dispatch 우선순위 -1000)에 실행됩니다.가장 강력한 임시 보호를 위해, 이 플러그인을 위에 나열된 두 엔드포인트 형식 모두에 대한 익명 요청을 차단하는 WAF 또는 리버스 프록시 규칙과 함께 사용하십시오.
skelersecurity-core-security 디렉토리를 다음 경로로 복사합니다.
wp-content/plugins/
플러그인 → 설치된 플러그인에서 플러그인을 활성화합니다.
도구 → SkelerSecurity Core에서 플러그인 상태를 확인합니다.
wp plugin activate skelersecurity-core-security
플러그인은 활성화 직후 즉시 활성화됩니다. 도구 → SkelerSecurity Core에서 다음을 관리할 수 있습니다.
| 설정 | 기본값 | 설명 |
|---|---|---|
| Batch API 보호 | 활성화됨 | Core REST Batch API 라우트에 대해 인증을 요구합니다. |
| 최소 감사 로그 | 활성화됨 | 익명 Batch API 요청이 차단될 때 기록합니다. |
| 유지할 항목 수 | 50 |
선택적 감사 로그는 다음만 저장합니다.
/batch/v1)IP 주소, 쿠키, 인증 헤더, 요청 본문, 사용자 이름 또는 기타 민감한 요청 데이터는 의도적으로 기록하지 않습니다.
| 요청 유형 | 보호가 활성화된 경우 예상 결과 |
|---|---|
/wp-json/batch/v1에 대한 익명 요청 | HTTP 401로 차단 |
익명 차단 응답은 다음 오류 코드를 사용합니다.
rest_batch_authentication_required
/wp-json/batch/v1rest_route=/batch/v1Batch API는 WordPress 관리 워크플로우, 플러그인, 테마, 모바일 클라이언트 또는 외부 통합에 사용될 수 있습니다. 인증된 요청은 계속 허용되지만, 플러그인 활성화 후 비즈니스에 중요한 기능을 테스트하십시오.
잠재적 영향으로는 의도적으로 인증되지 않은 요청을 Core Batch API에 제출하는 통합이 포함될 수 있습니다. 그러한 동작이 필요한 경우 위험을 신중히 평가하고 엔드포인트를 광범위하게 노출하는 대신 적절히 인증된 통합을 구현하십시오.
네트워크 계층 완화는 두 라우팅 스타일을 모두 다루어야 합니다. /wp-json/batch/v1만 차단하는 것만으로는 충분하지 않습니다. WordPress는 rest_route 쿼리 매개변수를 통해 요청을 라우팅할 수도 있기 때문입니다.
권장 규칙 논리:
/wp-json/batch/v1인 익명 요청을 거부합니다(선택적 후행 슬래시 허용).rest_route=/batch/v1이 있는 익명 요청을 거부합니다.환경에서 규칙을 테스트하십시오. 이 플러그인은 WAF 변경을 즉시 배포할 수 없을 때 유용하지만, WordPress Core 패치를 방해해서는 안 됩니다.
공개 GitHub 이슈를 통해 보안 취약점을 보고하지 마십시오.
의심되는 취약점은 보안 담당자 또는 저장소 소유자에게 비공개로 보고하십시오. 명확한 설명, 영향을 받는 버전, 재현 가능한 개념 증명 및 영향 평가를 포함하십시오. 자격 증명, 개인 데이터 또는 파괴적 페이로드를 포함하지 마십시오.
이 프로젝트는 GNU General Public License v2.0 또는 이후 버전에 따라 라이선스가 부여됩니다.
| 로컬 감사 항목의 보존 한도입니다. 10에서 200까지 구성 가능합니다. |
/?rest_route=/batch/v1에 대한 익명 요청 | HTTP 401로 차단 |
/batch/v1에 대한 인증된 WordPress/REST 요청 | 정상적인 WordPress 권한 부여 처리를 위해 허용 |
| 다른 REST 라우트에 대한 요청 | 이 플러그인에 의해 변경되지 않음 |