Category Archives: AI and ML

CVE-2026-52966: A design flaw in the Linux kernel direct rendering manager (DRM). Don’t underestimate it! (26th Jun 2026)

Preface: Syzbot is an automated testing system operated by Google that continuously tests the Linux kernel to discover hidden bugs, crashes, and security vulnerabilities. It runs a public Syzbot control panel that lists all active bugs, helps developers track fix progress, and sends crash reports directly to Linux community mailing lists.

Background: Linux kernel’s Direct Rendering Manager (DRM) is deeply connected to both the GPU shader cores and the rendering process. It acts as the “traffic cop” and resource manager for your graphics hardware.

The details below are an expansion of the remedies associated with the infographic in this article.

idrobj = idr_replace(&file_priv->object_idr, obj, handle);

idr is the mechanism used in the Linux core to map integer IDs (such as handle) to indicators (such as obj). Idr_replace will replace the old object originally mapped at the handle position with the new obj (obj here is usually NULL, which means releasing or clearing the mapping). Return value: This function returns the old indicator originally stored at this location. If the replacement is successful and was originally empty, NULL should be returned.

spin_unlock(&file_priv->table_lock);

Function: Release the spinlock (Spinlock). Technical details: table_lock is a protection lock set to prevent multiple execution threads from modifying the IDR table at the same time. After modifying the table (executing idr_replace), it must be unlocked immediately so that other threads can access the table.

WARN_ON(idrobj != NULL);

Function: Error checking and warning. Technical details: This is a core debugging mechanism.

Vulnerability details: CVE-2026-52966 is a logic bug in the Linux kernel . It happens when the system accidentally mixes up the old and new addresses of an internal tracking object . This specific mistake occurs during the DRM (Direct Rendering Manager) driver’s “change handle” process.

The Result: The system gets confused, causing system stability issues (like crashes or errors).

Official announcement: Please refer to the link for details – https://www.tenable.com/cve/CVE-2026-52966

CVE-2026-55447: A critical security vulnerability in the AI workflow platform Langflow versions prior to 1.9.2  (25th June 2026)

Preface: AI models do not use Langflow to generate or write code for you. When a large language model (like ChatGPT, Claude, Gemini, or specialized coding assistants) writes code in response to your prompts, it uses its own internal neural network, parameters, and training data.

The relationship between AI and Langflow is actually the exact opposite: human developers use Langflow to build, connect, and manage AI models.

Background: Langflow is an open-source, visual low-code framework specifically built to design, prototype, and deploy Artificial Intelligence (AI) workflows, multi-agent systems, and Retrieval-Augmented Generation (RAG) applications. It functions as a visual orchestration layer that abstracts complex Python AI code into drag-and-drop components.

Langflow features an embedded AI sidekick called the Langflow Assistant. The coolest part about this feature is its “inception-style” architecture: the Langflow Assistant is actually powered by a hidden Langflow graph running behind the scenes on your local server. When you ask it a question or give it a command, it runs an internal AI flow to alter or build the external AI flow you are working on.

When developers use Langflow, the strongest and most effective type of coding is Python-based integration, data orchestration, and AI pipeline customization.

Security Focus: Langflow is a tool for building and deploying AI-powered agents and workflows. Prior to 1.9.2, by controlling a files that are digested into the RAG, an attacker can direct the node to read any file on the file-system by absolute path. All components based on BaseFileComponent are vulnerable to the vulnerability.

Ref: Controlling the files ingested into a Retrieval-Augmented Generation (RAG) pipeline means curating, filtering, and optimizing your source data before it is processed by the search and language models.

This process directly dictates the quality of your AI’s responses and prevents the system from “hallucinating” or wasting resources on irrelevant noise.

Affected Nodes on Your Canvas

Any flow using the following visual components prior to version 1.9.2 is vulnerable:

  • Read File (FileComponent)
  • Docling nodes (DoclingInlineComponent, DoclingRemoteComponent)
  • NVIDIA Retriever Extraction (NvidiaIngestComponent)
  • Video File (VideoFileComponent) Unstructured API (UnstructuredComponent)

Official announcement: Please refer to the link for details – https://www.tenable.com/cve/CVE-2026-55447

CVE-2026-56412: Use After Free occurs in libexpat before 2.8.2 (24th June 2026)

