/

CVE-2026-111687

Severity:

CRITICAL RISK

(9.8)

Code Injection (CWE-95) in WeRSS RSS Template Engine

CVE-2026-111687

Deferred

Vulnerability type

Category:

Code Injection

CWE:

CWE-95

Impact:

Unauthenticated Remote Code Execution

Severity:

CRITICAL RISK

(9.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

WeRSS through version 1.5.3 contains a server-side code injection vulnerability in the template handling of its public RSS endpoint. An unauthenticated attacker may supply a crafted template that bypasses expression restrictions and execute operating-system commands with the privileges of the WeRSS service.

WeRSS through version 1.5.3 contains a server-side code injection vulnerability in the template handling of its public RSS endpoint. An unauthenticated attacker may supply a crafted template that bypasses expression restrictions and execute operating-system commands with the privileges of the WeRSS service.

Affected context

The issue occurs in WeRSS deployments that expose the public GET /rss/{feed_id} endpoint and process attacker-influenced template parameters. Risk increases when the endpoint accepts non-built-in template extensions and evaluates template expressions using an incomplete denylist or otherwise insufficient execution isolation.

The issue occurs in WeRSS deployments that expose the public GET /rss/{feed_id} endpoint and process attacker-influenced template parameters. Risk increases when the endpoint accepts non-built-in template extensions and evaluates template expressions using an incomplete denylist or otherwise insufficient execution isolation.

Exploit preconditions

  • Attack surface: Public HTTP RSS endpoint
  • Required access: No authentication may be required when the endpoint is exposed
  • Trigger point: Server-side processing of the template parameter for an RSS feed request
  • Why exploitation is possible: User-controlled template expressions are evaluated in a context where denylist checks can be bypassed, allowing access to command-execution functionality
  • Attack surface: Public HTTP RSS endpoint
  • Required access: No authentication may be required when the endpoint is exposed
  • Trigger point: Server-side processing of the template parameter for an RSS feed request
  • Why exploitation is possible: User-controlled template expressions are evaluated in a context where denylist checks can be bypassed, allowing access to command-execution functionality

Why this happens

The vulnerability results from evaluating attacker-controlled template content as executable logic. The template engine relies on denylist-based restrictions that do not adequately constrain object access or expression evaluation, allowing internal language features to be reached indirectly.

This behavior maps to CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Code Injection'), because input intended to define presentation content is interpreted as executable code rather than treated strictly as data.

The vulnerability results from evaluating attacker-controlled template content as executable logic. The template engine relies on denylist-based restrictions that do not adequately constrain object access or expression evaluation, allowing internal language features to be reached indirectly.

This behavior maps to CWE-95: Improper Neutralization of Directives in Dynamically Evaluated Code ('Code Injection'), because input intended to define presentation content is interpreted as executable code rather than treated strictly as data.

Potential impact

  • An attacker may execute arbitrary operating-system commands
  • The WeRSS service account could be compromised
  • Sensitive application data and environment secrets could be exposed
  • The host or container could be altered or used for persistence
  • The compromised service could support lateral movement or further attacks
  • An attacker may execute arbitrary operating-system commands
  • The WeRSS service account could be compromised
  • Sensitive application data and environment secrets could be exposed
  • The host or container could be altered or used for persistence
  • The compromised service could support lateral movement or further attacks

General mitigation guidance

Mitigation generally focuses on preventing untrusted template content from reaching dynamic evaluation.

Common defensive patterns include:

  • Treating templates and expressions as untrusted data by default
  • Replacing general-purpose evaluation with a constrained rendering model or fixed template set
  • Using allowlists for permitted fields, functions, and template constructs
  • Removing access to reflection, object traversal, filesystem, and process APIs from rendering contexts
  • Applying strict input validation to template-related parameters and extension values
  • Running the service with least-privilege permissions and isolating it from sensitive host resources
  • Avoiding reliance on denylist-only filtering as the primary security boundary

Mitigation generally focuses on preventing untrusted template content from reaching dynamic evaluation.

Common defensive patterns include:

  • Treating templates and expressions as untrusted data by default
  • Replacing general-purpose evaluation with a constrained rendering model or fixed template set
  • Using allowlists for permitted fields, functions, and template constructs
  • Removing access to reflection, object traversal, filesystem, and process APIs from rendering contexts
  • Applying strict input validation to template-related parameters and extension values
  • Running the service with least-privilege permissions and isolating it from sensitive host resources
  • Avoiding reliance on denylist-only filtering as the primary security boundary

How teams detect issues like this

Organizations can look for this issue through:

  • Static analysis rules identifying dynamic evaluation in template-rendering paths
  • Code review checks for denylist-based sandboxing and unrestricted object traversal
  • Tests that submit unexpected template syntax and verify that it is treated as data
  • API policy checks ensuring public endpoints do not accept arbitrary rendering instructions
  • Runtime monitoring for unusual child processes, shell activity, or command execution by the WeRSS service account
  • Automated security review tools that flag expression evaluation and template injection patterns

Organizations can look for this issue through:

  • Static analysis rules identifying dynamic evaluation in template-rendering paths
  • Code review checks for denylist-based sandboxing and unrestricted object traversal
  • Tests that submit unexpected template syntax and verify that it is treated as data
  • API policy checks ensuring public endpoints do not accept arbitrary rendering instructions
  • Runtime monitoring for unusual child processes, shell activity, or command execution by the WeRSS service account
  • Automated security review tools that flag expression evaluation and template injection patterns

Sources

SourceLink
github.comgithub.com/rachelos/we-mp-rss/blob/v1.5.3/apis/rss.py#L185-L198
github.comgithub.com/rachelos/we-mp-rss/blob/v1.5.3/core/lax/template_parser.py#L1150-L1166
hackmd.iohackmd.io/@hieuPenguinnn/werss-rss-template-unauth-ssti-rce
vulncheck.comvulncheck.com/advisories/werss-we-mp-rss-through-1.5.3-rce-via-template-parameter-in-rss-endpoint

Frequently asked

questions

Yes. When the public RSS endpoint is reachable and accepts the affected template input, exploitation may be possible over the network without a prior authenticated session.

The described attack does not require authentication. The attacker needs network access to the exposed endpoint and an application configuration that processes the supplied template parameter.

Do not dynamically evaluate attacker-controlled templates. Prefer fixed or strictly allowlisted templates with a minimal rendering context and no access to operating-system or reflective functionality.

Treat template input as untrusted, avoid denylist-only sandboxing, apply least privilege, and include template-injection tests and static analysis in the development and deployment process.

Yes. When the public RSS endpoint is reachable and accepts the affected template input, exploitation may be possible over the network without a prior authenticated session.

The described attack does not require authentication. The attacker needs network access to the exposed endpoint and an application configuration that processes the supplied template parameter.

Do not dynamically evaluate attacker-controlled templates. Prefer fixed or strictly allowlisted templates with a minimal rendering context and no access to operating-system or reflective functionality.

Treat template input as untrusted, avoid denylist-only sandboxing, apply least privilege, and include template-injection tests and static analysis in the development and deployment process.

Find out what's already
exploitable in your codebase.