Versioned security assessment

Report ID: SA-C8087C39

7/8/2026, 6:03:20 AM

seo-geo security assessment v4

Skill Security Certification Report

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

Highest confirmed finding severity

Medium

1 confirmed security finding requires 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, JSON-LD templates, placeholder URLs, and words containing key. Real risks remain from outbound website audits, DataForSEO API communication, and environment-based API credentials. No prompt-injection evidence 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

10 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 (9)
Low
Python environment access
login = os.environ.get("DATAFORSEO_LOGIN")
The helper reads DataForSEO credentials from environment variables. This is intended, but it gives the skill access to user-provided API secrets when scripts run.
Low
Python environment access
password = os.environ.get("DATAFORSEO_PASSWORD")
The helper reads DataForSEO credentials from environment variables. This is intended, but it gives the skill access to user-provided API secrets when scripts run.
Low
Python HTTP libraries
import urllib.request
The DataForSEO wrapper makes outbound HTTPS requests to the documented API endpoint. This network access is expected for keyword research, but it is real third-party communication.
Low
Python HTTP libraries
req = urllib.request.Request(
The DataForSEO wrapper makes outbound HTTPS requests to the documented API endpoint. This network access is expected for keyword research, but it is real third-party communication.
Low
Python HTTP libraries
with urllib.request.urlopen(req, timeout=60) as resp:
The DataForSEO wrapper makes outbound HTTPS requests to the documented API endpoint. This network access is expected for keyword research, but it is real third-party communication.
Low
Hardcoded URL
API_BASE = "https://api.dataforseo.com/v3"
The DataForSEO wrapper makes outbound HTTPS requests to the documented API endpoint. This network access is expected for keyword research, but it is real third-party communication.
Low
Python HTTP libraries
import urllib.request
The SEO audit script uses urllib to fetch a target page and related crawl files. The behavior is intended, but it performs outbound requests from the runtime environment.
Low
Python HTTP libraries
req = urllib.request.Request(url, headers={"User-Agent": "SEO-Audit/1.0"})
The SEO audit script uses urllib to fetch a target page and related crawl files. The behavior is intended, but it performs outbound requests from the runtime environment.
Low
Python HTTP libraries
with urllib.request.urlopen(req, timeout=timeout) as resp:
The SEO audit script uses urllib to fetch a target page and related crawl files. The behavior is intended, but it performs outbound requests from the runtime environment.

Risk findings

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

Confirmed security concerns (1)

RISK-001 Medium
Unrestricted URL Fetching in SEO Audit Script
The audit script accepts a URL argument and fetches that page, then derives robots.txt and sitemap.xml URLs from the same host. Without host validation, running it in a privileged agent environment could reach internal services or attacker-controlled hosts.
The code directly uses user-provided URL input in urllib requests and derives additional URLs from that host. This is intentional SEO behavior, but the absence of host controls creates SSRF-style risk.

Remediation

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

  1. FIX-001
    Medium
    The SEO audit script can fetch arbitrary user-supplied URLs.
    Validate URL schemes and hosts, block localhost and private IP ranges, limit redirects, and cap response size before fetching.
  2. FIX-002
    Medium
    A schema template includes a curl pipe-to-shell install example as placeholder text.
    Replace the install text with neutral signup guidance or a safer installation example that does not pipe remote content into a shell.
  3. FIX-003
    Low
    DataForSEO scripts read API credentials from environment variables and send requests to a third-party API.
    Document the outbound API use clearly, require explicit user consent before running paid API scripts, and recommend least-privilege credentials.
  4. FIX-004
    Low
    Command examples can trigger network requests when copied or executed by an agent.
    Mark command examples as optional, require target-domain confirmation, and remind users to run them only for authorized sites.

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