Preface: The primary machine learning tools and libraries that rely on libexpat include: OpenCV, GDAL / OGR, Apple Core ML Tools, Apache Spark / PySpark, ROS / ROS 2 (Robot Operating System) and Python AI Ecosystem.

Background: Primary machine learning (ML) tools and libraries rely on libexpat because it serves as the underlying engine for fast, memory-efficient XML parsing within Python, which is the dominant programming language for ML development.

Machine learning requires processing massive datasets, often distributed via structured XML-based formats (like Wikipedia dumps, Annotated Image Pascal VOC files for computer vision, or clinical medical notes).

The libexpat Solution: It is a stream-oriented (SAX-like) parser. It processes XML documents sequentially in tiny chunks (events), allowing ML data pipelines to extract and stream features on the fly without running out of memory.

Machine learning models are trained and deployed across highly diverse environments—from Linux-based GPU cloud clusters to Windows workstations and edge devices. libexpat is a light, stable C99 library with virtually no external dependencies. This makes it effortless to package, compile, and distribute across any operating system alongside primary ML wheels.

Ref: If a specific version of your ROS 2 environment compiles urdfdom with an unpatched version of libexpat, the system is still vulnerable to CVE-2026-56412.

CVE-2026-56412 is a Use-After-Free (UAF) vulnerability. Even though a developer uses a “safe” API wrapper, if urdfdom passes a maliciously crafted URDF XML file to an unpatched libexpat, the resulting memory corruption happens within the process’s shared memory space. This can still crash the ROS node or lead to arbitrary code execution.

Vulnerability details: libexpat before 2.8.2 does not consider XML_TOK_DATA_CHARS in doCdataSection and thus lacks handler call depth tracking for various calls from within handlers in cases of a policy violation. Thus, a use-after-free can occur. NOTE: this issue exists because of an incomplete fix for CVE-2026-50219.

Official announcement: Please refer to the link for details – https://nvd.nist.gov/vuln/detail/CVE-2026-56412

CVE-2026-12773: A weakness has been identified in BerriAI litellm up to 1.59.8. (23rd Jun 2026)

Preface: LiteLLM is widely deployed by AI platforms because it provides a free, open-source proxy that unifies access to over 100 LLMs (like OpenAI, Anthropic, and local models) under a single OpenAI-compatible API format. It simplifies multi-model integration while enabling enterprise-grade cost tracking, spend limits, and rate limiting.

Background: LiteLLM (BerriAI) uses user_api_key_auth[.]py to handle backend API key validation, user tracking, and model permission routing. To implement custom authentication, you write a Python script with a user_api_key_auth(request, api_key) function and pass the file path to your proxy configuration.

About Auth Workflow When a request arrives at the proxy, the workflow follows these steps:

Request Interception: The proxy receives the HTTP request (e.g., /v1/chat/completions) and inspects the Authorization: Bearer <api_key> header.

Custom Verification: LiteLLM runs the user_api_key_auth function defined in your custom script. This function checks the <api_key> against an external database, a hardcoded master key, or a third-party auth service.

Pydantic Object Return: On success, your function returns a UserAPIKeyAuth Pydantic object (which tracks user limits, key max budgets, and allowed models).

Policy Enforcement: If configured, the proxy enforces rate limits, model allowlists, and per-model spending budgets before passing the request to the LLM provider

Ref: A Pydantic object return refers to configuring a Python function, API framework, or AI framework to output structured data in the form of a validated Pydantic model instance.

Security Advisory: CVE-2026-12773 (LiteLLM Proxy Auth Bypass)

  • The Issue: Versions of BerriAI LiteLLM up to 1.59.8 contain a weakness in the custom proxy authentication handler. If post-custom checks are disabled, broken custom scripts can lead to financial and structural compromise via key theft or cross-environment token reuse.
  • The Impact: Attackers can bypass request controls, map backend routes, and orchestrate Denial of Wallet (DoW) attacks by draining upstream AI balances.

Official announcement: Please refer to the link for details – https://www.tenable.com/cve/CVE-2026-12773

CVE-2026-45617: Design weakness of LiquidJS

Publication date of this article: June 22, 2026

Preface: Liquid[.]js (LiquidJS) is not a machine learning framework or artificial intelligence library; it is a JavaScript implementation of the Liquid template language. Liquid was originally created by Shopify for loading dynamic content on store pages. However, due to its widespread use in building web interfaces and handling automated processes, it has been combined with machine learning and artificial intelligence in several specific ways.

