Announcing Beacon: Self-improving memory for coding agents
← All skills
Skill

performing-phishing-simulation-with-gophish

skill:mukul975/anthropic-cybersecurity-skills#performing-phishing-simulation-with-gophish

Deploy and run authorized phishing awareness campaigns with GoPhish, covering admin panel setup, SMTP sending profiles, email template and landing page creation, target user groups, and campaign reporting to measure click and credential-submission rates. Use when planning or executing a phishing simulation for employee security-awareness testing or measuring susceptibility to social engineering.

Verdict
Suspicious

Risky behavior the analysis could not rule out.

Analyzed Oct 27, 2026, 23:31 UTC at 54a7988

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

1
findings
high
highest severity
1
threat classes
4,532
files scanned
165/167
checks satisfied
0
package advisories

Why this verdict

  • suspicious: finding skill:skills/performing-phishing-simulation-with-gophish:skills/performing-phishing-simulation-with-gophish/scripts/process.py:40:CRED

Security findings 1

Credential access

highContextual risklow confidence

process.py's GoPhishClient defaults verify_ssl to False, so any instantiation that omits the flag sends the GoPhish API key and SMTP sending-profile credentials to the configured API URL over unverified TLS.

verify_ssl: bool = False
vector:code
Counter-argument considered

Against refutation holds: the shipped client genuinely defaults verify_ssl to False and wires the env-sourced GoPhish API key into an Authorization header on a session with certificate verification disabled; disabling TLS verification for credential-bearing requests is not among the accepted carve-outs, and the declared claims cover only SMTP profile fields, never disclosing the API client's unverified TLS. The strongest defense (self-signed GoPhish admin certs making it necessary) is not supported by any cited evidence, so the finding stands as a low-severity contextual risk.

Open questions 1

What the analysis could not settle from the code alone.

[file request skills/performing-phishing-simulation-with-gophish/process.py] Does process.py only pull campaign data via the GoPhish API and write analytics reports locally, or does it send data to external destinations, handle credentials beyond the GoPhish API key, or execute downloaded code?
Code execution
Refuted findings 2

Candidates the review stage examined and rejected, kept for transparency.

Code execution

criticalRefutedlow confidence

SKILL.md instructs the agent to download the GoPhish release binary via a mutable 'latest' GitHub releases URL and execute it (wget, unzip, chmod +x, ./gophish), a download-to-execute chain that is vendor-official and version-named but resolved through an unpinned 'latest' endpoint.

wget https://github.com/gophish/gophish/releases/latest/download/gophish-v0.12.1-linux-64bit.zip
Why it was refuted

The strongest case against: the wget resolves a version-named asset (gophish-v0.12.1-linux-64bit.zip) from the vendor's own official repository and sits in a fenced block under an overt deploy heading, matching the vendor-installer-in-fenced-install-docs and declared-core-capability (deploy GoPhish) carve-outs, so the unpinned-'latest' framing does not establish undeclared or third-party harm. The strongest case for it (mutable endpoint) is answered by the version-pinned asset name; harm and undeclared fail, so the finding dies despite a real instruction chain.

Supply chain

highRefutedlow confidence

Step 1 of the workflow instructs the agent to pull the unversioned gophish/gophish Docker image and download the GoPhish binary from the vendor's mutable releases/latest URL, fetching deployment code without a pinned version.

wget https://github.com/gophish/gophish/releases/latest/download/gophish-v0.12.1-linux-64bit.zip
Why it was refuted

Against: the docker pull targets the vendor's own official gophish/gophish image and the wget a version-named vendor release asset, both inside a fenced block at the overt 'Step 1: Deploy GoPhish' step of the declared deployment workflow (vendor-installer-in-fenced-install-docs and declared-core-capability carve-outs). For it: the image tag is unversioned, but an unversioned tag on the official vendor image is supply hygiene, not an undeclared harmful fetch, so harm and undeclared fail.

Coverage gaps 3

Parts of the artifact the static analysis could not fully examine.

ledger_finding_without_valid_finding run 1: behavior-chains.0 SRC:c288e033348dffcd
ledger_finding_without_valid_finding run 1: behavior-chains.0 SRC:dd690ccbf262f1c3
invalid_judge_finding behavior-chains.0