global-education-mcp@0.4.0
CAUTIONPublisher claims: "MCP Server für internationale Bildungsdaten – UNESCO UIS (4000+ Indikatoren) und OECD Education at a Glance (SDMX API)" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios) on 2026-11-01 and scored it 56/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Prompt injection attempt; Tool poisoning; Prompt injection attempt. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationst+CategoryObserved action
0.0sprocessno install scripts in bundle
0.2sprocessdependency install exit 1
0.2sprocessexec /usr/bin/timeout
0.2sprocessexec .venv/bin/global-education-mcp
0.2sprocessexited 127: timeout: failed to run command '.venv/bin/global-education-mcp': No such file or directory
0.2sclaimedno tools/list reply (exit 127)
0.2sprocessscript backend runs setup only
Static findings
MEDIUM
File type combined with upload action.github/workflows/live-tests.yml:54 · File type combined with upload action — agent may exfiltrate local data filesFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07CRITICAL
Prompt injection attemptCONTRIBUTING.de.md:201 · Prompt injection attempt — 'ignore previous instructions'Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
AST01MEDIUM
MCP server using network transport (SSE/HTTP)tests/test_cache_hints.py:85 · MCP server using network transport (SSE/HTTP) — data sent over networkFix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.
AST04MEDIUM
Process kill command.claude/hooks/session-start.sh:48 · Process kill command — agent can terminate processesFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05CRITICAL
Tool poisoningaudits/2026-05-21T094452-Z-global-education-mcp/findings/SEC-015.md:38 · Tool poisoning — hidden instructions in tool description attempting to override agent behaviorFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
AST04MEDIUM
Destructive file system command detectedDockerfile:48 · Destructive file system command detectedFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05MEDIUM
Process kill command.claude/hooks/session-start.sh:44 · Process kill command — agent can terminate processesFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05MEDIUM
Outbound HTTP to raw IP address.github/workflows/ci.yml:98 · Outbound HTTP to raw IP address — may bypass domain-based monitoringFix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.
AST07MEDIUM
URL using raw IP address.github/workflows/ci.yml:98 · URL using raw IP address — may bypass domain-based filteringFix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.
AST07CRITICAL
Prompt injection attemptCONTRIBUTING.md:196 · Prompt injection attempt — 'ignore previous instructions'Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
AST01MEDIUM
Python subprocess execution detectedscripts/check_ruff_pin.py:71 · Python subprocess execution detectedFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05CRITICAL
Tool poisoningaudits/2026-05-21T094452-Z-global-education-mcp/audit-report.md:879 · Tool poisoning — hidden instructions in tool description attempting to override agent behaviorFix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
AST04MEDIUM
Outbound HTTP to raw IP addresstests/test_streamable_http.py:37 · Outbound HTTP to raw IP address — may bypass domain-based monitoringFix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.
AST07MEDIUM
URL using raw IP addresstests/test_streamable_http.py:37 · URL using raw IP address — may bypass domain-based filteringFix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.
AST07MEDIUM
Access to sensitive file pathstests/test_extended_scenarios.py:274 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05What would make this Verified
24 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Text that tells the agent to ignore its instructions≈ +9 on the totalDelete phrases like "ignore previous instructions", "override", "bypass" from SKILL.md and tool descriptions. Describe what the skill does; do not instruct the agent about other rules.
- Tool poisoning≈ +9 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
- Unclaimed publisher≈ +8 on the totalClaim malkreide: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- New publisher≈ +3 on the totalTime clears this on its own after 14 and 30 days. Claiming the handle (+50) is the fastest way past it.
- File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.
Publish a new version to PyPI, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim malkreide