/

CVE-2026-55695

Severity:

CRITICAL RISK

(9.1)

Code Injection (CWE-94) in FearlessCMS Update Handler

CVE-2026-55695

Deferred

Vulnerability type

Category:

Code Injection

CWE:

CWE-94

Impact:

Arbitrary PHP Code Execution

Severity:

CRITICAL RISK

(9.1)

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

FearlessCMS contains a code injection risk in its administrator-triggered updater, which accepts an arbitrary Git repository URL and replaces live application directories without verifying the source or contents. An authenticated administrator, or an attacker who obtains equivalent administrative access, may use this behavior to deploy PHP code that executes with the web server's privileges and persists as a backdoor.

FearlessCMS contains a code injection risk in its administrator-triggered updater, which accepts an arbitrary Git repository URL and replaces live application directories without verifying the source or contents. An authenticated administrator, or an attacker who obtains equivalent administrative access, may use this behavior to deploy PHP code that executes with the web server's privileges and persists as a backdoor.

Affected context

The issue may affect FearlessCMS deployments using the built-in updater in versions 0.1.2b and earlier. Risk is present where an authenticated administrator can control the repository URL accepted by admin/updater-handler.php, and where the updater can replace the plugins/, admin/, and includes/ directories without repository identity, signature, or content verification. PHP files placed in executable plugin locations may then be processed by the web server.

The issue may affect FearlessCMS deployments using the built-in updater in versions 0.1.2b and earlier. Risk is present where an authenticated administrator can control the repository URL accepted by admin/updater-handler.php, and where the updater can replace the plugins/, admin/, and includes/ directories without repository identity, signature, or content verification. PHP files placed in executable plugin locations may then be processed by the web server.

Exploit preconditions

  • Attack surface: The administrator-facing updater and its Git-based update workflow
  • Required access: Authenticated administrator privileges, or equivalent control of an administrator session
  • Trigger point: An update operation that invokes perform_update and passes the configured repository URL to update.sh
  • Why exploitation is possible: The updater trusts attacker-selected repository content, replaces live PHP application directories, and permits executable PHP files under plugin paths without establishing repository authenticity or content safety
  • Attack surface: The administrator-facing updater and its Git-based update workflow
  • Required access: Authenticated administrator privileges, or equivalent control of an administrator session
  • Trigger point: An update operation that invokes perform_update and passes the configured repository URL to update.sh
  • Why exploitation is possible: The updater trusts attacker-selected repository content, replaces live PHP application directories, and permits executable PHP files under plugin paths without establishing repository authenticity or content safety

Why this happens

The underlying defect is a failure to establish trust and integrity for software retrieved by an administrative update mechanism. A user-controlled repository URL is passed into an update process that clones external content and replaces executable application directories without verifying repository identity, signatures, provenance, or the contents being installed. This unsafe code deployment pattern maps to CWE-94: Improper Control of Generation of Code ('Code Injection'), because attacker-influenced files can become executable PHP within the application runtime.

The underlying defect is a failure to establish trust and integrity for software retrieved by an administrative update mechanism. A user-controlled repository URL is passed into an update process that clones external content and replaces executable application directories without verifying repository identity, signatures, provenance, or the contents being installed. This unsafe code deployment pattern maps to CWE-94: Improper Control of Generation of Code ('Code Injection'), because attacker-influenced files can become executable PHP within the application runtime.

Potential impact

  • An attacker may execute arbitrary PHP code with the web server's privileges.
  • The application and its stored content may be compromised.
  • Sensitive configuration data or credentials could be accessed.
  • A persistent web backdoor could be installed.
  • The host may be used for lateral movement or further compromise.
  • Site content, plugins, or administrative functionality could be altered.
  • An attacker may execute arbitrary PHP code with the web server's privileges.
  • The application and its stored content may be compromised.
  • Sensitive configuration data or credentials could be accessed.
  • A persistent web backdoor could be installed.
  • The host may be used for lateral movement or further compromise.
  • Site content, plugins, or administrative functionality could be altered.

General mitigation guidance

Mitigation generally focuses on making software updates trustworthy, constrained, and least-privileged.