Background: In a typical web application, LiquidJS runs first to build the skeleton of the page, and JavaScript runs second to make that skeleton come alive.

  1. Step 1 (Server): LiquidJS parses an HTML file, injects a user’s name from a database into a template, and outputs a flat HTML string.
  2. Step 2 (Network): The server sends this flat HTML across the internet to the user’s device.
  3. Step 3 (Browser): The browser displays the HTML and encounters a <script> tag. It then executes the JavaScript code to handle interactive menus or popups on that page.

The developer of LiquidJS included the regex purely to implement a built-in convenience filter called strip_html.

To do this lightweight operation quickly without adding heavy HTML parsing libraries, the developer used the exact regex alternation pattern.

/<script[\s\S]*?<\/script>|<style[\s\S]*?<\/style>|<[\s\S]*?>|<!–[\s\S]*?–>/g

Attackers can exploit the generic |<[\s\S]*?>| group using malformed attributes that regex cannot naturally handle.

Vulnerability details: Because LiquidJS runs directly on the Node.js backend of these cloud apps, the flawed regex becomes a critical threat vector. Node.js is single-threaded. When a backend server processes an unclosed string like <script<script… using that flawed regex, the CPU hits 100% trying to calculate the infinite backtracking possibilities. A single bad request can freeze the entire server thread for over 10 seconds, creating an easy, unauthenticated Denial of Service (DoS) exploit. This is so called Event Loop Blocking (ReDoS).

Official announcement: Please refer to the link for details – https://www.tenable.com/cve/CVE-2026-45617

CVE-2026-48797: Reflex WebSocket Unauthenticated Training Vulnerability (19th June 2026)

Preface: Backpropagation is not used by a single specific robot, but rather by deep learning architectures and neural network controllers powering many modern autonomous systems. It is the foundational training algorithm used for everything from autonomous wheeled robots and robotic arms to industrial mobile robots.

Background: Backpropagate is a Python library for fine-tuning large language models on a single GPU.

The backpropagate library bundles Reflex as an optional web UI component. The BACKPROPAGATE_UI_AUTH variable fails because it is an application-specific environment variable for the backpropagate library, not a native Reflex configuration. While the backpropagate CLI exports this variable to subprocesses, its underlying Reflex application code lacks the necessary request guards, middleware, or WebSocket checks to read and enforce it.

FastAPI app managed by Reflex. Because Reflex establishes persistent WebSockets to manage state updates and actions, simply blocking standard HTTP requests is not enough; you must intercept the WebSocket connection handshake.

Ref: Does The BACKPROPAGATE bundle Reflex ?

Yes, the backpropagate library bundles Reflex as an optional web UI component. It uses Reflex to provide a local training control plane where you can upload datasets, start or stop model fine-tuning, orchestrate multi-runs, and push models to Hugging Face.

Vulnerability details: Anyone with simple network access to the Web UI port can connect over WebSockets and bypass security entirely to:

Hijack Training: Remotely trigger arbitrary AI training scripts or alter model weights.

Exfiltrate Data: View or steal private training datasets and path locations.

Tamper with Assets: Export internal GGUF formats or unauthorizedly push models straight to the Hugging Face Hub.

Cause Denial of Service (DoS): Overwhelm and crash host environments by filling up local server disk space with junk data.

Remedy:

Permanent Solution: Update the library to backpropagate version 1.2.0 or later, which formally implements the backend security check.

Temporary Workaround: Inject a standard FastAPI authentication middleware class directly into the application server stack to intercept and enforce HTTP Basic authentication checks on the /_event WebSocket endpoint before Reflex maps it.

Official announcement: Please refer to the link for details – https://www.tenable.com/cve/CVE-2026-48797

CVE-2026-24252: NVIDIA NeMo for Linux contains a vulnerability where an attacker may cause OS command injection (18th June 2026)

Preface: NVIDIA NeMo is a widely adopted, end-to-end framework for building, customizing, and deploying generative AI models (LLMs) and conversational AI agents. It is primarily used to tailor open-source models—such as Llama, Mistral, and Google Gemma—using proprietary enterprise data.

Ollama, Mistral, and Google Gemma represent a powerful ecosystem for running local, open-weight Large Language Models (LLMs). Ollama acts as the engine to run models, while Mistral and Gemma are two of the most popular, high-performing model families designed to be efficient enough to run on personal computers.

