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).

착취 단계

  1. Reconnaissance: Identify internet-facing LiteLLM proxy instances running versions prior to 1.83.10. Obtain or register a low-privilege internal_user account on the target instance.

  2. Generate a privileged key (internal_user path): Authenticate as internal_user and call /key/generate with allowed_routes: ["/user/update"] in the request body. The endpoint stores this without validating that /user/update exceeds 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"]}'
  1. Escalate role to proxy_admin: Use the newly generated key to call /user/update, setting user_role to proxy_admin for the attacker's own user_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"}'
  1. Direct exploitation (org_admin path): If the attacker already holds org_admin role, they have legitimate access to /user/update and can skip steps 2–3, directly sending the role escalation request with their existing credentials.

  2. Verify and abuse admin access: Confirm escalation by calling /user/list or /user/info with the original credentials. As proxy_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/update from non-admin user accounts containing "user_role" in the request body; POST requests to /key/generate with allowed_routes containing admin-only paths such as /user/update, /user/list, or /team/list.
  • Application Logs: HTTP 200 responses to /user/update requests where the caller's prior role was internal_user or org_admin; sudden appearance of new proxy_admin accounts not created by existing administrators.
  • Database: Unexpected changes to the user_role field in the LiteLLM_UserTable for non-admin accounts; entries in LiteLLM_VerificationToken with allowed_routes containing 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/list endpoints 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 취약점:

CVE ID

심각도

점수

기술

구성 요소 이름

CISA KEV 익스플로잇

수정 사항이 있습니다.

게시된 날짜

CVE-2026-54133CRITICAL9.8
  • NixOSNixOS
  • jmespath
아니요Jun 12, 2026
CVE-2026-8589HIGH8.7
  • GitLabGitLab
  • gitlab
아니요Jun 11, 2026
CVE-2026-7250HIGH7.5
  • GitLabGitLab
  • gitlab-cng-18.11
아니요Jun 11, 2026
CVE-2026-9204MEDIUM6.5
  • GitLabGitLab
  • gitlab
아니요Jun 11, 2026
CVE-2026-9694MEDIUM4.3
  • GitLabGitLab
  • gitlab-cng-18.11
아니요Jun 11, 2026

무료 취약성 평가

클라우드 보안 태세를 벤치마킹합니다

9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.

평가 요청

추가 Wiz 리소스

맞춤형 데모 받기

맞춤형 데모 신청하기

"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
데이비드 에슬릭최고정보책임자(CISO)
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
아담 플레처최고 보안 책임자(CSO)
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."
그렉 포니아토프스키위협 및 취약성 관리 책임자