CVE-2026-59954
Java 취약성 분석 및 완화

개요

CVE-2026-59954 is an authentication bypass vulnerability in Apollo ConfigService that allows unauthenticated remote attackers to read protected configuration data by supplying a non-canonical appId variant in requests. It affects Apollo versions up to and including 2.5.1 (all versions prior to 2.5.2). The vulnerability was published on July 12–13, 2026, and patched in Apollo 2.5.2. It carries a CVSS v3.1 base score of 7.5 (High) (GitHub Advisory, Github Advisory).

기술적 세부 사항

The root cause is a mismatch between how Apollo ConfigService authenticates requests and how the downstream database resolves appId values, classified as CWE-20 (Improper Input Validation) and CWE-287 (Improper Authentication). When ConfigService extracts the appId from a request URL or parameter, it looks up available AccessKey secrets using that value as a cache key. If the submitted appId is a non-canonical variant — such as one with accent characters (e.g., mysql.exámple.test) under accent-insensitive database collations, or with trailing spaces under PAD SPACE collations — the cache lookup finds no secrets and skips signature verification entirely. However, the downstream release lookup still resolves the non-canonical variant to the real protected app, effectively bypassing authentication on the /configs/*, /configfiles/*, and /notifications/v2 endpoints (GitHub Advisory, Patch Commit).

영향

Successful exploitation allows an unauthenticated remote attacker to read all configuration data accessible through the affected ConfigService endpoints (/configs and /configfiles), even when AccessKey or management key authentication is enabled. Since Apollo is a microservice configuration management system, exposed configuration data may include database credentials, API keys, service secrets, and other sensitive application parameters stored across managed microservices. There is no integrity or availability impact, but the confidentiality breach could enable lateral movement or further compromise of dependent services (GitHub Advisory).

착취 단계

  1. Reconnaissance: Identify internet-facing or internally accessible Apollo ConfigService instances running versions ≤ 2.5.1. Check for exposed /configs/ or /configfiles/ endpoints.
  2. Identify target appId: Determine a valid appId registered in the Apollo instance (e.g., through error messages, documentation, or prior knowledge of the target environment).
  3. Craft non-canonical appId: Modify the known appId to a non-canonical variant — for example, append a trailing space (mysql.example.test ) to exploit PAD SPACE collations, or substitute an ASCII character with an accented equivalent (mysql.exámple.test) to exploit accent-insensitive collations.
  4. Send unauthenticated request: Issue an HTTP GET request to the ConfigService endpoint using the non-canonical appId, e.g.:
    GET /configs/mysql.example.test%20/default/application HTTP/1.1
    Host: <configservice-host>
  5. Bypass authentication: ConfigService fails to find AccessKey secrets for the non-canonical appId and skips signature verification, while the database resolves the variant to the real app and returns its configuration data.
  6. Exfiltrate configuration data: Parse the response to extract sensitive values such as database credentials, API keys, or service secrets stored in the application's configuration (GitHub Advisory, Patch Commit).

타협의 징후

  • Network: Unexpected HTTP GET requests to /configs/, /configfiles/, or /notifications/v2 endpoints containing URL-encoded spaces (%20) or non-ASCII/accented characters in the appId path segment or appId query parameter; requests to these endpoints lacking a valid Authorization or Signature header when AccessKey authentication is enabled.
  • Logs: Apollo ConfigService access logs showing requests with appId values that differ slightly from registered app names (e.g., trailing spaces, diacritic characters); absence of authentication-related log entries for requests that successfully returned configuration data.
  • Application Behavior: Successful configuration data responses returned to clients that did not supply a valid AccessKey signature, particularly from unfamiliar source IP addresses.

완화 및 해결 방법

The fix is available in Apollo 2.5.2, which validates the extracted appId against a strict allowlist pattern before performing AccessKey lookup, rejecting non-canonical variants such as those with trailing spaces or accent characters. Upgrade from v2.5.1 to v2.5.2 requires no database schema changes — simply redeploy the apollo-configservice, apollo-adminservice, and apollo-portal components in that order. No configuration-based workaround is available for unpatched versions; upgrading is the only remediation (Apollo v2.5.2 Release, Patch Commit).

추가 자료


근원이 보고서는 AI를 사용하여 생성되었습니다.

관련 Java 취약점:

CVE ID

심각도

점수

기술

구성 요소 이름

CISA KEV 익스플로잇

수정 사항이 있습니다.

게시된 날짜

GHSA-p279-2cqp-84jgCRITICAL9.6
  • Java logoJava
  • org.openidentityplatform.opendj:opendj-server-legacy
아니요Jul 24, 2026
GHSA-fp43-vj7g-pg92HIGH7.5
  • Java logoJava
  • org.omnifaces:omnifaces
아니요Jul 24, 2026
GHSA-7ppr-r889-mcf2HIGH7.5
  • Java logoJava
  • org.http4s:http4s-blaze-server_3
아니요Jul 24, 2026
GHSA-mhvj-jhpq-885vHIGH7.4
  • Java logoJava
  • org.http4s:blaze-http_3
아니요Jul 24, 2026
GHSA-46q4-43ph-c6frHIGH7.4
  • Java logoJava
  • org.http4s:blaze-http_2.12
아니요Jul 24, 2026

무료 취약성 평가

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

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

평가 요청

추가 Wiz 리소스

맞춤형 데모 받기

맞춤형 데모 신청하기

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