Back to skill

Security audit

Pollen rapporten

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims: it fetches Swedish pollen forecasts from a disclosed public API, with no hidden persistence, credential access, or file mutation.

Before installing, understand that forecast lookups contact api.pollenrapporten.se and depend on that service. Use the grass-pollen alert output as general allergy guidance only, not as personalized medical advice.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill invokes a Python script that fetches data from an external API, but the manifest does not declare any tool scope or permissions for network use. Missing capability declarations weaken governance and review controls, making it easier for a skill to perform external communication without explicit approval or user visibility.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
74% confidence
Finding

The skill sends user-supplied location queries to an external third-party API, which is an external data transmission event. In context, this is expected functionality for a forecast skill, but it still creates privacy and supply-chain risk because user input and fetched content leave the local environment and depend on a remote service.

Content

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

md
## Data Sources

- **API**: https://api.pollenrapporten.se/v1/
- **Source**: Swedish Museum of Natural History (Naturhistoriska riksmuseet)
- **Coverage**: 24 regions across Sweden
- **Update frequency**: Daily during pollen season

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The note says 'You must send in Swedish, and also in English,' which imposes a language behavior unconditionally. This is a natural-language policy concern because it forces a specific locale/language choice rather than offering the user an option or documenting a justified region-specific exception for output language.

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 · scripts/get_forecast.py (reported line 13)May include surrounding context.

python
import urllib.request
from pathlib import Path

API_BASE = "https://api.pollenrapporten.se/v1"
SKILL_DIR = Path(__file__).parent.parent
REGIONS_FILE = SKILL_DIR / "references" / "regions.json"

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

Line L134 states 'You must send in Swedish, and also in English,' which implies bilingual output behavior. Elsewhere in the file, the documented implementation only fetches Swedish forecasts from the API and formats them; no translation step or dual-language rendering is described in the examples or workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This JSON file is entirely built around Swedish region names and mappings, including accented Swedish place names and English-to-Swedish aliases. Because SQP-3 applies to all file types, this can be flagged as a locale-specific constraint that is encoded without any accompanying natural-language justification or user opt-in in the file itself.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The top-level docstring frames the script as a simple forecast fetcher, while the implementation supports an extra '--alert' mode that produces tailored warning and medication/behavior recommendations. This is more than an omitted implementation detail because it changes the apparent intent from data retrieval to advisory alerting.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The script hardcodes bilingual and Swedish-specific output strings such as level names and forecast text labels, while the usage and other messages are in English. This imposes a locale choice in the user-facing output without any opt-in or configuration mechanism.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest describes a Sweden pollen forecast skill that reports pollen levels and severity. The code adds a special-purpose capability keyed to a specific user's grass allergy and later emits behavioral and medication recommendations, which is not necessary to fetch or present forecast data and is not declared in the skill description.

Content

No source excerpt is available for this finding.