Ollama itself does not use Nvidia NeMo; Ollama is an open-source runtime designed to pull, manage, and run LLMs (like Llama, Mistral, and Gemma) locally on consumer hardware. However, Mistral and Google actively collaborate with Nvidia, meaning their models frequently utilize Nvidia’s NeMo framework and are accessible via tools like NVIDIA NIM.

Background: A model_weights[.]ckpt file is a checkpoint file that stores the learned parameters (weights and biases) of a neural network. When serialized using Python’s pickle module, the file contains a bytecode payload representing the pickled Python dictionary of arrays, which poses arbitrary code execution risks during deserialization.

The attached infographic details CVE-2026-24252, a critical security vulnerability that could lead to operating system command injection in NVIDIA NeMo for Linux.

How the Exploit Works

  1. Malicious file creation: Attackers package custom code into [.]nemo checkpoints.
  2. Abusing Pickle: They use Python’s __reduce__ method.
  3. Command payload: This method embeds arbitrary shell commands.
  4. Target execution: The victim opens the file locally.
  5. Deserialization trigger: NeMo calls pickle[.]load() automatically.
  6. System compromise: The OS executes the injected command immediately.

Vulnerability details: CVE-2026-24252 NVIDIA NeMo for Linux contains a vulnerability where an attacker may cause OS command injection. A successful exploit of this vulnerability may lead to code execution, data tampering, escalation of privileges and information disclosure.

Remedy: Modern versions of PyTorch and NeMo mitigate this by passing weights_only=True to the loading mechanism. This instructs the deserializer to strictly accept only raw data arrays (like your original np[.]random[.]randn arrays) and explicitly reject any custom Python classes or executable instructions.

Official announcement: Please refer to the link for details – https://nvidia.custhelp.com/app/answers/detail/a_id/5839

About CVE-2025-54509: This attack, known as the Staleus attack, could trigger a design flaw in AMD’s IOMMU.

Publication date of this article: 12th June 2026

Preface: Because CVE-2025-54509 breaks that cryptographic isolation, it directly undermines the core trust assumption of AMD SEV-SNP because the hypervisor is the only entity that is supposed to be blocked by SEV-SNP, but is granted unauthorized access by this flaw.

Background: To understand why security advisories and researchers (such as the team behind the “Staleus” attack paper) specifically quote a “malicious hypervisor” even though a bare-metal host OS kernel has the exact same native authority.

But the crucial IOMMU only triggers when a peripheral device acts as the master and initiates a transaction over the PCIe/system bus.

How about MMU? MMU protects the system from unauthorized CPU access to memory and device registers.

The official vulnerability note described that an improper access control for register interface in the input-output memory management unit (IOMMU) could allow a privileged attacker. For example, AMD EPYC 9965 is explicitly built for High-Performance Computing (HPC) clusters. The AMD EPYC 9965 is engineered for high-density, multi-tenant computing environments, and it utilizes a massive PCIe 5.0 bus architecture. Processors, especially in heterogeneous systems (CPUs, GPUs, and accelerators) and embedded environments, use non-coherent memory access primarily to achieve higher performance, reduce power consumption, and minimize hardware complexity.

Ref:Non-coherent memory access occurs when multiple agents (like a CPU and a DMA controller) access the same memory location, but their local caches are not automatically synchronized, leading to potential data inconsistencies. It requires software to explicitly manage cache maintenance (flushing or invalidating) to ensure data integrity.

Vulnerability details:

Primary Target Generation – 5th Gen AMD EPYC (Turin) platforms.

Exploitation Core Flaw – Lack of access control rules governing IOMMU memory-coherency configuration registers.

Attack Execution Mechanics – Host flips a bit forcing the AMD Secure Processor (ASP) to use non-coherent lines, pulling stale table data directly from DRAM.

Security Impact Profile – Complete collapse of Reverse Map Table (RMP) validation, causing cross-domain integrity failures.

Primary Remediation – SB-3039 PI microcode patch + operating system level MMIO mapping restrictions.

Official announcement: Please refer to the link for details – https://nvd.nist.gov/vuln/detail/CVE-2025-54509

CVE-2026-24180 and CVE-2026-24181 – Heap buffer overflow vulnerability in NVIDIA DALI (11th Jun 2026)

Preface: The attached diagram illustrates how an attacker could trigger the CVE-2026-24180 and CVE-2026-24181 vulnerabilities. This diagram serves as a visual aid for threat modeling, dividing the attack vector into two main paths within the NVIDIA Data Load Library (DALI) data processing pipeline.

