ANT-2026-XKHXVCFV · supabase/postgres
other low
Severity Claude low · Security research firm - · Maintainer -
Discovered by Claude Mythos Preview
Anthropic's analysis of this finding, sealed at approval.
ANT-2026-XKHXVCFV: Root-executed binaries fetched from S3 without integrity check
Several Ansible tasks (admin-mgr.yml:11, admin-api.yml:40-44, supabase-admin-agent.yml:51-68) use get_url to pull tarballs from https://supabase-public-artifacts-bucket.s3.amazonaws.com/ and install the contents as root-run binaries (admin-mgr is a NOPASSWD sudo target; supabase-admin-agent runs as root via systemd). None of these get_url calls set the checksum: parameter, so nothing verifies the downloaded artifact matches what the authors published. An attacker who can write to that S3 bucket, or MITM the image-build network with a trusted CA, can substitute a trojaned tarball. The result is root code execution on every AMI/qcow2 image built after the substitution.
Target
Project: supabase/postgres
Location: ansible/tasks/internal/admin-mgr.yml:11
Discovery: static analysis — not yet dynamically reproduced
Technical Details
The get_url tasks omit the checksum: parameter, so integrity of the fetched tarball depends solely on TLS transport and the security of the S3 bucket. Because the extracted binaries are installed into root-privileged execution paths (NOPASSWD sudoers entry for /usr/bin/admin-mgr and a root systemd unit for supabase-admin-agent), any tampering with the artifact translates directly into root on the target instance.
Reproduction
- Obtain write access to supabase-public-artifacts-bucket (or establish a TLS-trusted MITM on the build network).
- Replace a referenced tarball (e.g. supabase-admin-api__linux_arm64.tar.gz) with a trojaned build.
- Wait for the next AMI/qcow2 image build; Ansible get_url fetches the tarball without checksum verification.
- Trojaned binary is installed at /opt/supabase-admin-api / /usr/bin/admin-mgr and executed as root via systemd and NOPASSWD sudoers.
[No reproducer or sanitizer output attached — request from security-cvd@anthropic.com if needed.]
Suggested Fix
Pin every downloaded executable by cryptographic hash (add checksum: to each get_url task) or verify a detached signature at install time, independent of transport security.
Acknowledgement
This vulnerability was discovered by Claude, Anthropic's AI assistant, and triaged by the Anthropic security team in collaboration with Anthropic Research. Please direct questions to security-cvd@anthropic.com and reference ANT-2026-XKHXVCFV.
Reference: ANT-2026-XKHXVCFV
Anthropic CVD Policy: https://www.anthropic.com/coordinated-vulnerability-disclosure
Dates from discovery through public reveal.
- 2026-05-14 Reported to tracker
- 2026-05-14 Maintainer acknowledged
- 2026-05-15 Sent to maintainer
- 2026-07-28 Patch released
- 2026-08-18 Publicly revealed
SHA-3-512 hash:
1b5a9a965ae05bb37cfce6d4b4b02c96f9fc8d5224f919cb1295890545119c82fa29b858b54e2114cfeb8cd8bd88b85f6fe03325b6edf61cbf01ae6b3b91197c
Committed 2026-05-17 17:56 PT
Revealed 2026-08-18 07:12 PT
Verify (download preimage.json)
Show preimage JSON
{
"ant_id": "ANT-2026-XKHXVCFV",
"bug_class": "other",
"claude_severity": "low",
"commit_sha": null,
"created_at": "2026-05-14T22:03:28+00:00",
"description": "Several Ansible tasks (admin-mgr.yml:11, admin-api.yml:40-44, supabase-admin-agent.yml:51-68) use get_url to pull tarballs from https://supabase-public-artifacts-bucket.s3.amazonaws.com/ and install the contents as root-run binaries (admin-mgr is a NOPASSWD sudo target; supabase-admin-agent runs as root via systemd). None of these get_url calls set the checksum: parameter, so nothing verifies the downloaded artifact matches what the authors published. An attacker who can write to that S3 bucket, or MITM the image-build network with a trusted CA, can substitute a trojaned tarball. The result is root code execution on every AMI/qcow2 image built after the substitution.",
"discovered_at": "2026-05-10T00:00:00+00:00",
"location": "ansible/tasks/internal/admin-mgr.yml:11",
"poc_sha256": null,
"preimage_version": 1,
"project": "supabase/postgres",
"reproduction": [
"1. Obtain write access to supabase-public-artifacts-bucket (or establish a TLS-trusted MITM on the build network).",
"2. Replace a referenced tarball (e.g. supabase-admin-api_<ver>_linux_arm64.tar.gz) with a trojaned build.",
"3. Wait for the next AMI/qcow2 image build; Ansible get_url fetches the tarball without checksum verification.",
"4. Trojaned binary is installed at /opt/supabase-admin-api / /usr/bin/admin-mgr and executed as root via systemd and NOPASSWD sudoers."
],
"technical_details": "The get_url tasks omit the `checksum:` parameter, so integrity of the fetched tarball depends solely on TLS transport and the security of the S3 bucket. Because the extracted binaries are installed into root-privileged execution paths (NOPASSWD sudoers entry for /usr/bin/admin-mgr and a root systemd unit for supabase-admin-agent), any tampering with the artifact translates directly into root on the target instance.",
"title": "Root-executed binaries fetched from S3 without integrity check",
"vendor_severity": null
}