Event

TGIT
1/8

Video

IBM
2/8

Quiz

Quiz
3/8

Award

cnapp-v3
4/8

eBook

cnapp-v3
5/8

What's New?

AI icon

Don't just use AI,
Secure AI with AccuKnox AI-SPM!

PRODUCT TOUR
6/8

Blog

mssp

Why is AccuKnox the most MSSP ready CNAPP?

LEARN MORE
7/8

Comparison

Comparison

Searching for Alternative CNAPP?

COMPARE NOW
8/8
Openshift-AI.

How to Secure Against CVE-2025-10725 in OpenShift AI with AccuKnox Runtime Security

 |  Edited : November 18, 2025

A critical privilege escalation vulnerability in OpenShift AI (CVE-2025-10725) allows attackers to move from a Jupyter notebook to full cluster admin. This post dissects the attack path and demonstrates a runtime security fix using AccuKnox to neutralize the threat.

Reading Time: 7 minutes

TL;DR

  • A flaw in OpenShift AI (CVE-2025-10725) allows any authenticated user, even one with low privileges, to create jobs in any namespace.
  • An attacker can exploit this from a standard Jupyter notebook to run a malicious job using a high-privilege service account from a different, protected namespace.
  • This exploit path leads directly to service account token exfiltration, enabling a full privilege escalation to cluster-admin and a complete cluster compromise.
  • The immediate remediation is to remove the dangerous ClusterRoleBinding that grants these broad permissions to the system:authenticated group.
  • A robust, layered defense using AccuKnox provides runtime security that blocks the attack at its source by preventing access to service account tokens and stopping unauthorized processes.

In the world of cloud-native platforms, the principle of least privilege is a cornerstone of security. However, even in mature environments like Red Hat OpenShift AI, a single misconfiguration can unravel this principle, creating a direct path from a low-privileged user to a full cluster administrator.

This blog dissects a critical privilege escalation vulnerability, CVE-2025-10725. We will explore how a seemingly harmless permission granted to data scientists using Jupyter notebooks can be exploited for a complete cluster takeover. More importantly, we’ll demonstrate a layered defense strategy, combining immediate RBAC remediation with a robust runtime security solution from AccuKnox to neutralize the threat.

The Over-Privilege Vulnerability 

At its core, CVE-2025-10725 stems from an overly permissive Role-Based Access Control (RBAC) configuration within OpenShift AI.

A ClusterRole named kueue-batch-user-role is incorrectly bound to the system:authenticated group. This seemingly innocuous binding has severe consequences: it grants any authenticated entity—from a cluster admin to the service account of a standard Jupyter notebook—the permission to create OpenShift Jobs in any namespace across the entire cluster.

This flaw violates the principle of least privilege and creates a dangerous primitive for attackers. It gives them the ability to run arbitrary code in namespaces they should have no access to, setting the stage for privilege escalation.

The Impact

A low-privileged attacker with access to an authenticated account, such as a data scientist, can leverage this flaw to escalate their privileges to a full cluster-admin. This allows for the complete compromise of the cluster’s confidentiality, integrity, and availability. An attacker can steal sensitive data, disrupt all services, and take control of the underlying infrastructure, leading to a total breach of the platform.

without-with-accuknox

Attack Breakdown – Step by Step Compromise and Exploit

Let’s walk through how an attacker can weaponize this vulnerability, starting from a standard Jupyter notebook. This scenario highlights a fundamental weakness: a user should never be able to assign a service account to a workload that has higher permissions than their own.

Scenario: An attacker, posing as a data scientist, gains access to a Jupyter notebook in the kubeflow-user-example-com namespace.

  • Step 1: Create a Malicious Job: The attacker leverages the kueue-batch-user-role to create a new Job in a highly privileged namespace, such as openshift-apiserver-operator. Let’s call our target namespace openshift-ai-attack for this demo. This namespace contains a pre-existing, high-privilege service account named openshift-ai-attack-sa that has permissions to read secrets across the cluster.
    Step 2: Hijack a Privileged Service Account: The attacker configures the malicious Job manifest to use the openshift-ai-attack-sa service account.
  • Step 3: Exfiltrate the Token: The Job’s container is designed to execute a simple task: establish a reverse shell to the attacker’s Command and Control (C2) server. Once connected, the attacker uses the shell to access the service account’s token, which is mounted inside the pod.
  • Step 4: Pivot and Own the Cluster: With this powerful token, the attacker can now interact with the Kubernetes API server as the openshift-ai-attack-sa. They can read cluster-wide secrets, pivot to other namespaces, and ultimately grant themselves cluster-admin privileges, achieving a full cluster takeover.
Attack Defense Use Case Scenario

From within a standard Jupyter notebook, the attacker prepares the environment by downloading the kubectl client, enabling interaction with the Kubernetes API. The attacker confirms the exploit path by verifying that the kueue-batch-user-role is dangerously bound to the system:authenticated group.

Attack Defense Use Case Scenario

A malicious job.yaml manifest is created. This Job is specifically designed to run a reverse shell using a high-privilege service account in another namespace.

Attack Defense Use Case Scenario

The attacker applies the job.yaml file, successfully creating the malicious reverse-shell pod within the cluster. The attacker successfully receives a connection from the reverse shell pod. They now have an interactive root shell inside the compromised container.

Attack Defense Use Case Scenario
Attack Defense Use Case Scenario

Using the privileged service account token from the compromised pod, the attacker configures their kubectl client. This grants them elevated permissions to execute commands against the cluster. The attack’s impact is realized as the attacker successfully reads a sensitive secret, MYSQL_ROOT_PASSWORD, from the cluster.

