Back to skill

Security audit

Deen Time

Security checks for vulnerabilities and agentic risk

Overview

This prayer-time skill is purpose-aligned and transparent about using Aladhan, but its documented shell commands interpolate user-provided locations unsafely and should be reviewed before installation.

Review this skill before installing or using it in an environment with sensitive files or credentials. Its intended API use is narrow and disclosed, but location inputs should be safely encoded and passed through a structured HTTP client or curl --data-urlencode rather than directly inserted into shell command strings.

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

Error
Location
SKILL.md:34
Finding

Command Injection Through Unsafe Interpolation of User-Controlled Location Data

Content
View full analysis
Remediation
View remediation
&2; exit 2 ;; esac curl --fail --silent --show-error \ --proto '=https' \ --proto-redir '=https' \ --max-redirs 3 \ --get 'https://api.aladhan.com/v1/timingsByCity' \ --data-urlencode "city=$city" \ --data-urlencode "country=$country" \ --data-urlencode "method=$method" ``` User input stored in a shell variable is not recursively interpreted as shell syntax when the variable is expanded normally. The implementation must not use `eval`, `sh -c` with concatenated input, or equivalent dynamic execution. 3. **Validate structured fields.** - Restrict `method` to the documented numeric allowlist. - Require dates to match the expected format and verify that they are valid dates. - Parse latitude and longitude as finite decimal numbers and enforce ranges of `-90` to `90` and `-180` to `180`, respectively. - Reject NUL bytes, newlines, and other control characters in city and country values. 4. **Encode all query parameters.** Do not limit encoding to spaces. Apply standards-compliant percent encoding to every user-controlled query value. 5. **Reduce execution privileges.** Prefer a domain-restricted HTTP capability over general shell access. If shell execution cannot be eliminated, run it in a sandbox with minimal filesystem, environment, process, and network access. 6. **Clarify the Skill instructions.** Explicitly state that location values are untrusted and must never be directly interpolated into executable shell command strings. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (8)

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 36)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 44)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 52)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 158)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 162)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 167)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 171)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

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 175)May include surrounding context.

Fetching Prayer Times by City

bash
curl -L "https://api.aladhan.com/v1/timingsByCity?city={CITY}&country={COUNTRY}&method={METHOD}"

Replace {CITY}, {COUNTRY}, and {METHOD} with actual values. URL-encode spaces (e.g., New%20York). Always use -L to follow redirects.

Static analysis

No suspicious patterns detected.