CVE-2026-1225
NoneCVSS
—
EPSS
0.2%
Published
Jan 22, 2026
CISA due date
—
Cloudanix analysis
A logging component used by Java applications can be abused by someone who can already change its configuration, potentially letting them make the application run unexpected code-like behavior.
- Exploitation
- Local Privilege
- Attacker needs
- High Privilege
- Complexity
- High
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Command Injection
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This vulnerability affects logback-core configuration file processing in Java applications using versions up to and including 1.5.24. If an attacker can modify an existing Logback configuration file, they may be able to cause Logback to instantiate arbitrary Java classes that are already present on the application classpath. This is a constrained arbitrary code execution/class-instantiation issue rather than a typical remote command injection: exploitation requires high privileges or prior compromise sufficient to write the configuration file, and the attacker is limited to classes already available in the application or its dependencies. The created object may be discarded shortly after instantiation, but constructors, static initializers, setters, or side effects in instantiated classes may still cause confidentiality, integrity, or availability impact.
Why it matters to the business
The main business risk is post-compromise impact amplification: an attacker who already has write access to application configuration may be able to trigger unexpected behavior, run class initialization logic, disrupt services, or abuse dangerous classes bundled with the application. Because exploitation requires local/high-privilege access and has low public exploitation likelihood, immediate internet-wide exploitation risk is low; however, organizations using affected Java applications should still patch during normal maintenance because logging libraries are widely embedded and configuration tampering can be used for persistence, disruption, or lateral movement in already-compromised environments. For the listed affected package, solr-operator-0.9 on MinimOS should be updated to 0.9.1-r3 or later.
How an attack unfolds
An attacker first gains sufficient access to modify an existing Logback configuration file used by a Java application. They then alter the configuration to reference a class that is already present on the target application's classpath and that has useful side effects when instantiated or configured. When the application starts, reloads logging configuration, or otherwise processes the modified Logback file, logback-core parses the attacker-controlled configuration and instantiates the referenced class. If the chosen class performs actions during construction, static initialization, property assignment, or lifecycle methods, the attacker may achieve limited code execution effects, configuration manipulation, information exposure, service disruption, or persistence. The attack is highly dependent on what classes are present in the application and whether the attacker can force the application to reload the modified configuration.
How to fix it
Upgrade affected packages to fixed versions. For solr-operator-0.9 on MinimOS, update to version 0.9.1-r3 or later. More broadly, ensure Java applications do not use logback-core versions up to and including 1.5.24 where untrusted users or compromised components can write Logback configuration files; upgrade Logback to a version containing the vendor fix when available for the distribution or application stack. Treat logging configuration as code: restrict write permissions, make container images and configuration mounts read-only where practical, enforce change control for logging configuration, and prevent runtime modification by application users. If immediate upgrade is not possible, mitigate by removing write access to Logback configuration files, disabling automatic configuration scanning/reload where feasible, validating configuration files before deployment, and monitoring for unauthorized changes.
How to confirm the fix worked
Confirm the installed package or application dependency has been updated to the fixed release, specifically solr-operator-0.9 on MinimOS version 0.9.1-r3 or later where applicable. For Java applications, inspect dependency manifests, SBOMs, build files, container images, and runtime classpaths for logback-core versions up to and including 1.5.24. Verify Logback configuration files are not writable by non-administrative users or application runtime identities unless explicitly required. Confirm file integrity monitoring is active for Logback configuration files and that any automatic configuration reload behavior is understood and controlled. After patching or mitigation, restart affected services as needed and verify application logs show normal Logback initialization without unexpected class references or configuration parsing warnings.
Typical attack path
- Gain prior access to the host, container, application deployment, CI/CD artifact, or mounted configuration location with permission to modify an existing Logback configuration file.
- Identify the Logback configuration file used by the Java application, such as logback.xml or logback-spring.xml.
- Enumerate or infer Java classes available on the application classpath, including application classes and third-party dependencies.
- Modify the Logback configuration to instantiate a class with attacker-useful side effects.
- Trigger configuration processing by restarting the application, waiting for automatic configuration reload, or causing the application to re-read logging configuration.
- Leverage side effects from class instantiation to alter application behavior, expose information, disrupt service, or maintain a foothold.
How to detect it
Look for evidence of unauthorized Logback configuration modification and suspicious application restarts or logging reconfiguration events. Relevant log sources include application logs, container stdout/stderr, Kubernetes audit logs, file integrity monitoring alerts, endpoint detection telemetry, CI/CD deployment logs, package manager logs, and host audit logs. Investigate changes to Logback configuration files such as logback.xml and logback-spring.xml, especially additions of unusual class names, custom appenders, encoders, filters, listeners, or JNDI-like/resource-loading constructs. Review timestamps of configuration changes against application restart times and Logback initialization messages. On Linux hosts, audit file write events by unexpected users or processes to application configuration directories. In Kubernetes or containerized deployments, review changes to ConfigMaps, Secrets, mounted volumes, image layers, and operator manifests that supply logging configuration. Because exploitation requires prior write access and no public exploit maturity is indicated, detection should focus on configuration tampering, unexpected dependency/class references in Logback XML, and suspicious side effects occurring immediately after configuration reload.
- logback.xml
- logback-spring.xml
- logback-test.xml
- ch.qos.logback.core.joran.spi.JoranException
- Could not create component
- Could not instantiate class
- About to instantiate appender of type
- Assuming default type
- Registering current configuration as safe fallback point
- Re-registering previous fallback configuration as safe fallback point
- Will scan for changes in [
- Setting ReconfigureOnChangeTask scanning period
- Detected change in configuration files
- Exception in Action for tag
- <appender class=
- <encoder class=
- <filter class=
- <turboFilter class=
- <conversionRule conversionWord=
- <newRule pattern=
- <define name=
What your security team should do
- Inventory Java applications, containers, and vendor packages that include logback-core, prioritizing internet-facing, business-critical, and high-privilege services.
- Patch solr-operator-0.9 on MinimOS to 0.9.1-r3 or later and update any bundled Logback dependency to a fixed vendor-supported version.
- Restrict write access to Logback configuration files and their parent directories to trusted deployment or administrative identities only.
- Disable or tightly control Logback configuration auto-reload in production where operationally feasible.
- Add file integrity monitoring for logback.xml, logback-spring.xml, and other Logback configuration files.
- Review recent changes to logging configuration files, container mounts, ConfigMaps, deployment artifacts, and CI/CD outputs for unauthorized modification.
- Search logs for unexpected Logback configuration parsing, reconfiguration events, errors instantiating classes, or references to unusual classes in logging configuration.
- Treat any confirmed unauthorized modification of Logback configuration as evidence of prior compromise and perform host, container, credential, and CI/CD pipeline investigation.
The record
ACE vulnerability in configuration file processing by QOS.CH logback-core up to and including version 1.5.24 in Java applications, allows an attacker to instantiate classes already present on the class path by compromising an existing logback configuration file. The instantiation of a potentially malicious Java class requires that said class is present on the user's class-path. In addition, the attacker must have write access to a configuration file. However, after successful instantiation, the instance is very likely to be discarded with no further ado.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | ch.qos.logback:logback-core | 0 | 1.5.25 |
| Chainguard | akhq | 0 | 0.26.0-r7 |
| Chainguard | apache-nifi | 0 | 2.7.2-r5 |
| Chainguard | apache-nifi-registry | 0 | 2.7.2-r3 |
| Chainguard | apache-nifi-registry-toolkit | 0 | 2.7.2-r3 |
| Chainguard | cassandra-5.0 | 0 | 5.0.7-r1 |
| Chainguard | dependency-track | 0 | 4.14.0-r0 |
| Chainguard | dependency-track-apiserver | 0 | 4.14.0-r0 |
| Chainguard | dependency-track-bundled | 0 | 4.14.0-r0 |
| Chainguard | kafbat-ui | 0 | 1.4.2-r3 |
| Chainguard | kafbat-ui-fips | 0 | 1.4.2-r2 |
| Chainguard | keycloak-config-cli | 0 | 6.4.1-r7 |
| Chainguard | keycloak-config-cli-iamguarded-compat | 0 | 6.4.1-r0 |
| Chainguard | kserve-modelmesh | 0 | 0.12.0-r22 |
| Chainguard | management-api-for-apache-cassandra-4.0 | 0 | 0.1.113-r0 |
| Chainguard | management-api-for-apache-cassandra-4.1 | 0 | 0.1.113-r0 |
| Chainguard | management-api-for-apache-cassandra-5.0 | 0 | 0.1.113-r0 |
| Chainguard | nacos | 0 | 3.1.1-r1 |
| Chainguard | nacos-docker | 0 | 3.1.1-r1 |
| Chainguard | nextflow | 0 | 25.10.4-r1 |
| Chainguard | sonar-scanner-cli | 0 | 8.0.1.6346-r2 |
| Chainguard | sonarqube | 0 | 26.1.0.118079-r2 |
| Chainguard | trino | 0 | 479-r3 |
| Chainguard | trino-plugin-ai-functions | 0 | 479-r3 |
| Chainguard | trino-plugin-bigquery | 0 | 479-r3 |
| Chainguard | trino-plugin-blackhole | 0 | 479-r3 |
| Chainguard | trino-plugin-cassandra | 0 | 479-r3 |
| Chainguard | trino-plugin-clickhouse | 0 | 479-r3 |
| Chainguard | trino-plugin-delta-lake | 0 | 479-r3 |
| Chainguard | trino-plugin-druid | 0 | 479-r3 |
| Chainguard | trino-plugin-duckdb | 0 | 479-r3 |
| Chainguard | trino-plugin-elasticsearch | 0 | 479-r3 |
| Chainguard | trino-plugin-exasol | 0 | 479-r3 |
| Chainguard | trino-plugin-exchange-filesystem | 0 | 479-r3 |
| Chainguard | trino-plugin-exchange-hdfs | 0 | 479-r3 |
| Chainguard | trino-plugin-faker | 0 | 479-r3 |
| Chainguard | trino-plugin-functions-python | 0 | 479-r3 |
| Chainguard | trino-plugin-google-sheets | 0 | 479-r3 |
| Chainguard | trino-plugin-hive | 0 | 479-r3 |
| Chainguard | trino-plugin-http-event-listener | 0 | 479-r3 |
| Chainguard | trino-plugin-hudi | 0 | 479-r3 |
| Chainguard | trino-plugin-iceberg | 0 | 479-r3 |
| Chainguard | trino-plugin-ignite | 0 | 479-r3 |
| Chainguard | trino-plugin-jmx | 0 | 479-r3 |
| Chainguard | trino-plugin-kafka | 0 | 479-r3 |
| Chainguard | trino-plugin-kafka-event-listener | 0 | 479-r3 |
| Chainguard | trino-plugin-lakehouse | 0 | 479-r3 |
| Chainguard | trino-plugin-ldap-group-provider | 0 | 479-r3 |
| Chainguard | trino-plugin-loki | 0 | 479-r3 |
| Chainguard | trino-plugin-mariadb | 0 | 479-r3 |
| Chainguard | trino-plugin-memory | 0 | 479-r3 |
| Chainguard | trino-plugin-mongodb | 0 | 479-r3 |
| Chainguard | trino-plugin-mysql | 0 | 479-r3 |
| Chainguard | trino-plugin-opa | 0 | 479-r3 |
| Chainguard | trino-plugin-openlineage | 0 | 479-r3 |
| Chainguard | trino-plugin-opensearch | 0 | 479-r3 |
| Chainguard | trino-plugin-oracle | 0 | 479-r3 |
| Chainguard | trino-plugin-password-authenticators | 0 | 479-r3 |
| Chainguard | trino-plugin-pinot | 0 | 479-r3 |
| Chainguard | trino-plugin-postgresql | 0 | 479-r3 |
| Chainguard | trino-plugin-prometheus | 0 | 479-r3 |
| Chainguard | trino-plugin-redis | 0 | 479-r3 |
| Chainguard | trino-plugin-redshift | 0 | 479-r3 |
| Chainguard | trino-plugin-resource-group-managers | 0 | 479-r3 |
| Chainguard | trino-plugin-session-property-managers | 0 | 479-r3 |
| Chainguard | trino-plugin-singlestore | 0 | 479-r3 |
| Chainguard | trino-plugin-snowflake | 0 | 479-r3 |
| Chainguard | trino-plugin-spooling-filesystem | 0 | 479-r3 |
| Chainguard | trino-plugin-sqlserver | 0 | 479-r3 |
| Chainguard | trino-plugin-thrift | 0 | 479-r3 |
| Chainguard | trino-plugin-tpcds | 0 | 479-r3 |
| Chainguard | trino-plugin-tpch | 0 | 479-r3 |
| Chainguard | trino-plugin-vertica | 0 | 479-r3 |
| Chainguard | zookeeper-3.8 | 0 | 3.8.5-r2 |
| Chainguard | zookeeper-3.9 | 0 | 3.9.4-r2 |
| Chainguard | zookeeper-custom | 0 | 3.9.4-r5 |
| Chainguard | zookeeper-fips-3.8 | 0 | 3.8.5-r1 |
| Chainguard | zookeeper-fips-3.9 | 0 | 3.9.4-r2 |
| Wolfi | akhq | 0 | 0.26.0-r7 |
| Wolfi | apache-nifi | 0 | 2.7.2-r5 |
| Wolfi | apache-nifi-registry | 0 | 2.7.2-r3 |
| Wolfi | apache-nifi-registry-toolkit | 0 | 2.7.2-r3 |
| Wolfi | cassandra-5.0 | 0 | 5.0.7-r1 |
| Wolfi | dependency-track | 0 | 4.14.0-r0 |
| Wolfi | dependency-track-bundled | 0 | 4.14.0-r0 |
| Wolfi | keycloak-config-cli | 0 | 6.4.1-r7 |
| Wolfi | keycloak-config-cli-iamguarded-compat | 0 | 6.4.1-r0 |
| Wolfi | kserve-modelmesh | 0 | 0.12.0-r22 |
| Wolfi | management-api-for-apache-cassandra-4.1 | 0 | 0.1.113-r0 |
| Wolfi | management-api-for-apache-cassandra-5.0 | 0 | 0.1.113-r0 |
| Wolfi | nextflow | 0 | 25.10.4-r1 |
| Wolfi | sonar-scanner-cli | 0 | 8.0.1.6346-r2 |
| Wolfi | sonarqube | 0 | 26.1.0.118079-r2 |
| Wolfi | trino | 0 | 479-r3 |
| Wolfi | trino-plugin-ai-functions | 0 | 479-r3 |
| Wolfi | trino-plugin-bigquery | 0 | 479-r3 |
| Wolfi | trino-plugin-blackhole | 0 | 479-r3 |
| Wolfi | trino-plugin-cassandra | 0 | 479-r3 |
| Wolfi | trino-plugin-clickhouse | 0 | 479-r3 |
| Wolfi | trino-plugin-delta-lake | 0 | 479-r3 |
| Wolfi | trino-plugin-druid | 0 | 479-r3 |
| Wolfi | trino-plugin-duckdb | 0 | 479-r3 |
| Wolfi | trino-plugin-elasticsearch | 0 | 479-r3 |
| Wolfi | trino-plugin-exasol | 0 | 479-r3 |
| Wolfi | trino-plugin-exchange-filesystem | 0 | 479-r3 |
| Wolfi | trino-plugin-exchange-hdfs | 0 | 479-r3 |
| Wolfi | trino-plugin-faker | 0 | 479-r3 |
| Wolfi | trino-plugin-functions-python | 0 | 479-r3 |
| Wolfi | trino-plugin-google-sheets | 0 | 479-r3 |
| Wolfi | trino-plugin-hive | 0 | 479-r3 |
| Wolfi | trino-plugin-http-event-listener | 0 | 479-r3 |
| Wolfi | trino-plugin-hudi | 0 | 479-r3 |
| Wolfi | trino-plugin-iceberg | 0 | 479-r3 |
| Wolfi | trino-plugin-ignite | 0 | 479-r3 |
| Wolfi | trino-plugin-jmx | 0 | 479-r3 |
| Wolfi | trino-plugin-kafka | 0 | 479-r3 |
| Wolfi | trino-plugin-kafka-event-listener | 0 | 479-r3 |
| Wolfi | trino-plugin-lakehouse | 0 | 479-r3 |
| Wolfi | trino-plugin-ldap-group-provider | 0 | 479-r3 |
| Wolfi | trino-plugin-loki | 0 | 479-r3 |
| Wolfi | trino-plugin-mariadb | 0 | 479-r3 |
| Wolfi | trino-plugin-memory | 0 | 479-r3 |
| Wolfi | trino-plugin-mongodb | 0 | 479-r3 |
| Wolfi | trino-plugin-mysql | 0 | 479-r3 |
| Wolfi | trino-plugin-opa | 0 | 479-r3 |
| Wolfi | trino-plugin-openlineage | 0 | 479-r3 |
| Wolfi | trino-plugin-opensearch | 0 | 479-r3 |
| Wolfi | trino-plugin-oracle | 0 | 479-r3 |
| Wolfi | trino-plugin-password-authenticators | 0 | 479-r3 |
| Wolfi | trino-plugin-pinot | 0 | 479-r3 |
| Wolfi | trino-plugin-postgresql | 0 | 479-r3 |
| Wolfi | trino-plugin-prometheus | 0 | 479-r3 |
| Wolfi | trino-plugin-redis | 0 | 479-r3 |
| Wolfi | trino-plugin-redshift | 0 | 479-r3 |
| Wolfi | trino-plugin-resource-group-managers | 0 | 479-r3 |
| Wolfi | trino-plugin-session-property-managers | 0 | 479-r3 |
| Wolfi | trino-plugin-singlestore | 0 | 479-r3 |
| Wolfi | trino-plugin-snowflake | 0 | 479-r3 |
| Wolfi | trino-plugin-spooling-filesystem | 0 | 479-r3 |
| Wolfi | trino-plugin-sqlserver | 0 | 479-r3 |
| Wolfi | trino-plugin-thrift | 0 | 479-r3 |
| Wolfi | trino-plugin-tpcds | 0 | 479-r3 |
| Wolfi | trino-plugin-tpch | 0 | 479-r3 |
| Wolfi | trino-plugin-vertica | 0 | 479-r3 |
| Wolfi | zookeeper-3.8 | 0 | 3.8.5-r2 |
| Wolfi | zookeeper-3.9 | 0 | 3.9.4-r2 |
| openSUSE:Leap 15.6 | logback | 0 | 1.2.13-150200.3.16.1 |
| openSUSE:Tumbleweed | logback | 0 | 1.2.13-2.1 |
Related vulnerabilities
- CVE-2025-11226 ACE vulnerability in conditional configuration file processing by QOS.CH logback-core up… Also affects ch.qos.logback:logback-core
- CVE-2024-12801 Server-Side Request Forgery (SSRF) in SaxEventRecorder by QOS.CH logback version 0.1 to… Also affects ch.qos.logback:logback-core
- CVE-2024-12798 ACE vulnerability in JaninoEventEvaluator by QOS.CH logback-core upto including version… Also affects ch.qos.logback:logback-core
- CVE-2023-6481 A serialization vulnerability in logback receiver component part of logback version… Also affects ch.qos.logback:logback-core
- CVE-2023-6378 A serialization vulnerability in logback receiver component part of logback version… Also affects ch.qos.logback:logback-core
- CVE-2026-33871 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-33870 Netty is an asynchronous, event-driven network application framework. Also affects akhq
- CVE-2026-24281 Hostname verification in Apache ZooKeeper ZKTrustManager falls back to reverse DNS (PTR)… Also affects akhq