Versioned security assessment

Report ID: SA-FB844B23

7/5/2026, 8:44:10 PM

seo-geo security assessment v3

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
seo-geo
Version
v3
Maintainer
resciencelab
Coverage
18 Files scanned · 3,098 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

Critical

2 confirmed security findings require attention.

Installation context

Historical evidence

This report may not describe the currently installable artifact. Open the current Skill page for install guidance.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static findings are false positives from markdown examples, schema placeholders, and words like keyword. Confirmed issues are limited to intended network and API access, environment credential reads, unrestricted URL fetching, and one dangerous curl-to-shell example in documentation. No prompt injection attempt was found.

Report position

Historical report

Open audit history before using this report to install.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

18 Files scanned · 3,098 Lines analyzed

20 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Binding unavailable

  2. Artifact

    Identity incomplete

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 90 evidence locations

Filesystem access

May read or write local files.

Observed in 1 evidence location

Env variables

May read values from the process environment.

Observed in 3 evidence locations

External commands

May invoke commands or programs outside the Skill.

Observed in 22 evidence locations

Capability review items (18)
Medium
Python HTTP libraries
import urllib.request
The module posts data to api.dataforseo.com and attaches Basic authentication built from environment credentials. This is intended API use, but it is real external network and credential transmission.
Medium
Python HTTP libraries
req = urllib.request.Request(
The module posts data to api.dataforseo.com and attaches Basic authentication built from environment credentials. This is intended API use, but it is real external network and credential transmission.
Medium
Python HTTP libraries
with urllib.request.urlopen(req, timeout=60) as resp:
The module posts data to api.dataforseo.com and attaches Basic authentication built from environment credentials. This is intended API use, but it is real external network and credential transmission.
Medium
Hardcoded URL
API_BASE = "https://api.dataforseo.com/v3"
The module posts data to api.dataforseo.com and attaches Basic authentication built from environment credentials. This is intended API use, but it is real external network and credential transmission.
Medium
Python HTTP libraries
import urllib.request
The SEO audit script fetches a user-provided URL plus robots.txt and sitemap.xml. This is intended behavior, but it can reach arbitrary hosts from the agent environment.
Medium
Python HTTP libraries
req = urllib.request.Request(url, headers={"User-Agent": "SEO-Audit/1.0"})
The SEO audit script fetches a user-provided URL plus robots.txt and sitemap.xml. This is intended behavior, but it can reach arbitrary hosts from the agent environment.
Medium
Python HTTP libraries
with urllib.request.urlopen(req, timeout=timeout) as resp:
The SEO audit script fetches a user-provided URL plus robots.txt and sitemap.xml. This is intended behavior, but it can reach arbitrary hosts from the agent environment.
Medium
Hardcoded URL
url = f"https://{url}"
The SEO audit script fetches a user-provided URL plus robots.txt and sitemap.xml. This is intended behavior, but it can reach arbitrary hosts from the agent environment.
Low
Python environment access
login = os.environ.get("DATAFORSEO_LOGIN")
The script reads DATAFORSEO credentials from environment variables. This is legitimate configuration access but still handles secrets.
Low
Python environment access
password = os.environ.get("DATAFORSEO_PASSWORD")
The script reads DATAFORSEO credentials from environment variables. This is legitimate configuration access but still handles secrets.
Low
Hardcoded URL
python3 scripts/seo_audit.py "https://example.com"
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
curl -sL "https://example.com" | grep -E "<title>|<meta name=\"description\"|<meta property=\"og:|ap
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
curl -s "https://example.com/robots.txt"
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
curl -s "https://example.com/sitemap.xml" | head -50
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
open "https://search.google.com/test/rich-results?url={encoded_url}"
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
open "https://validator.schema.org/?url={encoded_url}"
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
open "https://www.google.com/search?q=site:{domain}"
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.
Low
Hardcoded URL
open "https://www.bing.com/search?q=site:{domain}"
The primary skill instructions direct agents to run curl, python, or browser commands that contact external URLs. This is expected for SEO auditing but requires user consent.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (2)

RISK-001 Critical
Pipe to shell pattern
"text": "[Installation/signup instructions. Run: curl -fsSL example.com/install.sh | bash]"
The FAQ schema template includes advice to run a remote install script through bash. Even as sample content, it promotes opaque remote code execution.
RISK-002 Medium
Unrestricted URL Fetching Enables Internal Network Probing
The SEO audit script accepts a URL argument, prepends https when no scheme exists, and fetches the page, robots.txt, and sitemap.xml without host restrictions. A malicious or mistaken target could make the agent contact internal or sensitive network addresses.
The code directly fetches user-controlled URLs and derived paths with urllib and no allowlist or private network guard. The behavior is useful for SEO, but it creates a clear SSRF-style risk in agent environments.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    Critical
    Pipe-to-shell installation advice in schema template
    Remove the curl pipe to bash example from references/schema-templates.md line 53. Use safe, inspectable installation wording instead.
  2. FIX-002
    Medium
    Unrestricted URL fetching in seo_audit.py
    Validate schemes and hostnames, block private IP ranges, and ask for confirmation before fetching non-public targets.
  3. FIX-003
    Low
    External API credentials handled by helper scripts
    Document that DataForSEO credentials are sent only to api.dataforseo.com, and avoid printing secrets or full request URLs.
  4. FIX-004
    Low
    Network commands in primary workflow
    Label curl, python, and browser commands as optional external requests that require user confirmation before execution.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable