Back to skill

Security audit

Infoseek

Security checks for vulnerabilities and agentic risk

Overview

This research skill needs review because its authentication and browsing features can expose local files and API keys.

Prefer local stdio operation in an isolated environment with only necessary keys. Before using HTTP hosting or credential-assisted browsing, require fixes for built-in administrator access, unrestricted file access, and credential origin matching. Load only trusted NumPy datasets, verify provider destinations, and disable tracing for private inputs. Scanner coverage was partial: executable gaps and targeted document/test gaps were independently checked; live browser and external-service integrations were not exercised.

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

Error
Location
scripts/infoseek_auth.py
Finding

Built-in OAuth administrator credentials bypass configured HTTP bearer authentication

Content
View full analysis

Impact

Unauthorized tool invocation includes reading server-readable text files through fetch_content_async with a file:// URL. This can disclose application configuration and credentials. Other exposed tools can write archives or modify the stored key registry.

T09 · Insecure Skill Coding Practices

Error
Location
scripts/mcp_tools_search.py
Finding

Credential-assisted browsing leaks bearer credentials across origin boundaries

Content
View full analysis

Impact

A page rendered with a legitimate bearer credential can cause that credential to accompany cross-origin resource requests. The hostname-prefix fallback additionally allows an attacker-controlled openai-prefixed hostname to select OPENAI_API_KEY when available, sending that unrelated API key directly to the attacker-controlled site. Disclosure occurs in outbound request headers even if rendering or content extraction later fails.

Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (270)

Tainted flow: 'req' from os.environ.get (line 326, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · core/llm_router.py (reported line 334)May include surrounding context.

python
"Authorization": f"Bearer {api_key}",
                },
            )
            with urllib.request.urlopen(req, timeout=60) as resp:
                data = json_mod.loads(resp.read().decode('utf-8'))

            content = data['choices'][0]['message']['content']

Tainted flow: 'req' from os.environ.get (line 408, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · core/llm_router.py (reported line 417)May include surrounding context.

python
"anthropic-version": "2023-06-01",
                },
            )
            with urllib.request.urlopen(req, timeout=60) as resp:
                data = json_mod.loads(resp.read().decode('utf-8'))
            content = data['content'][0]['text']
            usage = data.get('usage', {})

