
CVE-2026-102975에 대한 정제된 보고서 및 로컬 개념 증명 스크립트로, suppressrevision 없이 suppression 제거를 허용하는 MediaWiki RevisionDelete API 인가 우회입니다.
보고자: Marco Paciaroni (BomboBombone).
MediaWiki의 action=revisiondelete는 suppressrevision을 확인하지 않고 suppress=no를 허용했습니다. viewsuppressed와 유형별 관리 권한을 가진 호출자는 억제 관리 권한이 없어도 제한 비트를 제거할 수 있었습니다.
suppressrevision 없이 viewsuppressed와 deleterevision 또는 deletelogentry를 부여하는 권한 설정은 호출자가 억제 워크플로로 보호된 자료를 노출할 수 있게 했습니다. 이 교차 사용자 권한 부여 문제는 해당 권한들이 분리되어 있는지에 따라 달라집니다.
무해한 카나리 문자열만 포함하는 일회용 리비전을 준비하고 격리된 로컬 위키에서 그 내용을 억제하십시오. viewsuppressed와 deleterevision은 있지만 suppressrevision은 없는 테스트 계정을 만드십시오. 스크립트는 취약한 API 요청을 보내고, 익명 요청이 카나리를 볼 수 있는지 확인하며, 별도의 테스트 관리자를 사용하여 억제를 복원합니다.
스크립트는 루프백이 아닌 위키 URL을 거부하고, 두 계정의 권한을 확인하며, 두 비밀번호를 묻고, 테스트 리비전의 가시성을 변경하기 전에 입력 확인을 요구합니다. 일회용 로컬 픽스처만 사용하십시오.
python poc.py --base http://127.0.0.1:8080 --username ViewOnlyEditor --restore-username LocalAdmin --page-title CVE102975DisposablePage --revision-id 123 --confirm-test-fixture
리비전 ID와 페이지 제목은 억제된 카나리 픽스처를 가리켜야 합니다. 복원 계정에는 suppressrevision이 필요합니다.