🇰🇷 한글 설명
Piwigo 16.4.0 미만 버전에서 관리자가 제어하는 image_order[] 값이 정해진 화이트리스트를 검증하지 않고 저장되는 취약점이 존재합니다. 저장된 값이 이후 ORDER BY 절에 결합되어 실행됨에 따라, 인증된 관리자가 조작된 식을 삽입하여 데이터베이스의 정보를 유출, 수정 또는 파괴할 수 있습니다.
💡 쉬운 설명
관리자 권한을 가진 사용자가 사진 정렬 순서를 설정할 때 악의적인 명령어를 숨겨둘 수 있는 보안 결함입니다. 이 명령어가 나중에 실행되면 데이터베이스의 중요한 정보가 유출되거나 데이터가 손상될 위험이 있습니다.
🇺🇸 원문 (English)
Piwigo is a full featured open source photo gallery application for the web. Prior to 16.4.0, admin/element_set_ranks.php stores administrator-controlled image_order[] values without enforcing the existing sort-field whitelist. The stored album image_order expression is later concatenated into ORDER BY clauses by admin/batch_manager_global.php, admin/batch_manager_unit.php, include/section_init.inc.php, and include/ws_functions/pwg.categories.php. When at least one album contains at least one photo, an authenticated administrator can store a crafted expression and trigger it in a later album or Batch Manager query to disclose, modify, or disrupt database data. This issue is fixed in version 16.4.0.
📍 영향받는 시스템
Piwigo 16.4.0 미만 모든 버전
⚔️ 공격 벡터
인증된 관리자가 관리자 페이지를 통해 조작된 정렬 식을 저장한 후, 특정 쿼리가 실행될 때 트리거함
🛡️ 대응 방법
Piwigo를 최신 보안 패치가 적용된 16.4.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력 결과가 true이면 취약한 버전이며, false이면 안전한 버전입니다.
php -r 'include("version.php"); echo PWG_VERSION;' 2>/dev/null | awk -F. "'$(<(echo '16.4.0') | sed "s/[^0-9.]//g'" | xargs -I {} python3 -c 'import sys; v=sys.argv[1].split("."); target=sys.argv[2].split("."); print(all(int(v[i]) < int(target[i]) for i in range(len(v))))' {}'"