Cloudanix VulnDB

CVE-2024-12801

None

CVSS

—

EPSS

0.2%

Published

Dec 19, 2024

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

An attacker who can change an application's logging configuration may be able to make that application contact internal systems or cloud services it should not access.

Chainable
Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Data Exposure
Component
Library
Class
SSRF
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw is a server-side request forgery condition in QOS.CH Logback's XML configuration parsing path, specifically involving SaxEventRecorder handling of XML DOCTYPE declarations. If an attacker can modify or influence a Logback XML configuration file, such as logback.xml or logback-test.xml, they can introduce external entity or external DTD references that cause the Java process to initiate outbound requests to attacker-controlled or internal network locations while parsing the configuration. The attacker prerequisite is important: exploitation generally requires prior ability to alter configuration content or a deployment pipeline artifact. Successful exploitation may allow internal network probing, access to cloud metadata services, interaction with localhost-only services, or exfiltration of limited data reachable through XML entity resolution. Affected Logback versions are reported as 0.1 through 1.3.14 and 1.4.0 through 1.5.12.

Why it matters to the business

Applications using vulnerable Logback versions may be abused as a network pivot if an attacker can tamper with logging configuration. The most significant operational risk is unauthorized access to internal-only services or cloud instance metadata from trusted application servers, potentially exposing credentials, service tokens, or sensitive internal endpoints. Because exploitation requires configuration compromise and current public exploitation likelihood is low, with EPSS reported at 0.00225 and no CISA KEV listing, this is typically a hardening and supply-chain hygiene priority rather than an emergency internet-wide incident; however, it becomes high priority for systems where configuration files are user-controlled, externally supplied, dynamically reloaded, or modified through CI/CD automation.

How an attack unfolds

An attacker first obtains a way to influence a Logback XML configuration file, commonly through compromised deployment artifacts, write access to application configuration, a vulnerable configuration management process, or abuse of an administrative feature that accepts logging configuration. The attacker then modifies the XML DOCTYPE declaration to reference an external DTD or entity hosted on attacker infrastructure or an internal URL of interest. When the Java application starts or reloads Logback configuration, SaxEventRecorder parses the XML and resolves the external reference. That resolution causes the application process to make outbound network requests from the server's network position. The attacker observes callbacks to confirm code path reachability, then attempts requests to internal targets such as metadata services, localhost ports, service discovery endpoints, or private management interfaces. If sensitive data is retrievable through the XML resolution behavior, the attacker may exfiltrate it indirectly through controlled external entity references or use the SSRF behavior for internal reconnaissance.

How to fix it

Upgrade Logback to a fixed release newer than the affected ranges: use 1.3.15 or later for the 1.3.x line, or 1.5.13 or later for the 1.5.x line. If direct upgrade is not immediately possible, prevent untrusted users and automation from modifying Logback XML configuration files, disable dynamic configuration reload where feasible, remove any DOCTYPE declarations from Logback configuration, and enforce strict file integrity monitoring on logging configuration. Apply outbound egress controls from Java application hosts, especially blocking access to cloud metadata IPs and unnecessary internal management networks. For Ubuntu 14.04 LTS package data provided in the input, flashplugin-nonfree is listed as fixed in 11.2.202.577ubuntu0.14.04.1, but this package does not align with the Logback library described by the vulnerability; teams should verify both operating-system package advisories and application dependency inventories rather than relying on OS package status alone.

How to confirm the fix worked

Confirm application dependency inventories and runtime classpaths do not contain vulnerable Logback versions from 0.1 through 1.3.14 or 1.4.0 through 1.5.12. Check Maven, Gradle, SBT, shaded JARs, container images, and vendor-supplied application bundles for logback-core and logback-classic versions. Inspect Logback XML configuration files for DOCTYPE or external entity declarations and confirm they are absent unless there is a documented, safe business requirement. Validate that configuration files are not writable by application users or untrusted deployment jobs. Test egress controls by confirming application hosts cannot reach cloud metadata endpoints or arbitrary external hosts except through approved paths. After remediation, restart or redeploy affected Java applications so the corrected Logback library and sanitized configuration are active.

