---
id: "CVE-2026-82960"
kind: "vulnerability"
aliases: ["CVE-2026-82960"]
title: "Apache OFBiz: CMS content editors can run OS commands on the server"
severity: "high"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["apache-ofbiz", "cms-plugin", "java", "package", "self-hosted"]
not_affected_if: ["cms-plugin-absent", "fixed-24.09.08-or-later", "no-untrusted-content-editors"]
published_at: "2026-11-05T14:17:06+00:00"
first_seen_at: "2026-11-05T14:39:18+00:00"
updated_at: "2026-11-05T14:40:38+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-82960", "first_seen_at": "2026-11-05T14:39:18+00:00"}]
exploit_sources: []
---

# Apache OFBiz: CMS content editors can run OS commands on the server

A user with CMS content-editor access can send one crafted HTTP POST to the EditAddContent screen and inject Groovy code that runs operating system commands. The commands run as the OFBiz process user, so the attacker gets code execution on the server.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Apache OFBiz version and whether the cms plugin is present
- Confirm whether the cms plugin is enabled on the deployment
- Look for the `caContentIdTo` parameter in web server access logs hitting `EditAddContent`

## Fix

- Apache OFBiz cms plugin: upgrade to `24.09.08` or later

## Timeline

- 2026-11-05T14:39:18+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-82960

## From the sources

Improper Control of Generation of Code ('Code Injection') in ModelFormField in the Apache OFBiz cms plugin before 24.09.08 on all platforms allows a remote authenticated attacker holding only CMS content-editor access to execute arbitrary operating system commands as the OFBiz process user via a single HTTP POST request, by submitting a crafted caContentIdTo parameter to EditAddContent, because the CMS screen copies that parameter into a top-level context variable that is interpolated into a form field's use-when attribute and the resulting string is passed unvalidated to GroovyUtil.eval(), whose compile-time SecureASTCustomizer sandbox does not restrict runtime reflection, allowing a payload that closes the expanded string literal and invokes java.lang.Runtime via reflection. Users are recommended to upgrade to version 24.09.08, which fixes this issue.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
