Back to skill

Security audit

ASI-Proxy Phase Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is not malicious, but it needs review because it can silently send an ambient GitHub token during public refresh checks and the published bundle is missing a required paper index.

Review before installing. Do not run source refresh checks in an environment with GITHUB_TOKEN or GH_TOKEN set unless you intentionally want that token sent to GitHub, and expect the documented doctor/offline paper-search path to fail until the missing papers.jsonl file is restored. Use intervention and write modes only with an explicit workspace, rollback plan, and user authorization.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/refresh_sources.py:96
Finding

Ambient GitHub Credential Sent During Public Source Checks

Content
View full analysis
Any: headers = { "Accept": "application/json", "User-Agent": USER_AGENT, } if url.startswith("https://api.github.com/"): headers["X-GitHub-Api-Version"] = "2022-11-28" token = os.environ.get("GITHUB_TOKEN") or os.environ.get("GH_TOKEN") if token: headers["Authorization"] = f"Bearer {token}" request = urllib.request.Request( url, headers=headers, ) with urllib.request.urlopen(request, timeout=timeout) as response: ``` ### Technical Analysis The source-refresh operation queries public GitHub repository and commit endpoints that do not require authentication. Despite this, `fetch_json` automatically reads `GITHUB_TOKEN` or `GH_TOKEN` from the process environment and attaches the selected value as a bearer credential. This behavior exceeds the minimum privilege necessary for checking public metadata. The presence of an ambient environment variable is treated as authorization to transmit it, without an explicit command-line opt-in, confirmation, or token-scope check. It also conflicts with the operating boundary in `SKILL.md`, which prohibits credential access unless explicitly authorized. The destination URLs are fixed to GitHub HTTPS API endpoints, and the script does not print the token. Therefore, there is no evidence of intentional credential theft or transmission to an attacker-controlled endpoint. Nevertheless, unnecessarily introducing a credential into network requests expands the exposure surface. Redirect validation is performed only after `urlopen` returns, rather than enforcing the destination policy before each authenticated request in a redirect chain. ### Attack Path 1. A user or automation environment ...[truncated 1421 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (25)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

If the implemented behavior is primarily packet/schema validation while the description advertises broad readiness diagnosis and intervention support, operators may overtrust the skill's conclusions or assume substantive evaluation has occurred when only structural validation happened. That can lead to false assurance and unsafe downstream decisions. The risk here is integrity and misrepresentation rather than direct code execution.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

If the implemented behavior is primarily packet/schema validation while the description advertises broad readiness diagnosis and intervention support, operators may overtrust the skill's conclusions or assume substantive evaluation has occurred when only structural validation happened. That can lead to false assurance and unsafe downstream decisions. The risk here is integrity and misrepresentation rather than direct code execution.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the implemented behavior is primarily packet/schema validation while the description advertises broad readiness diagnosis and intervention support, operators may overtrust the skill's conclusions or assume substantive evaluation has occurred when only structural validation happened. That can lead to false assurance and unsafe downstream decisions. The risk here is integrity and misrepresentation rather than direct code execution.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

If the implemented behavior is primarily packet/schema validation while the description advertises broad readiness diagnosis and intervention support, operators may overtrust the skill's conclusions or assume substantive evaluation has occurred when only structural validation happened. That can lead to false assurance and unsafe downstream decisions. The risk here is integrity and misrepresentation rather than direct code execution.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
- Work autonomously only inside the workspace and authority placed in scope.
- Follow host approval rules for repository writes, network calls, messages,
  deployments, releases, and destructive actions.
- Do not push, publish, release, contact third parties, access credentials, or expand
  scope unless explicitly authorized.
- Do not infer a causal effect from a paper, repository, test pass, benchmark, model
  output, commit count, or simulation.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- Treat the fixed [catalog snapshot](references/catalog-snapshot.json), routing rules,

Self-Modification

High
Category
Rogue Agent
Confidence
90% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · references/legacy-routing-review.json (reported line 1)May include surrounding context.

json
{"counts":{"free_energy_disambiguation":28,"legacy_five_or_more_methods":58,"legacy_four_or_more_dimensions":117,"legacy_optimal_transport_label":78,"legacy_optimal_transport_without_specific_indicator":49},"method":"Every listed record is rerouted with versioned field/span evidence. Labels without retained evidence are removed.","review_sets":{"free_energy_disambiguation":[{"doi":"10.5281/zenodo.16417130","title":"A Category-Theoretic Framework for a Self-Organizing World Model in Artificial Intelligence"},{"doi":"10.5281/zenodo.16420862","title":"A Unified Framework for Self-Organizing Intelligence: A Synthesis of Computational Autopoiesis, Category Theory, and Active Inference"},{"doi":"10.5281/zenodo.16518769","title":"Collective Autonomous Adaptive Intelligence (CAAI): A Framework for AI as a Self-Organizing Network"},{"doi":"10.5281/zenodo.16663817","title":"A Formal Blueprint for Autonomous, Self-Improving Intelligence: From Philosophical Principles to Topos-Theoretic Ethics"},{"doi":"10.5281/zenodo.16728870","title":"A Framework for Autonomous Technological Evolution: A Unifying Approach via Variational Free Energy Minimization"},{"doi":"10.5281/zenodo.16734292","title":"A Computational Framework for Emergent Cognitive Architecture: Foundational Principles for Self-Improving AI Systems"},{"doi":"10.5281/zenodo.16734893","title":"Formal Specification of Self-Improving Intelligence: A Categorical and Geometric Blueprint for Collective Adaptive AI (CAAI) Systems"},{"doi":"10.5281/zenodo.16761052","title":"Formalizing the Poietic Self: A Rigorous Categorical and Geometric Framework for Self-Improving AI"},{"doi":"10.5281/zenodo.16777305","title":"Formal Specification of Self-Improving Intelligence: Integrated Revision for Creative Autonomy"},{"doi":"10.5281/zenodo.16783997","title":"A Formal Framework for Teleogenesis in Self-Organizing Intelligence: Integration of the Free Energy Principle, Category Theory, and a 5-Dimensional Branching Model"},{"doi":"10.5281/
...[truncated 27 chars]

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/repositories.json (reported line 3454)May include surrounding context.

json
"cryptography",
          "httpx",
          "jsonschema",
          "keyring",
          "networkx",
          "pydantic"
        ],

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill instructs the agent to perform actions implying file reads/writes, environment access, and possible network usage, but it does not declare an explicit tool or permission scope. That creates an authority ambiguity: a caller may believe this is a documentation-only analytical skill, while the skill operationally drives mutation and external access paths. In a security review, undocumented capability is dangerous because it weakens policy enforcement and user consent boundaries.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · evals/evals.json (reported line 179)May include surrounding context.

json
{
          "id": "correct-nesting",
          "critical": true,
          "text": "Install exactly at .agents/skills/asi-proxy-phase-skill/SKILL.md."
        },
        {
          "id": "checksum",

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · evals/receipts/v1.1.0/initial-run-3.json (reported line 85)May include surrounding context.

json
"state": "not_applicable"
      },
      "non_claims": [
        "Trigger-only decision; no verification result was asserted."
      ],
      "unknowns": [],
      "authority_violation": {

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · references/repository-map.md (reported line 19)May include surrounding context.

md
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · references/source-state.json (reported line 79)May include surrounding context.

json
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/refresh_sources.py (reported line 31)May include surrounding context.

python
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/refresh_sources.py (reported line 100)May include surrounding context.

python
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/refresh_sources.py (reported line 111)May include surrounding context.

python
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/refresh_sources.py (reported line 114)May include surrounding context.

python
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/refresh_sources.py (reported line 115)May include surrounding context.

python
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/refresh_sources.py (reported line 160)May include surrounding context.

python
PAPERS_PATH = REFERENCES_DIR / "papers.jsonl"
SOURCE_STATE_PATH = REFERENCES_DIR / "source-state.json"
GITHUB_REPOS_URL = (
    "https://api.github.com/users/kadubon/repos"
    "?type=public&sort=full_name&direction=asc&per_page=100&page={page}"
)
HF_CATALOG_URL = (

Scope Creep

Low
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

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

md
- Work autonomously only inside the workspace and authority placed in scope.
- Follow host approval rules for repository writes, network calls, messages,
  deployments, releases, and destructive actions.
- Do not push, publish, release, contact third parties, access credentials, or expand
  scope unless explicitly authorized.
- Do not infer a causal effect from a paper, repository, test pass, benchmark, model
  output, commit count, or simulation.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This JSON manifest-like file contains an objective and planned execution context, but it does not specify what exact user request, command, or context should activate the associated skill. For manifest files, missing specificity on trigger scope can lead to unintended invocation because there are no positive or negative trigger examples.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This JSON manifest repeatedly states "Declare a protocol-relative criterion before evaluation" as the criterion for multiple gates, but it does not define what concrete criterion should be declared or under what exact conditions evaluation should proceed. In a manifest file, this kind of underspecified activation/scope language can create ambiguity about when the skill is considered ready to run versus when it must remain halted.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This JSON manifest permits actions like "prepare this fail-closed packet within the rerun directory" and "run the bundled packet validator" but does not define a specific trigger, invocation condition, or exclusion criteria for when those actions should be activated. In a manifest file, this lack of specificity can create ambiguity about the skill's activation scope even though the allowed actions themselves are narrow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This JSON manifest repeatedly sets record language to "en", beginning at L0045, and the file provides no indication that language selection is optional or limited by a documented regional requirement. Under the natural-language policy rule, forcing a specific language without user opt-in can be a locale-policy concern even in configuration-style data.

Content

No source excerpt is available for this finding.