CSIRTS // UNIFIED SECURITY ADVISORY FEEDSYS ● ONLINE · POWERED BY INTELFUSIONS.COM

CVE-2026-67439

mediumCVSS 4.3covered by 2 sourcesfirst seen 2026-07-29
Summary The synchronous execution RPCs StartActionAndWait and StartActionByGetAndWait return the full LogEntry for the just-executed action without checking whether the caller is allowed to read that action's logs. OliveTin's ACL model separates exec from logs. A deployment can intentionally allow a user to run an action while denying access to its historical or live output. That separation is enforced in GetLogs, GetActionLogs, ExecutionStatus, and EventStream, but it is not enforced in the synchronous ...AndWait endpoints. As a result, any user who can execute an action through these endpoints can read the action output immediately even when the action's ACL explicitly sets logs:false. Details OliveTin defines separate per-action permissions: // service/internal/config/config.go type PermissionsList struct { View bool koanf:"view" Exec bool koanf:"exec" Logs bool koanf:"logs" Kill bool koanf:"kill" } The normal log and streaming paths correctly enforce logs permission: // service/internal/api/api.go func (api *oliveTinAPI) isLogEntryAllowed(e *executor.InternalLogEntry, user *authpublic.AuthenticatedUser) bool { if user == nil || !isValidLogEntry(e) { return false } return acl.IsAllowedLogs(api.cfg, user, e.Binding.Action) } That check is used by: - GetLogs - GetActionLogs - ExecutionStatus - EventStream However, the synchronous execution endpoints directly return the created LogEntry without any logs ACL check: // service/internal/api/api.go func (api *oliveTinAPI) StartActionAndWait(ctx ctx.Context, req *connect.Request[apiv1.StartActionAndWaitRequest]) (*connect.Response[apiv1.StartActionAndWaitResponse], error) { ... internalLogEntry, ok := api.startActionAndWaitRun(binding, args, user) if !ok { return nil, connect.NewError(connect.CodeNotFound, fmt.Errorf("execution not found")) } return connect.NewResponse(&apiv1.StartActionAndWaitResponse{ LogEntry: api.internalLogEntryToPb(internalLogEntry, user), }), nil } func (api *oliveTinAPI) StartActionB

⚡ Watch CVE-2026-67439

Get an email if CVE-2026-67439 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.

Exploitation outlook

Advisory coverage (2)

External references

NVD record for CVE-2026-67439

CVE.org record

Embed the live status

CVE-2026-67439 live status badge — this badge updates automatically when the KEV or exploit status changes. How to embed it →

[![CVE-2026-67439 status](https://www.csirts.com/badge/CVE-2026-67439)](https://www.csirts.com/cve/CVE-2026-67439)