WordPress WP_Query 'author__not_in' 매개변수 SQL 인젝션 취약점 (CVE-2026-60137)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTWordPress 코어 버전 6.8.x (6.8.6 미만), 6.9.x (6.9.5 미만), 7.0.x (7.0.2 미만)
취약한 플러그인이나 테마가 검증되지 않은 사용자 입력을 WP_Query의 'author__not_in' 매개변수로 전달할 경우, 공격자가 데이터베이스의 민감한 정보를 탈취할 수 있는 SQL 인젝션(SQLi) 공격이 가능합니다.
WordPress 코어를 최신 보안 패치 버전(6.8.6, 6.9.5, 7.0.2 이상)으로 즉시 업데이트하고, 웹 애플리케이션 방화벽(WAF) 규칙을 적용하십시오.
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
PATCH & WORKAROUND1. WordPress 코어 업데이트
가장 확실한 해결책은 WordPress를 공식 패치가 적용된 버전으로 업데이트하는 것입니다.
- WordPress 7.0 계열: 7.0.2 이상으로 업데이트
- WordPress 6.9 계열: 6.9.5 이상으로 업데이트
- WordPress 6.8 계열: 6.8.6 이상으로 업데이트
WP-CLI를 사용하는 환경에서는 아래 명령어를 통해 즉시 업데이트를 수행할 수 있습니다.
# WordPress 코어 업데이트 수행
wp core update --version=7.0.22. 임시 완화 조치 (WAF 규칙 적용)
패치 적용 전까지, 웹 애플리케이션 방화벽(WAF)을 통해 author__not_in 매개변수에 숫자가 아닌 문자열이나 SQL 특수문자(싱글 쿼터, 주석 처리 등)가 포함된 요청을 차단하십시오.
ModSecurity 규칙 예시:
SecRule ARGS:author__not_in "[^0-9,]" \
"id:1000001,\
phase:2,\
deny,\
status:400,\
log,\
msg:'CVE-2026-60137: SQLi Attempt in author__not_in parameter'"3. 개발자 가이드 (플러그인/테마 개발자)
플러그인이나 테마에서 WP_Query를 호출할 때, 외부 입력값을 정수형 배열로 강제 변환(Type Casting)하여 안전하게 처리하십시오.
// 취약한 코드 예시
$args = [
'author__not_in' => $_GET['exclude_authors']
];
$query = new WP_Query($args);
// 안전한 코드 예시 (정수형 배열로 변환)
$exclude_authors = isset($_GET['exclude_authors']) ? array_map('intval', (array)$_GET['exclude_authors']) :;
$args = [
'author__not_in' => $exclude_authors
];
$query = new WP_Query($args);코드 수정 전에도 가상 패치(Virtual Patching)로 웹 공격을 즉시 차단하세요
서버 재시작이나 긴급 패치가 어려운 운영 환경이라면 클라우드 WAF 관리형 룰셋을 활성화하여 SQLi, RCE, XSS 익스플로잇 페이로드를 엣지에서 1분 만에 차단할 수 있습니다.
취약점 발생 원리 및 공격 메커니즘
본 취약점(CVE-2026-60137)은 WordPress의 핵심 데이터베이스 쿼리 클래스인 WP_Query에서 발생합니다. 구체적으로 author__not_in 매개변수를 처리할 때 입력값에 대한 적절한 정제(Sanitization) 및 타입 캐스팅이 누락되어 발생합니다.
일반적으로 WordPress 코어 자체는 사용자 입력을 직접 WP_Query에 바인딩하지 않지만, 수많은 서드파티 플러그인 및 테마가 HTTP 요청 매개변수(GET/POST)를 검증 없이 WP_Query 배열 인자로 직접 전달하는 패턴을 사용합니다. 공격자는 이 경로를 악용하여 악의적인 SQL 구문을 주입할 수 있으며, 데이터베이스 내의 사용자 자격 증명(비밀번호 해시), 세션 토큰 및 기타 민감한 비공개 데이터를 조회할 수 있습니다.
이 취약점은 미정부 CISA KEV(Known Exploited Vulnerabilities) 카탈로그에 등재되어 실제 야생(In-the-Wild)에서 적극적으로 악용되고 있음이 확인되었으며, EPSS 점수가 0.94(94%)에 달해 매우 신속한 대응이 요구됩니다.
공식 보안 권고문 및 참조 링크
WordPress 6.8.x before 6.8.6, 6.9.x before 6.9.5, and 7.0.x before 7.0.2 does not properly sanitise the author__not_in parameter of WP_Query, which could allow SQL Injection when a plugin or theme passes untrusted input to the parameter.
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.