🇰🇷 한글 설명
Symfony UX의 자동완성 엔드포인트에서 사용자 입력을 SQL LIKE 표현식에 이스케이프 없이 사용하여 SQL 와일드카드(%, _, \) 주입이 가능합니다. 인증되지 않은 사용자가 공개 엔드포인트를 통해 광범위한 매칭 또는 블라인드 불리언 오라클로 악용할 수 있습니다. 2.36.0 및 3.1.0 버전에서 수정되었습니다.
💡 쉬운 설명
웹사이트의 자동완성 검색 기능이 입력값의 특수문자를 제대로 처리하지 않아, 누구나 로그인 없이 데이터베이스의 정보를 조금씩 추측해 볼 수 있습니다. 해당 버전을 업데이트하면 이 문제가 해결됩니다.
🇺🇸 원문 (English)
Symfony UX is a JavaScript ecosystem for Symfony. From 2.2.0 until 2.36.0 and 3.1.0, Symfony\UX\Autocomplete\Doctrine\EntitySearchUtil::addSearchClause() builds the LIKE expression used by the autocomplete endpoint by wrapping the client-supplied query in %...% without escaping SQL LIKE wildcards (%, _, \), allowing unauthenticated users to turn the public BaseEntityAutocompleteType endpoint into a broad matcher or blind boolean oracle against every column in default searchable_fields. This issue is fixed in versions 2.36.0 and 3.1.0.
📍 영향받는 시스템
Symfony UX Autocomplete 2.2.0 ~ 2.36.0 미만, 3.0.x 및 3.1.0 미만을 사용하는 Symfony 애플리케이션
⚔️ 공격 벡터
인증 없이 공개 BaseEntityAutocompleteType 엔드포인트에 %, _ 등 LIKE 와일드카드를 포함한 질의를 보내 전체 매칭 또는 불리언 기반 블라인드 SQL 정보 추출을 수행
🛡️ 대응 방법
symfony/ux-autocomplete 패키지를 2.36.0 이상 또는 3.1.0 이상으로 업데이트
🔧 검증 코드
출력된 버전이 2.36.0 이상(2.x 계열) 또는 3.1.0 이상(3.x 계열)이면 패치된 것이며, 그 미만이면 취약하므로 업데이트가 필요합니다.
composer show symfony/ux-autocomplete 2>/dev/null | grep -i versions