Tainted flow: 'req' from os.environ.get (line 84, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/infoseek_pipeline.py (reported line 85)May include surrounding context.

python
"""标准库 GET(无第三方依赖)。v1.0.1 PATCH: 默认超时 10s→3s 加速降级链。"""
    import urllib.request
    req = urllib.request.Request(url, headers={'User-Agent': _UA})
    with urllib.request.urlopen(req, timeout=timeout) as resp:
        return resp.read()

Tainted flow: 'req' from os.environ.get (line 182, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/infoseek_pipeline.py (reported line 186)May include surrounding context.

python
"https://api.exa.ai/search", data=payload,
        headers={'Content-Type': 'application/json',
                 'x-api-key': key}, method='POST')
    with urllib.request.urlopen(req, timeout=15) as resp:
        data = json.loads(resp.read().decode('utf-8', errors='ignore'))
    out = []
    for r in (data.get('results') or []):

Tainted flow: 'req' from os.environ.get (line 210, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/infoseek_pipeline.py (reported line 213)May include surrounding context.

python
req = urllib.request.Request(
        "https://api.tavily.com/search", data=payload,
        headers={'Content-Type': 'application/json'}, method='POST')
    with urllib.request.urlopen(req, timeout=15) as resp:
        data = json.loads(resp.read().decode('utf-8', errors='ignore'))
    out = []
    for r in (data.get('results') or []):

Tainted flow: 'req' from os.environ.get (line 269, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/infoseek_pipeline.py (reported line 273)May include surrounding context.

python
"https://open.bigmodel.cn/api/paas/v4/web_search", data=payload,
        headers={'Content-Type': 'application/json',
                 'Authorization': f'Bearer {key}'}, method='POST')
    with urllib.request.urlopen(req, timeout=15) as resp:
        data = json.loads(resp.read().decode('utf-8', errors='ignore'))
    out = []
    for r in (data.get('search_result') or []):

Tainted flow: 'req' from os.environ.get (line 300, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/infoseek_pipeline.py (reported line 304)May include surrounding context.

python
"https://api.metaso.cn/v1/search", data=payload,
        headers={'Content-Type': 'application/json',
                 'Authorization': f'Bearer {key}'}, method='POST')
    with urllib.request.urlopen(req, timeout=15) as resp:
        data = json.loads(resp.read().decode('utf-8', errors='ignore'))
    out = []
    for r in (data.get('results') or []):

Tainted flow: 'req' from os.environ (line 109, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/qveris_client.py (reported line 121)May include surrounding context.

python
method='POST',
    )
    try:
        with urllib.request.urlopen(req, timeout=timeout) as resp:
            raw = resp.read().decode('utf-8', errors='ignore') or '{}'
            return json.loads(raw)
    except urllib.error.HTTPError as e:

Tainted flow: 'req' from os.environ.get (line 321, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/summarize_adapter.py (reported line 371)May include surrounding context.

python
}
            )

        with urllib.request.urlopen(req, timeout=30) as resp:
            result = json.loads(resp.read().decode('utf-8'))

        # 解析响应

Tainted flow: '_CALL_TIMEOUT' from os.environ.get (line 37, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/workbuddy_channel.py (reported line 184)May include surrounding context.

python
req = urllib.request.Request(
            f'{self._url}/jsonrpc', data=body,
            headers={'Content-Type': 'application/json'})
        with urllib.request.urlopen(req, timeout=_CALL_TIMEOUT) as resp:
            msg = json.loads(resp.read().decode())
        if 'error' in msg:
            raise RuntimeError(f'HTTP {method} 错误: {msg["error"]}')

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied module specifically serves a fake-detection pipeline using follower counts, engagement rates, follower quality, template similarity, activity profiles, time series, and account relationship graphs. These are not implementations of the declared source discovery, content fetching, semantic analysis, or report-generation workflow. Although data ingestion and cleaning can support research generally, this module's explicit interface and demonstration target a distinct account-authenticity analysis capability. This assessment is limited to the supplied code chunk and does not establish what the rest of the skill implements.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied module implements a specialized account-coordination detector, rather than the declared content acquisition and research workflow. Its spike synchronization and suspicious-group classification are materially different from semantic contradiction detection, entity recognition, or cross-source research synthesis. Although such analysis could potentially inform source credibility, neither the description nor this code establishes that supporting role. The chunk performs in-memory analysis only; no external resource access, unrelated triggers, or permission violations are evident.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The supplied module's primary purpose is account authenticity classification, rather than content acquisition or research orchestration. compute_l1_features derives account-behavior and graph features, and apply_l1_rules combines suspicious indicators into n_flags and a binary pred output. Although authenticity signals could support source credibility assessment, this code implements a distinct account-detection capability not disclosed in the description, rather than the stated four-dimensional source-scoring workflow. The chunk shows no network access, credential use, external writes, or report generation; the mismatch concerns its substantive analytical purpose, not unauthorized resource access.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Consent-registry checks and trusted-source inspection are plausible supporting features of the declared workflow and are not independently mismatches. However, this chunk primarily implements security and compliance auditing, including filesystem credential discovery and key-manager inspection that the description does not disclose. It does not implement the described research pipeline. Its visible network-boundary checks are static; no direct network requests or credential exfiltration are shown. Despite the script's read-only documentation, optional report output explicitly creates directories and writes files. This assessment is limited to the supplied chunk, not the rest of the skill.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

Credibility scoring could reasonably support the declared research workflow, so the absence of collection or report-generation code in this individual module is not itself a mismatch. However, this module implements a substantial account-forensics capability: it profiles individual accounts, labels them as likely real or bots, and identifies coordinated groups. Those capabilities go materially beyond the description's source-credibility scoring and are not explicitly disclosed. The supplied code does not show unrelated network access, exfiltration, or malicious side effects; the mismatch concerns an undeclared analytical capability.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

Tracing itself is a supporting implementation detail, and this chunk need not implement the entire declared research workflow. However, exporting tool arguments and exception details introduces an undeclared data-disclosure capability beyond internal instrumentation. Arguments are serialized and truncated to 2,000 characters, not sanitized. Network export requires explicit exporter configuration and available dependencies; the code does not demonstrate unconditional remote transmission or a hardcoded external recipient.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
86% confidence
Finding

The chunk primarily provides a QCM integration rather than the declared information-collection pipeline. Research delegation could support the stated purpose, and subprocess execution and OAuth are ordinary implementation details. However, the additional QCM validation and case-gap-analysis capabilities, and the external service receiving their inputs, are not represented in the description. The mismatch concerns those concrete capabilities, not the absence of the rest of the workflow from this single file. There is no evidence here of a hard-coded exfiltration destination or malicious behavior.

Content

No source excerpt is available for this finding.

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
> 标志位有效)。守护见 `tests/test_three_chain_v183.py`(63 check)。

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
详见 `references/ROADMAP.md`(当前基线 · 待办 · 前景方向);v1.0.0→v2.0.0 历次实施细节见 `references/ROADMAP_archive_20260917.md`。

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `references/ROADMAP.md` | 当前基线 · 待办 · 前景方向(纯净版) |

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
详见 `references/ROADMAP.md`(当前基线 · 待办 · 前景方向);v1.0.0→v2.0.0 历次实施细节见 `references/ROADMAP_archive_20260917.md`。

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `references/ROADMAP_archive_20260917.md` | v1.0.0→v2.0.0 历史实施记录归档 |

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 · core/dep_registry.py (reported line 124)May include surrounding context.

python
'install_hint': 'pip install opentelemetry-api opentelemetry-sdk'},
    {'name': 'cryptography', 'kind': 'python_pkg', 'import': 'cryptography',
     'required': False, 'install_hint': 'pip install cryptography'},
    {'name': 'keyring', 'kind': 'python_pkg', 'import': 'keyring',
     'required': False, 'install_hint': 'pip install keyring'},
    {'name': 'schedule', 'kind': 'python_pkg', 'import': 'schedule',
     'required': False, 'install_hint': 'pip install schedule'},

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 · core/dep_registry.py (reported line 124)May include surrounding context.

python
'install_hint': 'pip install opentelemetry-api opentelemetry-sdk'},
    {'name': 'cryptography', 'kind': 'python_pkg', 'import': 'cryptography',
     'required': False, 'install_hint': 'pip install cryptography'},
    {'name': 'keyring', 'kind': 'python_pkg', 'import': 'keyring',
     'required': False, 'install_hint': 'pip install keyring'},
    {'name': 'schedule', 'kind': 'python_pkg', 'import': 'schedule',
     'required': False, 'install_hint': 'pip install schedule'},

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 · core/dep_registry.py (reported line 125)May include surrounding context.

python
{'name': 'cryptography', 'kind': 'python_pkg', 'import': 'cryptography',
     'required': False, 'install_hint': 'pip install cryptography'},
    {'name': 'keyring', 'kind': 'python_pkg', 'import': 'keyring',
     'required': False, 'install_hint': 'pip install keyring'},
    {'name': 'schedule', 'kind': 'python_pkg', 'import': 'schedule',
     'required': False, 'install_hint': 'pip install schedule'},
    {'name': 'openai-whisper', 'kind': 'python_pkg', 'pip': 'openai-whisper',