OliveTin OS Command Injection via Shell Mode Arguments (CVE-2026-27626)
by Md Saikat (0xh7ml) · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-27626 / GHSA-49gm-hh7w-wfvf
- Category
- web
- Affected product
- OliveTin (self-hosted web UI for exposing predefined shell commands)
- Affected versions
- All versions ≤ 3000.10.0 (commits prior to 0.0.0-20260222101908-4bbd2eab1532)
- Disclosed
- 2026-07-05
- Patch status
- unpatched
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-07 |
| Author / Researcher | Md Saikat (0xh7ml) |
| CVE / Advisory | CVE-2026-27626 / GHSA-49gm-hh7w-wfvf |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.9–10.0 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) |
| Status | PoC |
| Tags | command-injection, olivetin, rce, webhook, shell-mode, cwe-78, self-hosted |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | OliveTin (self-hosted web UI for exposing predefined shell commands) |
| Versions Affected | All versions ≤ 3000.10.0 (commits prior to 0.0.0-20260222101908-4bbd2eab1532) |
| Language / Platform | Python PoC targeting a Go web application |
| Authentication Required | No (webhook vector); Low-privilege authenticated/self-registered user (password-argument vector) |
| Network Access Required | Yes |
Summary
OliveTin lets administrators expose predefined shell commands (“Actions”) to end users via a web UI or webhooks, relying on checkShellArgumentSafety() to sanitize user-supplied argument values before they are templated into a command string and passed to sh -c. The PoC demonstrates two independent ways to bypass this sanitization: the password argument type is missing from the function’s allow-list and falls through unsanitized, and webhook-triggered actions extract arbitrary JSON keys directly into the execution arguments without ever calling the safety check at all. Because webhook ingestion is a core supported use case and OliveTin often ships with authType: none and self-registration enabled, the second vector yields unauthenticated remote code execution. The script sends a crafted request to a target OliveTin instance and executes an arbitrary OS command as the OliveTin service account.
Vulnerability Details
Root Cause
checkShellArgumentSafety() only sanitizes a hardcoded list of argument types (string, int, bool, choice); the password type and any webhook-derived key with no matching ActionArgument definition bypass the check entirely and are templated unsanitized into sh -c.
Attack Vector
- Identify an OliveTin instance running Shell-mode Actions, ideally with a webhook-triggered action or a
password-typed argument. - Send a POST request (webhook endpoint or authenticated password-argument endpoint) containing shell metacharacters (
;,|,`,$()) in the argument value. - OliveTin templates the unsanitized value into the configured shell command and executes it via
sh -c. - The injected command runs with the privileges of the OliveTin process.
Impact
Arbitrary OS command execution as the OliveTin service account, potentially leading to full host or container compromise; the webhook vector requires zero credentials.
Environment / Lab Setup
Target: OliveTin <= 3000.10.0 (Shell mode enabled, webhook-triggered Action or password-argument Action)
Attacker: Python 3, network access to the OliveTin HTTP/webhook endpoint
Proof of Concept
PoC Script
See
CVE-2026.27626.pyin this folder.
| |
The script sends a crafted request against the target’s OliveTin endpoint, injecting a shell command (default id) via the unsanitized password argument or webhook path and displaying the command output returned by the vulnerable instance.
Detection & Indicators of Compromise
Signs of compromise:
- Unexpected child processes spawned by the OliveTin service account
- Webhook request bodies containing shell metacharacters in argument values
- Outbound connections or file writes initiated by the OliveTin host shortly after a webhook call
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade OliveTin to build 0.0.0-20260222101908-4bbd2eab1532 or later |
| Interim mitigation | Disable Shell mode and webhook-triggered Actions where not required, remove password-typed arguments reachable by untrusted users, enforce real authentication instead of authType: none, and restrict network access to the webhook endpoint |
References
Notes
Mirrored from https://github.com/0xh7ml/CVE-2026-27626-PoC on 2026-07-05.
| |