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-67439

CVE-2026-67439: Incorrect Authorization Leading to Log Leak in OliveTin

Alon Barad
Alon Barad
Software Engineer

Jul 31, 2026·5 min read·4 visits

Executive Summary (TL;DR)

OliveTin failed to validate log-viewing permissions on synchronous execution endpoints, leaking sensitive shell outputs to restricted users.

An incorrect authorization vulnerability (CWE-863) exists in OliveTin prior to version 3000.17.0. The flaw allows authenticated users who are authorized to execute commands but restricted from viewing logs to bypass this restriction. By utilizing synchronous endpoints, attackers can directly access execution outputs containing sensitive system data, credentials, and environmental configurations.

Vulnerability Overview

OliveTin exposes predefined shell commands to users through a web interface. Administrators use Access Control Lists (ACLs) to manage execution permissions separately from log-viewing capabilities.

This design ensures that low-privileged users can trigger operational tasks without seeing command outputs, which may contain sensitive system details, configurations, or environmental secrets.

The vulnerability, designated as CVE-2026-67439, resides in the synchronous execution API endpoints. These endpoints run actions and return the execution results directly to the client.

This architectural bypass violates the configured access controls, allowing users with execution rights (exec:true) but restricted log viewing (logs:false) to fully read the execution logs.

The impact is limited to information disclosure. An attacker cannot escalate execution rights beyond their pre-assigned actions, but they can view data printed to standard output or standard error.

Root Cause Analysis

The core issue exists in the service/internal/api/api.go file within the OliveTin backend. The software exposes two synchronous execution routes: StartActionAndWait and StartActionByGetAndWait.

Unlike their asynchronous counterparts, these endpoints block execution until the shell command finishes and then package the execution metrics directly into a response message.

While the application successfully verifies that the user holds the necessary execution rights to trigger an action, it fails to perform post-execution verification before serializing the log payload.

The endpoints convert the backend execution output (InternalLogEntry) straight into a Protobuf payload via api.internalLogEntryToPb without evaluating the user's log privileges.

The developers omitted the invocation of api.isLogEntryAllowed within these specific handlers. Because this check was missing, the application sent the command's complete stdout and stderr back to the client interface. The lack of validation leads to a complete bypass of the log-viewing restriction.

Code Analysis

To understand the vulnerability, examine the difference between the unpatched code and the patched version. The unpatched endpoints executed actions and serialized the raw internal logs directly to the client. The fix introduces a structured authorization helper and channels the results through an explicit permission validation routine.

// BEFORE THE PATCH (Vulnerable Code)
// The backend directly serializes internal logs without evaluating log permissions
internalLogEntry, ok := api.startActionAndWaitRun(binding, args, justification, user)
if !ok {
	return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("execution not found"))
}
return connect.NewResponse(&apiv1.StartActionAndWaitResponse{
	LogEntry: api.internalLogEntryToPb(internalLogEntry, user), // <-- Direct exposure
}), nil
// AFTER THE PATCH (Fixed Code)
// The backend now routes the log payload through permission validation helpers
func (api *oliveTinAPI) requireLogEntryAllowed(entry *executor.InternalLogEntry, user *authpublic.AuthenticatedUser) error {
	if api.isLogEntryAllowed(entry, user) {
		return nil
	}
	return connect.NewError(connect.CodePermissionDenied, fmt.Errorf("permission denied to view this execution"))
}
 
func (api *oliveTinAPI) logEntryForAllowedViewer(internalLogEntry *executor.InternalLogEntry, user *authpublic.AuthenticatedUser) (*apiv1.LogEntry, error) {
	if err := api.requireLogEntryAllowed(internalLogEntry, user); err != nil {
		return nil, err
	}
	return api.internalLogEntryToPb(internalLogEntry, user), nil
}

The refactored structure introduces requireLogEntryAllowed which actively calls isLogEntryAllowed to check the user's ACL. If the user lacks permissions, the application halts the transaction and returns a connect.CodePermissionDenied error. This mechanism guarantees that execution outputs are filtered securely before leaving the system.

Exploitation Methodology

To exploit this vulnerability, an attacker must have network access to the OliveTin instance and a valid set of credentials. The user account must be granted execution access to at least one action, but have log access explicitly disabled. This setup represents a standard configuration for restricted system operators.

The attacker makes a direct request to the synchronous endpoints instead of using the standard client UI flow. For example, the attacker issues a POST request to /apiv1.OliveTinService/StartActionAndWait containing the target command identifier. Alternatively, a GET request can be structured to target the /apiv1.OliveTinService/StartActionByGetAndWait endpoint.

The application validates execution privileges, triggers the process, and blocks until completion. When the command completes, the server replies with a standard JSON or Protobuf payload containing the LogEntry. This object includes the full stdout and stderr arrays, revealing any configuration strings, active credentials, or filesystem pathways printed by the scripts.

Impact Assessment

The security impact is classified as an authorization bypass leading to information disclosure. The vulnerability does not allow unauthorized remote code execution because the attacker must already possess execution rights for the triggered action. It does, however, compromise the principle of least privilege.

The severity of the leak depends on the scripts managed by OliveTin. If actions involve sensitive operations like database backups, environment setups, or cloud provisioning, the execution logs likely output database connection strings, credentials, structural directories, or API keys. Exposure of these details provides lateral movement vectors to deeper parts of the infrastructure.

The CVSS v3.1 base score is 4.3 (Medium), reflecting network exploitability with low privileges required, zero user interaction, and a low confidentiality impact. There are no known public exploits or evidence of active exploitation in the wild.

Detection & Mitigation Guidance

The primary resolution is updating OliveTin to version 3000.17.0 or later. This version contains the complete access control validations for all synchronous action routes. Administrators should plan updates immediately to eliminate the authorization bypass vectors.

