
XenForo 2.3.13 이전 버전에서 OAuth2 인증 코드 재사용을 시연하는 개념 증명 익스플로잇으로, 토큰 재생 및 다중 토큰 패밀리를 허용합니다.
XenForo 2.3.13 이전 버전에서 OAuth2 인증 코드가 두 번 이상 사용(교환)될 수 있습니다.
인증 코드 승인(authorization-code grant)은 코드를 로드하고 시간 기반 유효성을 검증한 후 토큰 쌍을 생성합니다. 성공 경로에서는 코드를 삭제하거나, 사용됨(consumed)으로 표시하거나, 원자적 일회성 업데이트를 사용하지 않습니다. 따라서 동일한 유효한 교환을 재전송하면 동일한 사용자와 범위에 대해 독립적인 액세스/리프레시 토큰 패밀리가 생성됩니다.
공격자는 여전히 유효한 인증 코드와 해당 승인에 필요한 클라이언트 매개변수를 보유해야 합니다. 이 문제는 코드를 획득하는 방법을 설명하지 않으며, 의도된 클라이언트가 이미 코드를 사용한 후에도 코드를 재사용할 수 있게 만듭니다.
XenForo 2.3.12(빌드 2031270)에서는 두 번의 동일한 교환이 서로 다른 액세스 토큰을 반환했으며 둘 다 인증에 성공했습니다. XenForo 2.3.13에는 이 수정 사항이 포함되어 있습니다.
python poc.py https://xenforo.example CLIENT_ID AUTHORIZATION_CODE https://client.example/callback --code-verifier VERIFIER
이 스크립트는 동일한 승인을 두 번 제출하고, 반환된 토큰을 해시한 후 둘 다 작동하는지 보고합니다. 자격 증명이나 계정 신원은 출력하지 않습니다. 승인된 테스트 설치 환경에서 일회용 승인 코드로만 실행하십시오.
발견자: Marco Paciaroni (BomboBombone).