
CVE-2026-73310에 대한 개념 증명 및 기술 문서로, XenForo 2.3.13 이전 버전의 OAuth2 인증 코드 리디렉션 URI 바인딩 결함에 관한 내용이며, 재현 단계와 Python PoC 스크립트를 포함합니다.
XenForo 2.3.13 이전 버전은 OAuth2 인증 코드를 해당 코드가 발급될 때 사용된 리디렉션 URI에 바인딩하지 않습니다.
토큰 엔드포인트에서 XenForo는 제출된 redirect_uri가 클라이언트의 허용 목록에 있는지만 확인합니다. 인증 요청에 저장된 리디렉션 URI와 값을 비교하지 않습니다. 따라서 콜백 A와 B를 가진 클라이언트는 A를 통해 인증을 승인하면서 B를 주장하며 코드를 교환할 수 있습니다.
공격자는 유효한 코드와 동일한 클라이언트에 이미 등록된 다른 콜백을 제어하거나 관찰해야 합니다. 이 버그는 코드를 생성하거나 새 리디렉션 URI를 추가하지 않습니다. 프론트 채널 인증과 토큰 교환 간의 바인딩을 약화시킬 뿐입니다.
XenForo 2.3.12(빌드 2031270)에서 불일치를 재현했습니다: 콜백 A가 코드를 발급하고, 콜백 B가 이를 교환했으며, 결과 토큰이 인증 사용자로 인증되었습니다. XenForo 2.3.13에 수정 사항이 포함되어 있습니다.
python poc.py https://xenforo.example CLIENT_ID AUTHORIZATION_CODE https://client.example/callback-b --code-verifier VERIFIER
기밀 테스트 클라이언트에만 --client-secret을 추가하세요. 스크립트는 반환된 토큰을 해시 처리하고 /api/me가 이를 수락했는지 여부만 보고합니다.
두 개의 콜백과 소유한 일회용 OAuth 권한 부여를 사용하세요. 취약한 설치에서는 콜백 B를 수락하고, 수정된 설치에서는 불일치를 거부합니다.
발견자: Marco Paciaroni (BomboBombone).