If patching cannot be executed immediately, administrators should audit all defined actions in the configuration files. Modifying scripts to ensure they suppress output or avoid printing secrets to stdout provides a secondary layer of defense. Additionally, logs from proxy servers or OliveTin's logging endpoints should be audited for frequent hits to /apiv1.OliveTinService/StartActionAndWait from low-privileged accounts.

Official Patches

OliveTinLog bypass mitigation patch commit
OliveTinOfficial 3000.17.0 release notes

Fix Analysis (1)

Technical Appendix

CVSS Score
4.3/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
EPSS Probability
0.25%
Top 83% most exploited

Affected Systems

OliveTin Core Server

Affected Versions Detail

Product
Affected Versions
Fixed Version
OliveTin
OliveTin
>= 3000.7.0, < 3000.17.03000.17.0
AttributeDetail
CWE IDCWE-863 (Incorrect Authorization)
Attack VectorNetwork (AV:N)
Privileges RequiredLow (PR:L)
CVSS v3.1 Score4.3 (Medium)
EPSS Score0.00252 (Percentile: 16.75%)
Exploit StatusNone (No public PoC)
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1068Exploitation for Privilege Escalation
Privilege Escalation
CWE-863
Incorrect Authorization

The software does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action.

Vulnerability Timeline

Vulnerability discovered and reported by security researcher offset.
2026-03-12
Remediation patch committed to primary branch.
2026-07-08
GitHub Security Advisory published and CVE-2026-67439 assigned.
2026-07-29
OliveTin version 3000.17.0 released containing structural validation improvements.
2026-07-29

References & Sources

  • [1]GitHub Security Advisory GHSA-jm28-2wcr-qf3h
  • [2]NVD CVE-2026-67439 Detail
  • [3]CVE.org CVE Record

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

•about 2 hours ago•CVE-2026-67437
7.5

CVE-2026-67437: Unauthenticated Denial of Service via OAuth2 State Memory Exhaustion in OliveTin

An uncontrolled resource consumption vulnerability (CWE-400) in OliveTin allows unauthenticated remote attackers to exhaust server memory and trigger a denial of service (DoS). By repeatedly initiating the OAuth2 login flow without completing it, attackers can force the server to allocate state variables in an unbounded in-memory map. This heap-based resource exhaustion eventually causes the host operating system to terminate the OliveTin process via the Out-Of-Memory (OOM) killer.

Amit Schendel
Amit Schendel
2 views•8 min read
•about 4 hours ago•CVE-2026-67438
6.6

CVE-2026-67438: OS Command Injection via Custom regex: Argument Type Bypassing Shell Safety Check in OliveTin

An OS command injection vulnerability exists in OliveTin versions >= 3000.2.0 and < 3000.17.0. The flaw stems from a validation bypass in the shell safety engine, which fails to recognize custom regular expression arguments as unsafe for actions run in shell execution mode. Furthermore, because these custom regex checks evaluate partial string matches, attackers can append arbitrary shell metacharacters to valid inputs. This allows unauthenticated or low-privilege users who are authorized to run configured actions to inject shell commands and achieve arbitrary remote code execution on the host system.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 5 hours ago•CVE-2026-63118
6.9

CVE-2026-63118: DNS-Rebinding and Cross-Origin Request Execution in Model Context Protocol (MCP) Ruby SDK

A critical vulnerability (CVE-2026-63118) in the Model Context Protocol (MCP) Ruby SDK allows attackers to execute arbitrary JSON-RPC commands and exfiltrate sensitive local data from an MCP server bound to the local loopback interface. This is achieved through DNS-rebinding and cross-origin request execution due to missing validation of the HTTP Host and Origin headers in the StreamableHTTPTransport component.

Alon Barad
Alon Barad
6 views•6 min read
•about 7 hours ago•CVE-2026-63119
6.2

CVE-2026-63119: Denial of Service via Uncontrolled Resource Consumption in Model Context Protocol Ruby SDK

CVE-2026-63119 is a high-impact denial-of-service vulnerability in the Model Context Protocol (MCP) Ruby SDK (distributed as the 'mcp' gem) before version 0.23.0. The vulnerability allows an attacker to cause resource exhaustion and process termination by streaming unbounded input to standard I/O streams.

Alon Barad
Alon Barad
5 views•6 min read
•about 8 hours ago•CVE-2026-67430
5.3

CVE-2026-67430: Denial of Service via Unbounded Session Retention in Model Context Protocol Ruby SDK

CVE-2026-67430 is a medium-severity Denial of Service (DoS) vulnerability in the Model Context Protocol (MCP) Ruby SDK (packaged as the mcp gem) versions prior to 0.23.0. In stateful deployments using the StreamableHTTPTransport class, client session states are retained in an in-memory hash map. Because the transport implements a nil idle timeout by default, the background scavenger process is suppressed. Remote, unauthenticated attackers can flood the endpoint with initialize requests, rapidly consuming system memory and triggering an Out-of-Memory (OOM) crash.

Alon Barad
Alon Barad
6 views•8 min read
•about 9 hours ago•CVE-2026-67432
7.5

CVE-2026-67432: High Severity Denial of Service in Model Context Protocol (MCP) Ruby SDK

An uncontrolled memory allocation vulnerability (CWE-770) exists in the Model Context Protocol (MCP) Ruby SDK (the `mcp` gem) prior to version 0.23.0. The SDK's StreamableHTTPTransport and StdioTransport layers fail to impose bounds on incoming payloads. An unauthenticated attacker can exploit these issues by transmitting massive, nested payloads to exhaust worker memory, leading to process termination.

Amit Schendel
Amit Schendel
4 views•7 min read