🔍 CVE-2026-43948

9.9
CVSS Score
CRITICAL
2026-05-12
2026-05-13 16:16
✅ 완료

🇰🇷 한글 설명

wger 2.6 이전 버전에서 Python 객체 비교 시 None != None이 False로 평가되는 로직 오류로 인해, gym 할당이 없는(gym=None) 사용자가 관리 권한을 이용해 다른 gym=None 사용자의 비밀번호를 재설정할 수 있습니다. 변경된 평문 비밀번호가 HTML 응답으로 노출되며 원래 비밀번호가 무효화되어 피해자가 영구적으로 계정에서 잠금됩니다.

💡 쉬운 설명

wger 앱에서 권한 체크 로직이 잘못되어, 체육관 할당이 없는 관리자가 다른 사용자의 비밀번호를 임의로 바꿀 수 있습니다. 바뀐 비밀번호가 화면에 보여지기까지 해서 계정 탈취가 쉽습니다.

🇺🇸 원문 (English)

wger is a free, open-source workout and fitness manager. Prior to 2.6, the reset_user_password and gym_permissions_user_edit views in wger perform a gym-scope authorization check using Python object comparison (!=) that evaluates None != None as False, silently bypassing the guard when both the attacker and victim have no gym assignment (gym=None). A user with gym.manage_gym permission and gym=None can reset the password of any other gym=None user; the new plaintext password is returned verbatim in the HTML response body, enabling one-shot full account takeover. The victim's original password is invalidated, locking them out permanently. This vulnerability is fixed in 2.6.

📍 영향받는 시스템

wger < 2.6 (모든 배포판)

⚔️ 공격 벡터

gym.manage_gym 권한을 가진 gym=None 사용자가 reset_user_password 또는 gym_permissions_user_edit 엔드포인트에 접근하여 다른 gym=None 사용자의 비밀번호 변경

🛡️ 대응 방법

wger을 2.6 이상으로 업그레이드하고, gym-scope 인증 로직을 is None 비교로 수정

🔧 검증 코드

wger 버전이 2.6 이상이면 SAFE, 2.6 미만이면 VULNERABLE로 표시됨

Shell / Script
pip show wger | grep Version | awk '{print $2}' | awk -F. '{if($1>=2&&$2>=6)print "SAFE: v"$0;else print "VULNERABLE: v"$0}'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

💻 영향받는 소프트웨어

Python