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).
착취 단계
- Reconnaissance: Identify internet-facing or internally accessible Apollo ConfigService instances running versions ≤ 2.5.1. Check for exposed
/configs/or/configfiles/endpoints. - Identify target appId: Determine a valid
appIdregistered in the Apollo instance (e.g., through error messages, documentation, or prior knowledge of the target environment). - Craft non-canonical appId: Modify the known
appIdto 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. - 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> - Bypass authentication: ConfigService fails to find AccessKey secrets for the non-canonical
appIdand skips signature verification, while the database resolves the variant to the real app and returns its configuration data. - 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/v2endpoints containing URL-encoded spaces (%20) or non-ASCII/accented characters in theappIdpath segment orappIdquery parameter; requests to these endpoints lacking a validAuthorizationorSignatureheader when AccessKey authentication is enabled. - Logs: Apollo ConfigService access logs showing requests with
appIdvalues 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 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."