Skip to main content
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify network-exposed unauthenticated memcached on port 11211
  2. Delivery
    Enumerate predictable Ansible fact cache keys from known inventory hostnames
  3. Exploit
    Craft malicious Python pickle payload encoding arbitrary OS command
  4. Execution
    Write poisoned payload to target cache key via unauthenticated SET command
  5. Persist
    Ansible controller automatically reads poisoned fact cache during playbook execution
  6. Impact
    Arbitrary code executes as Ansible controller process user with fleet-wide credential access

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three concurrent conditions: (1) the Ansible controller must be configured to use the community.general.memcached cache plugin as the fact caching backend - set via 'fact_caching = community.general.memcached' in ansible.cfg, which is a non-default, explicitly operator-chosen configuration; (2) the memcached instance must be reachable by the attacker over the network, meaning it is not restricted to localhost (127.0.0.1) and is not protected by a host or network firewall on port 11211; and (3) the attacker must be able to write to memcached, which requires no credentials since memcached has no native authentication. Cache key prediction requires only knowledge of Ansible inventory host names, which may be discoverable from network enumeration, DNS, or prior access. Exploitation is fully blocked in deployments where memcached is bound to localhost or isolated behind a properly configured firewall. No user interaction from the Ansible operator is required beyond routine playbook execution - the poisoned cache is read automatically.

Impact

The CVSS 3.1 vector AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (8.1) is well-calibrated: AC:H reflects the realistic prerequisite that the attacker must reach a memcached instance, which in correctly architected deployments is bound to localhost or a restricted management VLAN rather than the public internet. However, the potential impact is asymmetrically severe - Ansible controllers typically hold SSH private keys, cloud provider credentials, and inventory over entire infrastructure fleets, meaning a single compromised controller can cascade into full environment compromise across all managed nodes. Even a mid-sized infrastructure team in mielec running Red Hat OpenStack or Ceph with a shared management-network memcached instance should treat this as high-priority remediation despite the AC:H qualifier. No EPSS data was present in the provided intelligence, and there is no CISA KEV entry, indicating no confirmed widespread exploitation at time of analysis. The attack pattern itself - injecting malicious pickle payloads into unauthenticated memcached - is well-established and requires no novel technique, lowering the effective bar once network access is achieved. Multi-tenant environments and shared automation platforms represent the highest-risk deployment patterns.

Exploit ScenarioDerived

An attacker with access to the management or automation network identifies a memcached instance on port 11211 serving as the Ansible fact cache for a Red Hat OpenStack or Ceph deployment. Using the unauthenticated memcached protocol, the attacker writes a crafted pickle payload - encoding a reverse shell or credential exfiltration command - to a cache key derived from a known inventory hostname such as 'ansible_facts_controller01.example.com'. When an operator next runs a playbook against that host and the Ansible controller fetches cached facts, the pickle payload deserializes and executes arbitrary OS commands as the Ansible service account, which typically holds SSH keys and cloud credentials for the entire managed fleet. No public proof-of-concept code has been identified at time of analysis, but the generic technique of injecting malicious pickle payloads into unauthenticated memcached is well-documented in security research.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 09, 2026

Remote code execution via unsafe Python pickle deserialization in the community.general Ansible collection's memcached fact cache plugin gives unauthenticated network-adjacent attackers full control of the Ansible controller. Despite documenting JSON as its storage format, the plugin delegates serialization entirely to python-memcached, which transparently pickles Python objects on write and unpickles them on read - a format that executes arbitrary Python code during deserialization. Because memcached has no native authentication and Ansible fact cache keys are derived from predictable hostnames, any attacker who can write to the target memcached instance can inject a malicious payload that executes when the controller next reads cached facts. No public exploit or CISA KEV entry has been identified at time of analysis.

RemediationAI

No specific patched version of the community.general collection is identified in the available intelligence; organizations should monitor https://access.redhat.com/security/cve/CVE-2026-87874 and https://bugzilla.redhat.com/show_bug.cgi?id=2530995 for Red Hat errata and apply vendor-issued patches for affected products when released. As an immediate and highly effective workaround, bind the memcached instance to the loopback interface (127.0.0.1:11211) or apply host-based firewall rules restricting port 11211 access to only the Ansible controller's IP address - this eliminates the network-based attack surface entirely and requires only a memcached configuration change and service restart with no Ansible-side changes. A more comprehensive fix is to switch the fact_caching backend in ansible.cfg to 'jsonfile' or to 'redis' with authentication enabled; this eliminates the unsafe deserialization path entirely but may affect performance and requires testing playbook behavior against the new backend. Organizations should immediately audit all memcached instances used for Ansible fact caching to determine whether they are network-exposed, and treat any such exposure as a critical compensating control gap pending patching.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerable component is the community.general.memcached cache plugin for Ansible, which acts as a fact cache backend - persisting host facts gathered during playbook runs between executions to speed up automation. The plugin relies on the python-memcached client library (not the safer pymemcache), which applies Python's native pickle protocol transparently: values are pickled on SET and unpickled on GET. Python's pickle module is documented as fundamentally unsafe for untrusted data because deserialization executes arbitrary Python bytecode (CWE-502: Deserialization of Untrusted Data). The attack surface is amplified by two memcached properties: the protocol has no authentication mechanism, and cache keys are constructed from Ansible inventory host names and variable names, making them enumerable by an attacker with knowledge of or access to the inventory. Red Hat's affected products (CPE: cpe:2.3:a:red_hat:red_hat_ceph_storage_5, red_hat_ceph_storage_9, red_hat_openstack_platform_17.1, red_hat_openstack_platform_18.0) bundle and rely on Ansible for infrastructure lifecycle management, inheriting this plugin. The root cause is a documentation-implementation mismatch that created an implicit trust boundary violation: callers assumed JSON but received unauthenticated pickle deserialization.