Background: As shown in the figure, the following detailed information explains how this vulnerability occurred.

1. The Deserialization Vector (The “Pickle Bomb”)

Sections 4 and 5 of the diagram map out how an attacker executes arbitrary code using insecure data parsing:

•The Vulnerability Layer: When DALI processes batches or training checkpoints, it relies on Python’s built-in pickle.loads() function to reconstruct data objects.

•The Exploit Execution: An attacker supplies a maliciously crafted dataset or checkpoint file containing a specialized payload. As shown in the code snippet, when pickle.loads() evaluates the serialized byte stream, it invokes the native Python __reduce__ method. This allows the attacker to step outside the memory sandbox and automatically run system commands with the host program’s privileges.

2. The Memory Boundary Vector (Heap Buffer Overflow)

Sections 2 and 3 explain how memory corruption occurs on the backend during media loading:

•The Vulnerability Layer: DALI leverages CPU/GPU-accelerated multimedia codecs (like libjpeg-turbo and nvJPEG) to pre-parse incoming audio tracks and JPEG image segments.

•The Exploit Execution: The software lacks strict bounds validation for input structures. An attacker passes a specialized file containing mutated headers, altered dimensions, or oversized network packets. Because the system does not verify these bounds, the file metadata triggers an integer or buffer mismatch, forcing data to overrun the allocated limits of the heap memory sector. This results in an out-of-bounds write or read sequence, compromising the stability of downstream frameworks like PyTorch, TensorFlow, or MXNet.

Furthermore, a heap-based buffer overflow in a data loading library is almost always caused by improper data validation. It occurs when the library fails to check input bounds—such as when processing image files, network packets, or file headers—allowing crafted data to exceed the allocated heap buffer’s capacity and overwrite adjacent memory.

Vulnerability details:

CVE-2026-24180 NVIDIA DALI contains a vulnerability in a component where an attacker could cause a heap-based buffer overflow. A successful exploit of this vulnerability might lead to code execution, data tampering, denial of service, and information disclosure.

CVE-2026-24181 NVIDIA DALI contains a vulnerability in a component where an attacker could cause an improper index validation. A successful exploit of this vulnerability might lead to code execution, data tampering, denial of service, and information disclosure.

Official announcement: Please refer to the link for details – https://nvidia.custhelp.com/app/answers/detail/a_id/5814

CVE-2026-46442: Regarding Flowise versions prior to 3.1.2 (June 10, 2026)

Preface: Flowise is an open-source, low-code tool that enables users to build customized Large Language Model (LLM) orchestration flows and AI agents using a visual, drag-and-drop interface based on LangChain. It allows for rapid development of AI applications without extensive coding, connecting LLMs (OpenAI, Anthropic, Local via Ollama) with tools, vector stores, and memory.

Background: When you install Flowise in a Docker container, the NodeVM sandbox environment is included within that same container. Flowise uses this NodeVM to securely execute custom JavaScript code (e.g., in Custom JS Function nodes) inside its own runtime environment.

NodeVM (a class from sandboxing libraries like vm2) is a software mechanism used inside JavaScript code to run untrusted code in an isolated scope. NVM (Node Version Manager) is a command-line developer utility used to install and switch between different versions of Node.js on a local machine or server.

Best Practices for Production

Enable Strict Sandbox: Always ensure the JAVASCRIPT_SANDBOX environment variable is set to true in your Docker compose file to prevent unrestricted Node module imports.

Limit Container Privileges: Run the Docker container as a non-root user to minimize damage if a sandbox escape occurs.

Restrict Network Egress: Use Docker network policies to block the Flowise container from accessing sensitive internal networks or databases it does not need.

Vulnerability details: Prior to version 3.1.2, POST /api/v1/node-custom-function lacks route-level authorization, allowing any authenticated user or API key to submit arbitrary JavaScript to the Custom JS Function node. When E2B_APIKEY is not configured — the common deployment case — Flowise executes this code inside a NodeVM sandbox. This sandbox can be escaped, allowing an attacker to reach the host process object and execute system commands via child_process. The result is authenticated remote code execution on the Flowise server host.

Remedy: This issue has been patched in version 3.1.2.

Official announcement: Please refer to link for details – https://www.tenable.com/cve/CVE-2026-46442