Typical attack path

  1. Identify a Java application using Logback versions 0.1 through 1.3.14 or 1.4.0 through 1.5.12.
  2. Gain the ability to modify or supply a Logback XML configuration file, such as through compromised filesystem access, deployment pipeline access, configuration management abuse, or an exposed administrative configuration feature.
  3. Insert a malicious DOCTYPE declaration or external entity reference into the XML configuration.
  4. Trigger application startup, restart, or configuration reload so Logback parses the modified XML.
  5. Receive an outbound callback from the Java process to attacker-controlled infrastructure, confirming exploitability.
  6. Change the external reference to target internal resources such as cloud metadata services, localhost services, service discovery endpoints, or private management APIs.
  7. Use the SSRF channel for internal network reconnaissance or limited data retrieval, depending on egress controls and XML parser behavior.

How to detect it

Investigate whether Logback XML configuration files were modified unexpectedly, especially around application restarts, deployments, or configuration reload events. Review source control history, artifact repository metadata, CI/CD job logs, configuration management logs, container image diffs, and host file integrity monitoring for additions of DOCTYPE, ENTITY, SYSTEM, or PUBLIC declarations in logback.xml or logback-test.xml. On hosts and containers, inspect filesystem timestamps and ownership changes for Logback configuration files. Review application logs for XML parsing errors, external entity resolution failures, DTD loading errors, or configuration reload events near suspicious outbound network activity. Network telemetry should be searched for outbound connections from Java processes to unusual external domains, attacker-controlled infrastructure, internal IP ranges, localhost, link-local metadata endpoints, or cloud provider metadata services. Cloud audit logs should be checked for unusual credential use shortly after any suspicious metadata endpoint access. Because exploitation requires configuration tampering, correlate outbound callbacks with configuration changes and deployment activity rather than treating every DOCTYPE finding as confirmed compromise.

  • <!DOCTYPE
  • <!ENTITY
  • SYSTEM "http://
  • SYSTEM 'http://
  • SYSTEM "https://
  • SYSTEM 'https://
  • PUBLIC "-//
  • logback.xml
  • logback-test.xml
  • SaxEventRecorder
  • 169.254.169.254
  • http://169.254.169.254
  • https://169.254.169.254
  • metadata.google.internal
  • metadata/computeMetadata/v1
  • 169.254.170.2
  • 100.100.100.200
  • fd00:ec2::254
  • latest/meta-data
  • latest/user-data
  • instance-data
  • java.net.UnknownHostException
  • java.net.ConnectException
  • External Entity
  • DOCTYPE is disallowed
  • DocumentBuilderFactory
  • SAXParseException

What your security team should do

  • Inventory Java applications and container images for logback-core and logback-classic versions 0.1 through 1.3.14 and 1.4.0 through 1.5.12.
  • Prioritize applications where Logback XML configuration can be modified through administrative interfaces, tenant-controlled inputs, mounted volumes, CI/CD jobs, or externalized configuration stores.
  • Upgrade to Logback 1.3.15 or later, or 1.5.13 or later, depending on the supported application line.
  • Search repositories, deployed configuration directories, and container images for suspicious DOCTYPE and external entity declarations in Logback XML files.
  • Lock down permissions on logging configuration files and disable dynamic reconfiguration if not required.
  • Add egress controls preventing Java application workloads from reaching cloud metadata endpoints, localhost-only administrative ports, and unnecessary internal networks.
  • Review deployment pipeline and configuration management audit logs for unauthorized changes to Logback configuration files.
  • Treat unexpected outbound HTTP, HTTPS, DNS, or LDAP traffic from Java application processes during startup or configuration reload as suspicious.
  • Do not rely solely on the listed Ubuntu flashplugin-nonfree fixed package because the vulnerability description concerns the Logback Java library; validate application dependencies directly.

The record

Server-Side Request Forgery (SSRF) in SaxEventRecorder by QOS.CH logback version 0.1 to 1.3.14 and 1.4.0 to 1.5.12  on the Java platform, allows an attacker to forge requests by compromising logback configuration files in XML. The attacks involves the modification of DOCTYPE declaration in  XML configuration files.

Affected packages