Attack Defense Use Case Scenario
Attack Defense Use Case Scenario

Let’s see how to mitigate this issue in the runtime itself so even if the vulnerability exists, we can prevent this lateral movement and privilege escalation via AccuKnox YAML policy application for build to runtime security.

RedHat Redemediation & AccuKnox’s Runtime Security to the Rescue

Defending against such threats requires more than just patching the initial vulnerability; it demands a defense-in-depth strategy that combines proper RBAC hygiene with proactive runtime security.

affected packages

Level 1: Immediate Remediation (RBAC Hygiene)

The most direct fix, as recommended by Red Hat, is to correct the flawed RBAC configuration.

Recommendation: Remove the ClusterRoleBinding that associates the kueue-batch-user-role with the system:authenticated group. The permission to create jobs should be granted on a granular, as-needed basis to specific users or groups, not to every authenticated entity.

Level 2: Proactive Runtime Security with AccuKnox

While fixing the RBAC rule is critical, a robust security posture assumes that misconfigurations can and will happen. AccuKnox provides a powerful safety net by hardening the workload at runtime, neutralizing the attack even if the vulnerability exists.

This is achieved by applying a Zero Trust policy directly to the Jupyter notebook pod using KubeArmor, AccuKnox’s runtime security engine.

The AccuKnox UI shows the harden-jupyter-notebooks KubeArmor policy ready for activation. This policy is designed to block the exact attack vectors used previously. Once the AccuKnox policy is active, the attacker’s attempts to access the service account token or use kubectl are immediately met with “Permission denied,” neutralizing the threat. The AccuKnox alerts dashboard provides a clear audit log, showing the Block event that proves the policy successfully intercepted and stopped the malicious file access attempt.

With this policy in place, the attacker’s attempt to exfiltrate the token fails instantly, and the entire attack chain is broken at the source.

Attack Defense Use Case Scenario

Here is the policy we applied in the above demonstration that blocks access to the service account and leaky secret:


apiVersion: security.kubearmor.com/v1
kind: KubeArmorPolicy
metadata:
  name: harden-jupyter-notebooks
  namespace: kubeflow-user-example-com
spec:
  selector:
    matchLabels:
      notebook-name: openshift-ai-attack
  file:
    matchDirectories:
      # Block access to the service account token
      - dir: /run/secrets/kubernetes.io/
        recursive: true
      # Make system binary paths read-only
      - dir: /bin/
        readOnly: true
      - dir: /usr/bin/
        readOnly: true
      - dir: /sbin/
        readOnly: true
  process:
    matchDirectories:
     # Block execution of untrusted processes
      - dir: /root/
        recursive: true
      - dir: /sbin/
        recursive: true
  action: Block

This policy hardens the notebook environment in several key ways:

  1. Stops Token Exfiltration: It explicitly blocks access to the /run/secrets/kubernetes.io/ directory, where the service account token is mounted. The attacker’s code is met with a “Permission denied” error at the kernel level, stopping the attack at its most critical step.
  2. Prevents Unauthorized Execution: By setting system binary directories (/bin/, /usr/bin/) to read-only and blocking process execution from untrusted paths, it prevents the attacker from downloading and running malicious tools like reverse shells or crypto miners.
  3. Enforces Least Permissiveness: The policy enforces a strict, least-permissive posture. Only essential application processes are allowed to run, drastically shrinking the attack surface following zero trust principles.
ACCUKNOX Datasheet Apply eBPF-based runtime protection for VMs/containers, enforce process/file/network allowlists, and block lateral movement with micro-segmentation. Download CWPP Datasheet >

Securing Secrets – A Broader Zero Trust Approach

This CVE underscores a universal challenge in Kubernetes environments: protecting secrets. An attacker who gains initial access to a pod can often compromise secrets through various means. AccuKnox provides a comprehensive solution based on Zero Trust principles.

Threat Scenario Scenarios Prevented via AccuKnox Runtime Security
Secrets Leakage via File System An attacker gains pod access and tries to read secrets from mounted volumes or environment variables.
Lateral Movement via Tool Injection Attackers inject their own tools (curl, ncat) or use existing system utilities for reconnaissance and credential scraping.
Overly Permissive Workloads Pods often start with broad, unrestricted access to the file system and network, creating a massive attack surface.
Ransomware and Volume Corruption Attackers encrypt sensitive volume mounts containing secrets or databases, causing downtime.

Build to Runtime Security with AccuKnox

Build_to_Runtime_Security_AccuKnox

CVE-2025-10725 is a powerful reminder that cloud-native security is a multi-layered discipline. While diligent RBAC management is the first line of defense, it cannot be the only one. By embracing a Zero Trust model and implementing runtime security controls with solutions like AccuKnox, organizations can build resilient systems that contain threats at the source, ensuring that a single misconfiguration doesn’t lead to a full-scale compromise.

To learn more about AccuKnox’s features and how they can enhance your organization’s security, Book a Demo or View Product Tour.

Ready for a personalized security assessment?

“Choosing AccuKnox was driven by opensource KubeArmor’s novel use of eBPF and LSM technologies, delivering runtime security”

idt

Golan Ben-Oni

Chief Information Officer

“At Prudent, we advocate for a comprehensive end-to-end methodology in application and cloud security. AccuKnox excelled in all areas in our in depth evaluation.”

prudent

Manoj Kern

CIO

“Tible is committed to delivering comprehensive security, compliance, and governance for all of its stakeholders.”

tible

Merijn Boom

Managing Director