AI Alert
cve

MetInfo CMS CVE-2026-29014 Exploited in the Wild for Remote Code Execution

A critical unauthenticated PHP code injection flaw in MetInfo CMS 7.9–8.1 (CVSS 9.8) is under active exploitation. Patch to the April 7 release immediately.

By Theo Voss · · 8 min read

Threat actors began actively exploiting CVE-2026-29014 on April 25, 2026, roughly three weeks after MetInfo released a patch. Activity spiked again on May 1, with attack traffic concentrated against roughly 2,000 internet-exposed MetInfo CMS instances, predominantly in China and Hong Kong. VulnCheck flagged the campaign; the underlying advisory comes from independent researcher Egidio Romano.

Affected Versions

ProductVersionsStatus
MetInfo CMS7.9, 8.0, 8.1Vulnerable
MetInfo CMSPost-April 7, 2026 patchFixed

CVSS 3.1: 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 4.0: 9.3 Critical
CWE: CWE-94 — Improper Control of Generation of Code (Code Injection)

The Vulnerability

The flaw lives in /app/system/weixin/include/class/weixinreply.class.php, specifically inside the wxAdminLogin() method. This component handles incoming WeChat API webhook requests. Two XML parameters, EventKey and FromUserName, are extracted from the HTTP request body and passed to caching functions without sanitization.

Exploitation chains two bugs together.

Step 1 — Path traversal via cache::get(): The $code parameter accepts directory traversal sequences. An attacker manipulates it so the method attempts to retrieve a cache entry that does not exist, causing the return value $login_code to be set to the string "Array".

Step 2 — PHP code injection via cache::put(): With $login_code resolving to "Array", the application writes the attacker-controlled FromUserName value into the file /cache/weixin/Array.php. The written file looks like:

<?php
defined('IN_MET') or exit('No permission');
$cache="{$data}";
?>

PHP’s double-quoted string syntax evaluates expressions inside curly braces. By embedding a valid PHP expression in FromUserName, an attacker places executable code inside $cache. A subsequent HTTP request that causes PHP to include or evaluate that cache file triggers execution.

The attack requires no authentication. On non-Windows hosts, one practical prerequisite applies: the directory /cache/weixin/ must already exist, which is created automatically when the MetInfo WeChat integration plugin is installed. Sites that have never installed the WeChat plugin but run a vulnerable version may still be reachable depending on how directory creation is handled, but the primary attack surface is installations with the plugin active.

Exploitation Timeline

The 18-day gap between patch release and active exploitation is shorter than average for critical CMS vulnerabilities and aligns with patterns VulnCheck has observed around public PoC availability. Romano published a proof-of-concept at https://karmainsecurity.com/pocs/CVE-2026-29014.php alongside the advisory.

Mitigation

Apply the vendor patch. MetInfo published the fix on April 7, 2026; updated packages are available at the official MetInfo download portal (metinfo.cn/news/2875.html).

If immediate patching is not possible, operators can reduce exposure by:

  1. Blocking unauthenticated POST requests to the WeChat endpoint. The wxAdminLogin() method is reached through the WeChat webhook path. Restricting access at the WAF or reverse proxy to known WeChat IP ranges limits the attack surface.
  2. Removing or restricting write access to /cache/weixin/ prevents the injected file from being written, breaking step 2 of the exploit chain.
  3. Disabling the WeChat integration plugin entirely if it is not in active use removes the affected code path.

None of these workarounds should be treated as permanent. The patch is the only reliable fix.

Scope and Context

Shodan and similar indexing tools show approximately 2,000 MetInfo CMS instances with HTTP-accessible admin panels. The majority are hosted in China, where MetInfo has significant market share among small-business and government-adjacent sites. An unauthenticated RCE with a public PoC and a 9.8 CVSS score on a CMS with this exposure profile is a reliable target for automated scanning.

VulnCheck’s telemetry indicating the May 1 spike suggests the campaign moved beyond opportunistic probing into more deliberate targeting. Organizations running MetInfo in any version between 7.9 and 8.1 should treat this as an active incident until patched.

Sources

Sources

  1. NVD — CVE-2026-29014
  2. KIS-2026-06: MetInfo CMS Unauthenticated PHP Code Injection (Egidio Romano)
  3. The Hacker News: MetInfo CMS CVE-2026-29014 Exploited for Remote Code Execution Attacks
#cve #remote-code-execution #php #cms #active-exploitation
Subscribe

AI Alert — in your inbox

AI incidents and vulnerabilities — tracked, sourced, dated. — delivered when there's something worth your inbox.

No spam. Unsubscribe anytime.

Related

Comments