🇰🇷 한글 설명
phpMyFAQ 4.1.7 미만 버전에서 PostgreSQL을 사용할 때, 검색 기능의 와일드카드 이스케이프 설정 오류로 인해 발생합니다. 공격자가 검색창에 특수 문자를 입력하면 과도한 데이터 검색을 유도하여 시스템 성능을 저하시키고 서비스 거부(DoS) 상태를 만들 수 있습니다.
💡 쉬운 설명
검색창에 특정 기호를 넣으면 시스템이 너무 많은 데이터를 한꺼번에 찾으려고 노력하다가 과부하가 걸려 멈출 수 있는 문제입니다. 이로 인해 일반 사용자들이 웹사이트를 이용하지 못하게 될 수 있습니다.
🇺🇸 원문 (English)
phpMyFAQ before 4.1.7, when configured to use PostgreSQL via the native pgsql PHP extension, declares an incorrect LIKE ESCAPE character ('=') in the Search/Database/Pgsql.php backend while escapeLikeWildcards() escapes user input with the '|' prefix. As a result, wildcard escaping is a no-op and user-supplied % and _ characters remain active LIKE wildcards. An unauthenticated attacker can submit such characters in the public FAQ search form to force maximally broad pattern matches and expensive sequential scans, resulting in a denial of service. The PDO PostgreSQL backend is not affected, and quotes remain escaped so this does not enable quote-breaking SQL injection or data exfiltration.
📍 영향받는 시스템
phpMyFAQ version < 4.1.7 (PostgreSQL 및 native pgsql 확장 모듈 사용 시)
⚔️ 공격 벡터
인증되지 않은 공격자가 공개된 FAQ 검색 양식에 특수 와일드카드 문자(% 또는 _)를 입력하여 공격
🛡️ 대응 방법
phpMyFAQ를 4.1.7 이상의 최신 버전으로 업데이트하거나 PDO PostgreSQL 백엔드를 사용하도록 설정 변경
🔧 검증 코드
설치된 phpMyFAQ의 버전을 확인하여 4.1.7 미만인지 확인합니다.
php -r 'echo "phpMyFAQ version check";' | grep -i '4.1.7' || echo 'Check version manually'