Severity by source
AV:L/AC:H/PR:L/UI:R/S:U/C:N/I:L/A:N
Local-only symlink attack requires shared-directory write access, victim-triggered scan, and pre-positioned symlink; no confidentiality or availability impact.
Primary rating from Vendor (BLSOPS).
CVSS VectorVendor: BLSOPS
Lifecycle Timeline
2DescriptionCVE.org
The github_workflows module constructs local directory paths from user-controlled repository names without validating for symlinks. A local attacker sharing the scan directory can plant a symlink at the predictable output path, causing workflow data to be written to an attacker-chosen location.
AnalysisAI
Symlink-following path traversal in BBOT's github_workflows module (all versions prior to commit 16d9c42b6) allows a local attacker sharing the scan output directory to redirect workflow artifact writes to an attacker-chosen filesystem location. By planting a symlink at the predictable output path (output_dir/owner/repo) before a scan runs, the attacker causes BBOT to write GitHub workflow data outside the intended directory, achieving a limited file-write primitive. No public exploit is identified at time of analysis, and CVSS rates this Low (2.2) reflecting the high-complexity, local-only, victim-triggered attack surface.
Technical ContextAI
BBOT (cpe:2.3:a:black_lantern_security:bbot:*:*:*:*:*:*:*:*) is an open-source OSINT and attack-surface reconnaissance framework. Its github_workflows module fetches GitHub Actions workflow runs and artifacts, writing outputs under a structured local path derived from the repository owner and name supplied to the scan. CWE-59 (Improper Link Resolution Before File Access, 'Link Following') describes the root cause: the module constructed local output paths from these user-controlled strings without traversing each path component to detect intermediate or terminal symlinks. The fix in commit 16d9c42b6 introduces _check_output_path(), which iterates each component relative to the base output_dir and aborts with a warning if any component resolves to a symlink, preventing traversal through attacker-planted links. The accompanying test class TestGithubWorkflowsSymlinkCheck validates detection of symlinks at both the owner and repo levels of the directory hierarchy.
RemediationAI
Update BBOT to a build that includes commit 16d9c42b6 (https://github.com/blacklanternsecurity/bbot/commit/16d9c42b6), which adds symlink validation via _check_output_path() to both artifact collection paths in github_workflows.py. A tagged release version incorporating this fix has not been independently confirmed from the available data - verify the installed commit hash or install directly from a post-fix HEAD of the main branch. If an immediate update is not feasible, restrict the BBOT scan output directory to the scanning account exclusively using chmod 700 on the output directory root, which eliminates any other local user's ability to pre-plant a symlink; this has no functional impact on BBOT operation but does prevent directory inspection by co-located users. Alternatively, disabling the github_workflows module entirely by removing it from the active modules list is a complete compensating control with no effect on other BBOT functionality.
Arbitrary file write in BBOT's postman_download module enables a remote attacker to write files outside the intended out
Path traversal in BBOT's unarchive internal module enables a malicious archive hosted by attacker-controlled infrastruct
Authentication token leakage in Black Lantern Security's bbot docker_pull module exposes Docker credentials to MITM atta
Symlink extraction bypass in BBOT's unarchive module allows an attacker to plant an attacker-controlled symlink into the
Path traversal in BBOT's github_workflows module allows a crafted CODE_REPOSITORY URL to write a downloaded artifact out
Same weakness CWE-59 – Improper Link Resolution Before File Access
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37816
GHSA-rvp7-w75q-9fv2