CVE-2026-47102:
NixOS 취약성 분석 및 완화
개요
CVE-2026-47102 is a privilege escalation vulnerability in BerriAI LiteLLM affecting all versions prior to 1.83.10. The /user/update endpoint correctly restricts users to modifying only their own account but fails to restrict which fields may be changed, allowing any authenticated user to set their user_role to proxy_admin and gain full administrative access. Users with the org_admin role can exploit this directly without chaining any additional flaw, while internal_user accounts can exploit it via a secondary path through the /key/generate endpoint. It was disclosed on May 21, 2026, with a CVSS v3.1 base score of 8.8 (High) (GitHub Advisory, VulnCheck).
기술적 세부 사항
The vulnerability is classified as CWE-863 (Incorrect Authorization) and stems from two compounding flaws. First, the /user/update endpoint's authorization check (can_user_call_user_update) only validates that a user is updating their own account by matching user_id, but applies no field-level restrictions — the user_role field from the request body passes through _update_internal_user_params() and is written directly to the database without any privilege check. Second, the /key/generate endpoint allows internal_user accounts to create virtual API keys with arbitrary allowed_routes (including admin-only routes like /user/update) because the _is_allowed_to_make_key_request() function only validates user_id ownership and never validates that specified routes fall within the caller's role-based permissions. When such a key is used, the route check in non_proxy_admin_allowed_routes_check() treats the key's allowed_routes as an independent grant rather than a subset restriction, bypassing role-based access control entirely (Researcher Gist, LiteLLM PR #25541).
영향
Successful exploitation grants an attacker full proxy_admin privileges over the LiteLLM deployment, including unrestricted access to all users, teams, API keys, AI models, and complete prompt history. An attacker can create, modify, or delete any user account or API key, pivot to connected AI model backends, and exfiltrate sensitive data including all historical prompts processed by the proxy. The integrity and confidentiality of the entire LiteLLM instance are fully compromised, and availability may also be impacted through administrative actions such as key deletion or model reconfiguration (GitHub Advisory, Researcher Gist).
착취 단계
Reconnaissance: Identify internet-facing LiteLLM proxy instances running versions prior to 1.83.10. Obtain or register a low-privilege
internal_useraccount on the target instance.Generate a privileged key (internal_user path): Authenticate as
internal_userand call/key/generatewithallowed_routes: ["/user/update"]in the request body. The endpoint stores this without validating that/user/updateexceeds the caller's role permissions:
curl -X POST https://<litellm-host>/key/generate \
-H "Authorization: Bearer <internal_user_key>" \
-H "Content-Type: application/json" \
-d '{"allowed_routes": ["/user/update"]}'- Escalate role to proxy_admin: Use the newly generated key to call
/user/update, settinguser_roletoproxy_adminfor the attacker's ownuser_id:
curl -X POST https://<litellm-host>/user/update \
-H "Authorization: Bearer <new_key>" \
-H "Content-Type: application/json" \
-d '{"user_id": "<attacker_user_id>", "user_role": "proxy_admin"}'Direct exploitation (org_admin path): If the attacker already holds
org_adminrole, they have legitimate access to/user/updateand can skip steps 2–3, directly sending the role escalation request with their existing credentials.Verify and abuse admin access: Confirm escalation by calling
/user/listor/user/infowith the original credentials. Asproxy_admin, the attacker can now manage all users, teams, API keys, models, and access full prompt history (Researcher Gist, PoC GitHub).
타협의 징후
- Network/API Logs: POST requests to
/user/updatefrom non-admin user accounts containing"user_role"in the request body; POST requests to/key/generatewithallowed_routescontaining admin-only paths such as/user/update,/user/list, or/team/list. - Application Logs: HTTP 200 responses to
/user/updaterequests where the caller's prior role wasinternal_userororg_admin; sudden appearance of newproxy_adminaccounts not created by existing administrators. - Database: Unexpected changes to the
user_rolefield in theLiteLLM_UserTablefor non-admin accounts; entries inLiteLLM_VerificationTokenwithallowed_routescontaining management or admin-only endpoints. - Behavioral: Unusual administrative actions (bulk user modifications, key deletions, model changes) performed by accounts that were recently non-admin; access to
/user/list,/team/list, or/key/listendpoints by accounts with no prior admin history (Researcher Gist, GitHub Advisory).
완화 및 해결 방법
Upgrade LiteLLM to version 1.83.10 or later, which introduces field-level authorization checks that restrict user_role modifications in /user/update and /user/bulk_update to proxy_admin callers only, and extends admin-only guards to the spend field in /key/update (LiteLLM v1.83.10 Release, LiteLLM PR #25541). Until patching is complete, restrict network access to the LiteLLM management API to trusted internal networks only, and audit all existing user accounts for unexpected proxy_admin role assignments. Review LiteLLM_VerificationToken entries for keys with allowed_routes containing admin-only endpoints and revoke any suspicious keys.
커뮤니티 반응
The vulnerability was covered by The Hacker Wire shortly after disclosure (The Hacker Wire) and appeared in a CISA vulnerability bulletin (SB26-145). The researcher who discovered the vulnerability published a detailed technical write-up on GitHub Gist, including a PoC video demonstrating the full attack chain (Researcher Gist). Community tracking on platforms such as VulnDB and threat radar services noted the vulnerability shortly after publication, and exploit-intel.com confirmed active exploitation reporting.
추가 자료
근원: 이 보고서는 AI를 사용하여 생성되었습니다.
관련 NixOS 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."