Back to skill

Security audit

CORS Tester

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward CORS testing skill with user-directed network probes and config generation, and I found no hidden persistence, credential access, or deceptive behavior.

Install only if you need a CLI-style CORS tester. Expect it to contact the URLs you provide, including multiple audit probes, and avoid running it against third-party systems without permission. Treat generated server configuration as a draft: review it, validate it with the target framework's config checker, and do not feed attacker-controlled values into the generator.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/cors_tester.py:225
Finding

Unsafe Input Interpolation in Generated Server Configurations

Content
View full analysis
Header set Access-Control-Allow-Origin "{o}" Header set Access-Control-Allow-Methods "{m}" Header set Access-Control-Allow-Headers "{h}" {"Header set Access-Control-Allow-Credentials true" if c else ""} Header set Access-Control-Max-Age "{ma}" """), ``` ```python "rails": lambda o, m, h, c, ma: dedent(f"""\ # config/initializers/cors.rb Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins {', '.join(f"'{x.strip()}'" for x in o.split(','))} resource '*', headers: :any, methods: [{', '.join(f':{x.strip().lower()}' for x in m.split(','))}], credentials: {'true' if c else 'false'}, max_age: {ma} end end"""), } def cmd_config(args): framework = args.framework if framework not in ...[truncated 3037 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/cors_tester.py:25
Finding

Case-Sensitive CORS Header Parsing Can Produce Audit False Negatives

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill clearly describes and demonstrates live network access to arbitrary URLs, but it declares no explicit tool scope or permissions. In an agent environment, this creates a capability mismatch that can enable unintended outbound requests and weakens policy enforcement, review, and user awareness about network use.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 14)May include surrounding context.

bash
# Test CORS headers on a URL
python3 scripts/cors_tester.py test https://api.example.com/data --origin https://myapp.com

# Test preflight (OPTIONS) request
python3 scripts/cors_tester.py preflight https://api.example.com/data --origin https://myapp.com --method POST --header "Content-Type"

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 17)May include surrounding context.

bash
# Test CORS headers on a URL
python3 scripts/cors_tester.py test https://api.example.com/data --origin https://myapp.com

# Test preflight (OPTIONS) request
python3 scripts/cors_tester.py preflight https://api.example.com/data --origin https://myapp.com --method POST --header "Content-Type"

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 23)May include surrounding context.

bash
# Test CORS headers on a URL
python3 scripts/cors_tester.py test https://api.example.com/data --origin https://myapp.com

# Test preflight (OPTIONS) request
python3 scripts/cors_tester.py preflight https://api.example.com/data --origin https://myapp.com --method POST --header "Content-Type"

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

This code performs outbound HTTP requests to user-specified targets, sending request metadata such as the supplied Origin header. While the script's purpose is testing CORS, the code itself does not include an explicit warning, confirmation, or disclosure that it will contact remote servers and transmit these values.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The audit command automatically sends several test requests, including origins like 'https://evil.com' and a preflight OPTIONS probe, to the target URL. Although this behavior aligns with the audit feature, there is no clear user warning in code comments or CLI help that the tool will actively probe the remote service in this way.

Content

No source excerpt is available for this finding.