Ecosystem Package Introduced Fixed
Maven ch.qos.logback:logback-core 0 1.3.15
Maven ch.qos.logback:logback-core 1.4.0 1.5.13
Chainguard akhq 0 0.25.1-r2
Chainguard apache-nifi 0 2.1.0-r0
Chainguard apache-nifi-compat 0 2.1.0-r0
Chainguard apache-nifi-toolkit 0 2.1.0-r0
Chainguard cassandra-4.0-compat 0 4.0.19-r1
Chainguard cassandra-4.0-iamguarded-compat 0 4.0.19-r2
Chainguard cassandra-4.1-compat 0 4.1.10-r1
Chainguard cassandra-4.1-iamguarded-compat 0 4.1.10-r2
Chainguard cassandra-5.0-compat 0 5.0.6-r0
Chainguard cassandra-5.0-entrypoint-compat 0 5.0.6-r0
Chainguard cassandra-5.0-iamguarded-compat 0 5.0.6-r2
Chainguard cassandra-fips-4.0-compat 0 4.0.15-r6
Chainguard cassandra-fips-4.1-compat 0 4.1.7-r6
Chainguard cassandra-fips-5.0-compat 0 5.0.3-r10
Chainguard cassandra-reaper 0 3.7.1-r0
Chainguard cassandra-reaper-jre-bcfips 0 3.7.1-r1
Chainguard cqlsh-5.0 0 5.0.6-r0
Chainguard cqlsh-fips-5.0 0 5.0.3-r10
Chainguard dependency-track 0 4.13.5-r0
Chainguard dependency-track-bundled 0 4.13.5-r0
Chainguard kserve-modelmesh 0 0.12.0-r13
Chainguard kserve-modelmesh 0 0.12.0-r6
Chainguard kserve-modelmesh-compat 0 0.12.0-r13
Chainguard kserve-modelmesh-compat 0 0.12.0-r6
Chainguard localstack 0 4.10.0-r0
Chainguard localstack-compat 0 4.10.0-r0
Chainguard management-api-for-apache-cassandra-4.0 0 0.1.90-r1
Chainguard management-api-for-apache-cassandra-4.0 0 0.1.96-r1
Chainguard management-api-for-apache-cassandra-4.0-compat 0 0.1.90-r1
Chainguard management-api-for-apache-cassandra-4.0-compat 0 0.1.96-r1
Chainguard management-api-for-apache-cassandra-4.1 0 0.1.96-r1
Chainguard management-api-for-apache-cassandra-4.1-compat 0 0.1.96-r1
Chainguard management-api-for-apache-cassandra-5.0 0 0.1.96-r1
Chainguard management-api-for-apache-cassandra-5.0-compat 0 0.1.96-r1
Chainguard seata 0 2.5.0-r3
Chainguard seata-namingserver-oci-entrypoint 0 2.5.0-r3
Chainguard seata-openjdk-17-compat 0 2.5.0-r3
Chainguard seata-openjdk-21-compat 0 2.5.0-r3
Chainguard seata-openjdk-8-compat 0 2.5.0-r3
Chainguard seata-server-oci-entrypoint 0 2.5.0-r3
Chainguard sonar-scanner-cli 0 6.2.1.4610-r1
Chainguard sonar-scanner-cli-compat 0 6.2.1.4610-r1
Chainguard sonarqube 0 25.6.0.109173-r0
Chainguard sonarqube-10 0 25.1.0.102122-r0
Chainguard sonarqube-10-docker-compat 0 25.1.0.102122-r0
Chainguard sonarqube-10-scripts 0 25.1.0.102122-r0
Chainguard sonarqube-docker-compat 0 25.6.0.109173-r0
Chainguard sonarqube-scripts 0 25.6.0.109173-r0
Chainguard spark-3.5 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13-compat 0 3.5.7-r2
Chainguard tez 0 0.10.4-r6
Chainguard thingsboard 0 3.9-r0
Chainguard thingsboard-tb-js-executor 0 3.9-r0
Chainguard thingsboard-tb-mqtt-transport 0 3.9-r0
Chainguard thingsboard-tb-node 0 3.9-r0
Chainguard thingsboard-tb-web-ui 0 3.9-r0
Chainguard trino 0 468-r1
Chainguard trino-config 0 468-r1
Chainguard trino-oci-entrypoint 0 468-r1
Chainguard trino-plugin-accumulo 0 468-r1
Chainguard trino-plugin-ai-functions 0 468-r1
Chainguard trino-plugin-atop 0 468-r1
Chainguard trino-plugin-bigquery 0 468-r1
Chainguard trino-plugin-blackhole 0 468-r1
Chainguard trino-plugin-cassandra 0 468-r1
Chainguard trino-plugin-clickhouse 0 468-r1
Chainguard trino-plugin-delta-lake 0 468-r1
Chainguard trino-plugin-druid 0 468-r1
Chainguard trino-plugin-duckdb 0 468-r1
Chainguard trino-plugin-elasticsearch 0 468-r1
Chainguard trino-plugin-example-http 0 468-r1
Chainguard trino-plugin-exasol 0 468-r1
Chainguard trino-plugin-exchange-filesystem 0 468-r1
Chainguard trino-plugin-exchange-hdfs 0 468-r1
Chainguard trino-plugin-faker 0 468-r1
Chainguard trino-plugin-functions-python 0 468-r1
Chainguard trino-plugin-geospatial 0 468-r1
Chainguard trino-plugin-google-sheets 0 468-r1
Chainguard trino-plugin-hive 0 468-r1
Chainguard trino-plugin-http-event-listener 0 468-r1
Chainguard trino-plugin-http-server-event-listener 0 468-r1
Chainguard trino-plugin-hudi 0 468-r1
Chainguard trino-plugin-iceberg 0 468-r1
Chainguard trino-plugin-ignite 0 468-r1
Chainguard trino-plugin-jmx 0 468-r1
Chainguard trino-plugin-kafka 0 468-r1
Chainguard trino-plugin-kafka-event-listener 0 468-r1
Chainguard trino-plugin-kinesis 0 468-r1
Chainguard trino-plugin-kudu 0 468-r1
Chainguard trino-plugin-lakehouse 0 468-r1
Chainguard trino-plugin-ldap-group-provider 0 468-r1
Chainguard trino-plugin-local-file 0 468-r1
Chainguard trino-plugin-loki 0 468-r1
Chainguard trino-plugin-mariadb 0 468-r1
Chainguard trino-plugin-memory 0 468-r1
Chainguard trino-plugin-ml 0 468-r1
Chainguard trino-plugin-mongodb 0 468-r1
Chainguard trino-plugin-mysql 0 468-r1
Chainguard trino-plugin-mysql-event-listener 0 468-r1
Chainguard trino-plugin-opa 0 468-r1
Chainguard trino-plugin-openlineage 0 468-r1
Chainguard trino-plugin-opensearch 0 468-r1
Chainguard trino-plugin-oracle 0 468-r1
Chainguard trino-plugin-password-authenticators 0 468-r1
Chainguard trino-plugin-phoenix5 0 468-r1
Chainguard trino-plugin-pinot 0 468-r1
Chainguard trino-plugin-postgresql 0 468-r1
Chainguard trino-plugin-prometheus 0 468-r1
Chainguard trino-plugin-ranger 0 468-r1
Chainguard trino-plugin-raptor-legacy 0 468-r1
Chainguard trino-plugin-redis 0 468-r1
Chainguard trino-plugin-redshift 0 468-r1
Chainguard trino-plugin-resource-group-managers 0 468-r1
Chainguard trino-plugin-session-property-managers 0 468-r1
Chainguard trino-plugin-singlestore 0 468-r1
Chainguard trino-plugin-snowflake 0 468-r1
Chainguard trino-plugin-spooling-filesystem 0 468-r1
Chainguard trino-plugin-sqlserver 0 468-r1
Chainguard trino-plugin-teradata-functions 0 468-r1
Chainguard trino-plugin-thrift 0 468-r1
Chainguard trino-plugin-tpcds 0 468-r1
Chainguard trino-plugin-tpch 0 468-r1
Chainguard trino-plugin-vertica 0 468-r1
Chainguard zookeeper-3.8 0 3.8.5-r0
Chainguard zookeeper-3.8 0 3.8.5.0-r2
Chainguard zookeeper-3.8-iamguarded-compat 0 3.8.5.0-r2
Chainguard zookeeper-3.9 0 3.9.4.2-r4
Chainguard zookeeper-3.9-iamguarded-compat 0 3.9.4.2-r4
Chainguard zookeeper-custom 0 3.9.4-r2
Chainguard zookeeper-custom-oci-entrypoint 0 3.9.4-r2
Chainguard zookeeper-fips-3.8 0 3.8.5-r1
Chainguard zookeeper-fips-3.8 0 3.8.5.0-r2
Chainguard zookeeper-fips-3.8-compat 0 3.8.4-r0
Chainguard zookeeper-fips-3.9 0 3.9.4.2-r2
Debian:11 logback 0 No fix
Debian:12 logback 0 No fix
Debian:13 logback 0 No fix
Ubuntu:20.04:LTS logback 0 No fix
Ubuntu:22.04:LTS logback 0 No fix
Ubuntu:24.04:LTS logback 0 No fix
Ubuntu:24.10 logback 0 No fix
Ubuntu:25.04 logback 0 No fix
Ubuntu:Pro:16.04:LTS logback 0 No fix
Ubuntu:Pro:18.04:LTS logback 0 No fix
Ubuntu:Pro:20.04:LTS logback 0 No fix
Wolfi akhq 0 0.25.1-r2
Wolfi apache-nifi 0 2.1.0-r0
Wolfi apache-nifi-compat 0 2.1.0-r0
Wolfi apache-nifi-toolkit 0 2.1.0-r0
Wolfi cassandra-4.1-compat 0 4.1.10-r1
Wolfi cassandra-5.0-compat 0 5.0.6-r0
Wolfi cassandra-5.0-entrypoint-compat 0 5.0.6-r0
Wolfi cassandra-5.0-iamguarded-compat 0 5.0.6-r2
Wolfi cassandra-reaper 0 3.7.1-r0
Wolfi cqlsh-5.0 0 5.0.6-r0
Wolfi dependency-track 0 4.13.5-r0
Wolfi dependency-track-bundled 0 4.13.5-r0
Wolfi kserve-modelmesh 0 0.12.0-r13
Wolfi kserve-modelmesh 0 0.12.0-r6
Wolfi kserve-modelmesh-compat 0 0.12.0-r13
Wolfi kserve-modelmesh-compat 0 0.12.0-r6
Wolfi management-api-for-apache-cassandra-4.1 0 0.1.96-r1
Wolfi management-api-for-apache-cassandra-4.1-compat 0 0.1.96-r1
Wolfi management-api-for-apache-cassandra-5.0 0 0.1.96-r1
Wolfi management-api-for-apache-cassandra-5.0-compat 0 0.1.96-r1
Wolfi sonar-scanner-cli 0 6.2.1.4610-r1
Wolfi sonar-scanner-cli-compat 0 6.2.1.4610-r1
Wolfi sonarqube 0 25.6.0.109173-r0
Wolfi sonarqube-10 0 25.1.0.102122-r0
Wolfi sonarqube-10-docker-compat 0 25.1.0.102122-r0
Wolfi sonarqube-10-scripts 0 25.1.0.102122-r0
Wolfi sonarqube-docker-compat 0 25.6.0.109173-r0
Wolfi sonarqube-scripts 0 25.6.0.109173-r0
Wolfi spark-3.5 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13-compat 0 3.5.7-r2
Wolfi tez 0 0.10.4-r6
Wolfi thingsboard 0 3.9-r0
Wolfi thingsboard-tb-js-executor 0 3.9-r0
Wolfi thingsboard-tb-mqtt-transport 0 3.9-r0
Wolfi thingsboard-tb-node 0 3.9-r0
Wolfi thingsboard-tb-web-ui 0 3.9-r0
Wolfi trino 0 468-r1
Wolfi trino-config 0 468-r1
Wolfi trino-oci-entrypoint 0 468-r1
Wolfi trino-plugin-accumulo 0 468-r1
Wolfi trino-plugin-ai-functions 0 468-r1
Wolfi trino-plugin-atop 0 468-r1
Wolfi trino-plugin-bigquery 0 468-r1
Wolfi trino-plugin-blackhole 0 468-r1
Wolfi trino-plugin-cassandra 0 468-r1

Related vulnerabilities