Know when Ansible gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (redhat) PRIMARY HIGH
NVD 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

AV:N and PR:N because memcached is unauthenticated over the network; AC:H because the attacker must reach a memcached instance that is typically localhost-bound or network-firewalled.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Red Hat 8.1 MEDIUM

Primary rating from Vendor (redhat).

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionNVD

A flaw was found in the memcached cache plugin of the community.general Ansible collection. Although its documentation states that records are stored in JSON format, the plugin performs no explicit serialization and relies on python-memcached, which pickles values on write and unpickles them on read. Because memcached is unauthenticated and cache keys are predictable, an attacker able to reach a network-exposed or shared memcached instance can write a crafted pickle payload that is deserialized and executed on the Ansible controller when the poisoned fact cache is next read, leading to remote code execution.

Executive ViewAI

Why It Matters

The Ansible community.general memcached-based fact caching feature contains a high-severity remote code execution vulnerability allowing network-adjacent attackers to inject malicious payloads into memcached that execute when Ansible controllers retrieve cached data, resulting in complete controller compromise. As Ansible controllers serve as the central point for infrastructure automation across enterprises, their compromise would enable attackers to propagate malicious configurations to all managed infrastructure. This vulnerability creates material risk to infrastructure integrity and operational continuity.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Implement these interim mitigations: restrict memcached network access through firewall rules to only authorized Ansible controller hosts to prevent injection of malicious payloads; consider disabling memcached fact caching entirely in favor of safer serialization formats such as JSON-based backends if operationally acceptable; establish continuous audit logging and monitoring for unexpected memcached access patterns and modifications; deploy host-based intrusion detection on Ansible controllers to identify exploitation attempts; maintain regular audits of Ansible execution logs for unauthorized configuration changes or suspicious task execution patterns that could indicate controller compromise.

Threat Intelligence Overview

EPSS Score
0.4%
Top 64% exploitable
Prevalence
Medium
Ansible is widely deployed; memcached fact cache plugin is niche non-default
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment Vendor VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Affected Products (CPE)NVD

cpe:2.3:a:red_hat:red_hat_ceph_storage_5:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_ceph_storage_9:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_openstack_platform_17.1:*:*:*:*:*:*:*:*
cpe:2.3:a:red_hat:red_hat_openstack_platform_18.0:*:*:*:*:*:*:*:*
CVE-2015-1482 MEDIUM POC
5.0 Feb 04

Ansible Tower (aka Ansible UI) before 2.0.5 allows remote attackers to bypass authentication and obtain sensitive inform

CVE-2015-1481 MEDIUM POC
6.5 Feb 04

Ansible Tower (aka Ansible UI) before 2.0.5 allows remote organization administrators to gain privileges by creating a s

CVE-2015-1368 MEDIUM POC
4.3 Jan 27

Multiple cross-site scripting (XSS) vulnerabilities in Ansible Tower (aka Ansible UI) before 2.0.5 allow remote attacker

CVE-2019-10217 MEDIUM POC
6.5 Nov 25

A flaw was found in ansible 2.8.0 before 2.8.4. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploit

CVE-2017-7550 CRITICAL
9.8 Nov 21

A flaw was found in the way Ansible (2.3.x before 2.3.3, and 2.4.x before 2.4.1) passed certain parameters to the jenkin

CVE-2021-33924 CRITICAL
9.8 Sep 29

Confluent Ansible (cp-ansible) version 5.5.0, 5.5.1, 5.5.2 and 6.0.0 is vulnerable to Incorrect Access Control via its a

CVE-2020-1733 MEDIUM POC
5.0 Mar 11

A race condition flaw was found in Ansible Engine 2.7.17 and prior, 2.8.9 and prior, 2.9.6 and prior when running a play

CVE-2014-3498 HIGH
8.8 Jun 08

The user module in ansible before 1.6.6 allows remote authenticated users to execute arbitrary commands. Rated high seve

CVE-2026-89091 HIGH
8.8 Oct 08

Symlink-following file overwrite on the Ansible control node is possible in ansible-core when a user runs `ansible-galax

CVE-2020-1735 MEDIUM POC
4.6 Mar 16

A flaw was found in the Ansible Engine when the fetch module is used. Rated medium severity (CVSS 4.6), this vulnerabili

CVE-2015-6240 HIGH
7.8 Jun 07

The chroot, jail, and zone connection plugins in ansible before 1.9.2 allow local users to escape a restricted environme

CVE-2016-3096 HIGH
7.8 Jun 03

The create_script function in the lxc_container module in Ansible before 1.9.6-1 and 2.x before 2.0.2.0 allows local use

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy