Fedora has published advisory FEDORA-2026-ad8394dc92, pushing doctl 1.169.0 to Fedora 44 repositories. doctl is DigitalOcean's official command-line interface — the tool engineers use to manage droplets, Kubernetes clusters, volumes, DNS, and API tokens from the shell. On the surface this is a routine version bump. In practice, every cloud CLI update is a supply-chain and credential-exposure event that defenders should treat with the same discipline as a critical CVE, because these binaries hold the keys to your cloud estate.
There is no CVE attached to this advisory — this is a maintenance and feature update, not an emergency patch. That distinction matters. The defensive value here is threefold: (1) staying current on a rapidly evolving Go-based binary that bundles security fixes from upstream dependencies, (2) closing the gap between developer workstations running ad-hoc doctl installs and your managed package baseline, and (3) using the update cycle as a forcing function to audit where cloud CLI tooling executes in your environment — because doctl in the wrong hands is a cloud takeover toolkit.
Technical Analysis
What changed
The advisory updates the Fedora 44 doctl package to upstream release 1.169.0. As with most Fedora Go-package updates, the rebuild typically pulls in refreshed upstream dependencies (Go module chain, HTTP/TLS libraries, and DigitalOcean API client bindings). While no specific security flaw is named in this advisory, cloud CLI binaries accumulate transitive dependency fixes continuously, and running months-old CLI builds against production cloud APIs is an avoidable exposure.
Why cloud CLIs are a high-value target in 2026
From a defender's perspective, the risk model around doctl is more important than the changelog:
- Credential locality. doctl authenticates via API tokens stored in
~/.config/doctl/config.yaml(or passed viaDIGITALOCEAN_ACCESS_TOKEN). A single compromised developer workstation yields full API control of the account — droplet creation/destruction, snapshot theft, firewall rule changes, and Kubernetes admin access. - Living-off-the-cloud. Threat actors increasingly bring or abuse legitimate cloud CLIs rather than custom malware. A binary signed by a known vendor executing
account get,compute droplet list, orauth initlooks benign in most telemetry. - Infrastructure-as-code drift. Attackers with doctl access can spin up GPU droplets for cryptomining or staging infrastructure in minutes. Droplet creation from unusual contexts (servers, CI runners, non-standard user accounts) is a high-fidelity signal.
- Out-of-band installs. Developers frequently install doctl via
snap, GitHub release binaries, orgo install, bypassing DNF entirely. Those copies do not receive this update. Your package manager baseline will lie to you about coverage unless you inventory all copies.
Affected scope
- Product: doctl (DigitalOcean CLI)
- Platform: Fedora 44
- Fixed/current version: 1.169.0 (advisory FEDORA-2026-ad8394dc92)
- Exploitation status: No CVE, no known active exploitation — routine update. Treat as preventive hardening plus an audit trigger.
- Reference: https://linuxsecurity.com/advisories/fedora/fedora-44-doctl-2026-ad8394dc92
Detection & Response
The detections below target the realistic abuse scenario: unauthorized or anomalous doctl execution, token file access, and droplet manipulation. Tune allowlists for your known DigitalOcean users before deploying — in shops that legitimately use DigitalOcean, scope these rules to servers and non-developer endpoints.
SIGMA Rules
---
title: DigitalOcean doctl Execution on Non-Developer Linux Host
description: Detects execution of the DigitalOcean CLI (doctl) on Linux systems. Cloud CLIs on servers, CI runners, or unexpected endpoints may indicate attacker-controlled cloud management, cryptomining droplet provisioning, or data staging.
references:
- https://linuxsecurity.com/advisories/fedora/fedora-44-doctl-2026-ad8394dc92
- https://attack.mitre.org/techniques/T1580/
author: Security Arsenal
date: 2026/04/06
status: experimental
tags:
- attack.discovery
- attack.t1580
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith:
- '/doctl'
- '/bin/doctl'
- '/snap/bin/doctl'
filter_dev_workstations:
Hostname|contains:
- 'dev-'
- 'wks-'
condition: selection and not filter_dev_workstations
falsepositives:
- SRE and platform engineering workstations legitimately managing DigitalOcean resources
- CI/CD pipelines deploying to DigitalOcean - scope rule to non-CI hosts if needed
level: medium
---
title: DigitalOcean API Token Config File Access
description: Detects read access to the doctl configuration file containing DigitalOcean API tokens. Access by non-doctl processes (shells, scripting interpreters, archive tools) may indicate credential theft.
references:
- https://linuxsecurity.com/advisories/fedora/fedora-44-doctl-2026-ad8394dc92
- https://attack.mitre.org/techniques/T1552/001/
author: Security Arsenal
date: 2026/04/06
status: experimental
tags:
- attack.credential_access
- attack.t1552.001
logsource:
category: file_event
product: linux
detection:
selection:
TargetFilename|contains:
- '/.config/doctl/config.yaml'
filter_legit:
Image|endswith:
- '/doctl'
- '/dnf'
- '/rpm'
condition: selection and not filter_legit
falsepositives:
- Backup agents and EDR scanners reading user home directories - allowlist known agent binaries
- Administrators inspecting configs during troubleshooting
level: high
---
title: doctl Destructive or Provisioning Command Execution
description: Detects doctl subcommands associated with resource creation, deletion, or authentication changes - behaviors consistent with cloud resource hijacking, cryptomining provisioning, or destructive attacks.
references:
- https://linuxsecurity.com/advisories/fedora/fedora-44-doctl-2026-ad8394dc92
- https://attack.mitre.org/techniques/T1496/
author: Security Arsenal
date: 2026/04/06
status: experimental
tags:
- attack.impact
- attack.t1496
- attack.t1580
logsource:
category: process_creation
product: linux
detection:
selection_img:
Image|endswith: '/doctl'
selection_cmd:
CommandLine|contains:
- 'droplet create'
- 'droplet delete'
- 'auth init'
- 'auth switch'
- 'compute snapshot'
- 'kubernetes cluster delete'
- 'firewall update'
condition: all of selection_*
falsepositives:
- Routine infrastructure management by platform teams - baseline expected operators and droplet patterns
level: high
KQL (Microsoft Sentinel / Defender)
This query hunts doctl execution and token-file access across Linux hosts forwarding auditd/syslog telemetry into Sentinel, plus any Defender-managed endpoints:
// Hunt: DigitalOcean doctl execution and token access across Linux estate
let TimeWindow = 7d;
let DoctlHosts = (
Syslog
| where TimeGenerated > ago(TimeWindow)
| where ProcessName =~ "doctl" or SyslogMessage has "doctl"
| extend CmdLine = tostring(SyslogMessage)
| where CmdLine has_any ("droplet create", "droplet delete", "auth init", "auth switch", "snapshot", "firewall update", "kubernetes cluster")
| project TimeGenerated, Computer, HostIP, ProcessName, CmdLine, Source = "Syslog"
);
let TokenAccess = (
Syslog
| where TimeGenerated > ago(TimeWindow)
| where SyslogMessage has "/.config/doctl/config.yaml"
| where SyslogMessage !has "doctl"
| project TimeGenerated, Computer, HostIP, ProcessName, CmdLine = tostring(SyslogMessage), Source = "TokenFileAccess"
);
union DoctlHosts, TokenAccess
| summarize FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated), EventCount = count(), Commands = make_set(CmdLine, 10) by Computer, ProcessName, Source
| order by LastSeen desc
Velociraptor VQL
Use this artifact to sweep your Linux fleet for every doctl binary on disk (including out-of-band installs that DNF does not track) and any currently running instances:
-- Hunt: Inventory all doctl binaries and running doctl processes across endpoints
-- Surfaces snap/GitHub/go-install copies that bypass DNF package tracking
SELECT * FROM foreach(
row={
SELECT Pid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Name =~ 'doctl' OR CommandLine =~ 'doctl'
},
query={
SELECT 'RUNNING_PROCESS' AS FindingType,
Pid AS PID, Name, CommandLine, Exe AS Path, Username, CreateTime AS Timestamp
FROM scope()
})
UNION ALL
SELECT 'BINARY_ON_DISK' AS FindingType,
NULL AS PID, NULL AS Name, NULL AS CommandLine,
FullPath AS Path,
NULL AS Username,
Mtime AS Timestamp
FROM glob(globs=[
'/usr/bin/doctl',
'/usr/local/bin/doctl',
'/snap/bin/doctl',
'/home/*/go/bin/doctl',
'/home/*/.local/bin/doctl',
'/opt/**/doctl',
'/root/go/bin/doctl'
])
Remediation
1. Apply the update via DNF
Run the following on all Fedora 44 systems. The script updates doctl, verifies the installed version, and inventories non-package-managed copies:
#!/bin/bash
# Fedora 44 doctl 1.169.0 update + fleet verification (FEDORA-2026-ad8394dc92)
set -euo pipefail
echo "[*] Applying Fedora advisory FEDORA-2026-ad8394dc92 (doctl 1.169.0)"
sudo dnf upgrade --refresh -y doctl
echo "[*] Verifying installed version"
INSTALLED=$(rpm -q doctl --queryformat '%{VERSION}')
echo " Installed doctl version: ${INSTALLED}"
if [[ "${INSTALLED}" != "1.169.0" ]]; then
echo "[!] WARNING: expected 1.169.0, got ${INSTALLED} - check repo mirrors"
exit 1
fi
echo "[*] Checking for out-of-band doctl installs not managed by DNF"
for p in /usr/local/bin/doctl /snap/bin/doctl /root/go/bin/doctl /home/*/go/bin/doctl /home/*/.local/bin/doctl; do
[ -e "$p" ] && echo "[!] Unmanaged copy found: $p ($($p version 2>/dev/null | head -1))"
done
echo "[*] Auditing doctl token file permissions"
for cfg in /home/*/.config/doctl/config.yaml /root/.config/doctl/config.yaml; do
if [ -e "$cfg" ]; then
PERMS=$(stat -c '%a' "$cfg")
echo " $cfg -> permissions ${PERMS}"
[ "$PERMS" != "600" ] && chmod 600 "$cfg" && echo " -> tightened to 600"
fi
done
echo "[+] Done. Review unmanaged copies and rotate tokens on any host with unexpected doctl activity."
2. Handle non-DNF installs
Any doctl binary installed via GitHub releases, snap, or go install will not receive this update. Either remove them and standardize on the DNF package, or update them manually to 1.169.0 from the official DigitalOcean release channel. Unmanaged CLI copies are the most common coverage gap we find during cloud assessments.
3. Rotate and scope tokens where warranted
If detection queries surface doctl execution or token-file access outside expected operator accounts:
- Revoke and rotate the affected API tokens in the DigitalOcean control panel immediately.
- Issue tokens with least-privilege scopes (read-only where possible, per-project tokens for CI).
- Review the DigitalOcean audit log for droplet creation, snapshot downloads, firewall changes, and new SSH key uploads during the exposure window.
- Check for unexpected droplets (cryptomining staging) and snapshot exfiltration.
4. Institutionalize the baseline
- Add
doctl >= 1.169.0to your configuration management (Ansible/Puppet) desired-state for Fedora 44. - Deploy the Sigma rules above scoped to servers and CI runners; alert on any doctl execution outside your platform-engineering group.
- Add cloud CLI binaries (doctl, aws, az, gcloud, kubectl) to your EDR application inventory — their presence on a host that has no cloud-management role is itself a finding.
Bottom Line
FEDORA-2026-ad8394dc92 carries no CVE and no emergency. But cloud CLIs are the modern skeleton key: one binary, one token file, total account control. Use this update cycle to close your version gap, hunt for unmanaged copies, and verify that doctl only executes where your operators actually work. The next time a cloud CLI shows up in your IR timeline, you'll want this groundwork already done.
Related Resources
Security Arsenal Managed SOC Services AlertMonitor Platform Book a SOC Assessment soc-mdr Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.