🇰🇷 한글 설명
InvoicePlane 1.7.2 버전에서 보조 관리자가 기본 관리자의 이메일 주소를 수정할 수 있는 권한 결함이 발견되었습니다. 이를 통해 공격자는 비밀번호 재설정 기능을 악용하여 기본 관리자의 계정을 완전히 탈취할 수 있습니다.
💡 쉬운 설명
보조 관리자가 최고 관리자의 이메일 주소를 몰래 바꿔치기할 수 있는 보안 구멍이 있습니다. 이메일을 바꾼 뒤 '비밀번호 찾기'를 하면 관리자의 계정을 통째로 뺏을 수 있습니다.
🇺🇸 원문 (English)
InvoicePlane is a self-hosted open source application for managing invoices, clients, and payments. In version 1.7.2, an authorization guard to Users::change_password(), was added to address a previous authorization flaw that allowed a secondary administrator (user_type=1, user_id != 1) to directly change the password of the primary administrator (user_id=1) through users/change_password/{id}. That remediation, however, protects only the direct password-change operation. It does not protect the identity attribute that password recovery actually trusts: user_email. Users::form() applies no equivalent object-level authorization check when editing the primary administrator's account, and user_email is not included in PROTECTED_FIELDS. A secondary administrator can therefore rewrite the primary administrator's email address, then drive the public password-recovery flow — which resolves the account by user_email — to receive the reset token and take over user_id=1. The result is an alternate attack path that achieves the same impact PR #1638 was intended to prevent: cross-administrator full account takeover of the primary administrator. This issue has been patched via commit 8616fa4.
📍 영향받는 시스템
InvoicePlane 1.7.2 이하 버전
⚔️ 공격 벡터
보조 관리자 권한을 이용한 기본 관리자의 이메일 주소 변경 및 비밀번호 재설정 흐름 악용
🛡️ 대응 방법
커밋 8616fa4가 적용된 최신 패치 버전으로 업데이트
🔧 검증 코드
소스 코드 내에 패치 커밋 해시인 8616fa4가 포함되어 있는지 확인하여 패치 여부를 판단합니다.
grep -r "8616fa4" . || echo "Patch not found"