Common defensive patterns include:

  • Allowing updates only from a fixed, trusted repository or an approved artifact source.
  • Verifying signed release artifacts, repository identity, commit provenance, and integrity before installation.
  • Separating download, validation, and activation stages so unverified content cannot replace live code.
  • Applying allowlists and strict validation to update source configuration.
  • Preventing direct execution of uploaded or untrusted PHP files in plugin and content directories where feasible.
  • Running the web server and updater with minimal filesystem and operating-system privileges.
  • Using atomic deployments with rollback and maintaining protected, auditable update records.
  • Restricting administrator access with strong authentication, session protection, and least privilege.

Mitigation generally focuses on making software updates trustworthy, constrained, and least-privileged.

Common defensive patterns include:

  • Allowing updates only from a fixed, trusted repository or an approved artifact source.
  • Verifying signed release artifacts, repository identity, commit provenance, and integrity before installation.
  • Separating download, validation, and activation stages so unverified content cannot replace live code.
  • Applying allowlists and strict validation to update source configuration.
  • Preventing direct execution of uploaded or untrusted PHP files in plugin and content directories where feasible.
  • Running the web server and updater with minimal filesystem and operating-system privileges.
  • Using atomic deployments with rollback and maintaining protected, auditable update records.
  • Restricting administrator access with strong authentication, session protection, and least privilege.

How teams detect issues like this

Organizations can look for:

  • Static-analysis findings where administrator-controlled URLs reach shell commands, Git operations, or file replacement routines.
  • Code review signals such as update logic lacking signature verification, provenance checks, content scanning, or fixed source allowlists.
  • Web-server and application logs showing unusual updater activity, repository URLs, or requests for newly created PHP files under plugin directories.
  • File-integrity monitoring alerts for unexpected changes to plugins/, admin/, and includes/.
  • Policy enforcement that blocks executable scripts in untrusted upload or plugin paths and requires approved signed artifacts for deployment.
  • Automated security review tools configured to identify command construction, unsafe update workflows, and executable-code deployment from user-controlled sources.

Organizations can look for:

  • Static-analysis findings where administrator-controlled URLs reach shell commands, Git operations, or file replacement routines.
  • Code review signals such as update logic lacking signature verification, provenance checks, content scanning, or fixed source allowlists.
  • Web-server and application logs showing unusual updater activity, repository URLs, or requests for newly created PHP files under plugin directories.
  • File-integrity monitoring alerts for unexpected changes to plugins/, admin/, and includes/.
  • Policy enforcement that blocks executable scripts in untrusted upload or plugin paths and requires approved signed artifacts for deployment.
  • Automated security review tools configured to identify command construction, unsafe update workflows, and executable-code deployment from user-controlled sources.

Sources

SourceLink
github.comgithub.com/fearlessgeekmedia/FearlessCMS/commit/6dba91d496463e3940a2c917af3cae97b191de92
github.comgithub.com/fearlessgeekmedia/FearlessCMS/pull/64
github.comgithub.com/fearlessgeekmedia/FearlessCMS/releases/tag/0.1.3
github.comgithub.com/fearlessgeekmedia/FearlessCMS/security/advisories/GHSA-56wm-3q3v-m93m

Frequently asked

questions

It can be triggered through the web application by an authenticated administrator, provided the updater is reachable and the account can initiate updates. Exploitation does not require unauthenticated access under the described conditions.

The key prerequisite is administrator-level authentication or equivalent control over an administrator session. Additional deployment controls may limit whether the updater can reach external repositories or modify live files.

Treat update sources and artifacts as untrusted until their origin, integrity, signatures, and contents have been verified. Use a fixed or allowlisted source, validate artifacts before activation, and ensure unverified files cannot replace executable application code.

Use signed, reproducible release artifacts, least-privilege update processes, protected deployment pipelines, strong administrator authentication, file-integrity monitoring, and policies that prevent arbitrary PHP execution from untrusted directories.

It can be triggered through the web application by an authenticated administrator, provided the updater is reachable and the account can initiate updates. Exploitation does not require unauthenticated access under the described conditions.

The key prerequisite is administrator-level authentication or equivalent control over an administrator session. Additional deployment controls may limit whether the updater can reach external repositories or modify live files.

Treat update sources and artifacts as untrusted until their origin, integrity, signatures, and contents have been verified. Use a fixed or allowlisted source, validate artifacts before activation, and ensure unverified files cannot replace executable application code.

Use signed, reproducible release artifacts, least-privilege update processes, protected deployment pipelines, strong administrator authentication, file-integrity monitoring, and policies that prevent arbitrary PHP execution from untrusted directories.

Find out what's already
exploitable in your codebase.