🇰🇷 한글 설명
Akaunting 3.1.21 이하 버전에서 권한이 낮은 인증된 사용자가 자신의 계정 정보를 수정하여 관리자 역할을 부여받을 수 있는 취약점입니다. UpdateUser 작업이 역할 할당 시 호출자의 권한을 검증하지 않고 roles()->sync()를 호출하는 결함으로 인해 발생합니다. 이 취약점은 v3.2.0 버전에서 수정되었습니다.
💡 쉬운 설명
일반 사용자가 자신의 설정 페이지를 수정하는 과정에서 몰래 관리자 권한을 스스로 부여할 수 있는 보안 허점입니다. 이를 통해 일반 사용자가 시스템의 모든 권한을 가진 관리자로 승격될 수 있습니다.
🇺🇸 원문 (English)
In Akaunting versions <= 3.1.21, low‑privileged authenticated users can modify their own account to assign themselves the admin role ID, granting full administrator privileges. This vulnerability is caused by a flaw in the `UpdateUser` job, which processes user-supplied role assignments via an unconditional `roles()->sync()` call without verifying whether the caller is authorized to manage roles. Users only require the default `update-auth-profile` permission to access the self-update path and assign themselves as admins. The API endpoints are properly permission‑gated and are not affected by this issue. This vulnerability has been remediated in v3.2.0, commit 80ef6d3b154a.
📍 영향받는 시스템
Akaunting versions <= 3.1.21
⚔️ 공격 벡터
낮은 권한을 가진 인증된 사용자가 UpdateUser 작업을 통해 자신의 역할(role) ID를 관리자 ID로 변경
🛡️ 대응 방법
Akaunting을 v3.2.0 이상 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 정보가 3.1.21 이하인지 확인하여 취약 여부를 판단합니다.
php artisan --version | grep -E 'Akaunting'
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
💻 영향받는 소프트웨어
IBM Security Verify Access