T08 · Insecure Dependencies
- Location
references/languages.md:64- Finding
Unpinned and Potentially Mismatched Third-Party Package Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This prayer-guidance skill is coherent and purpose-aligned, but users should configure its third-party TTS and optional audio fallback carefully.
Install only if you are comfortable configuring a cloud TTS provider and potentially sending generated prayer or sermon audio text to that provider. Prefer explicit invocation, review the optional gTTS fallback before using it, install audio tools from trusted sources, and avoid running fallback examples with elevated privileges.
references/languages.md:64Unpinned and Potentially Mismatched Third-Party Package Installation
references/languages.md:54Predictable Temporary Audio File Permits Symlink and Race Attacks
The code chunk only computes and prints prayer times using astronomical formulas and a few configurable calculation methods. It accepts latitude, longitude, timezone offset, and madhhab/method parameters, then returns Fajr, Sunrise, Dhuhr, Asr, Maghrib, and Isha times plus the current prayer. There is no audio output, speech synthesis, sermon generation or delivery, multilingual handling, user interaction flow, or any logic for leading prayers. While prayer time calculation could support an imam-related skill, this code's actual primary behavior is materially narrower and different from the declared purpose.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# In your OpenClaw .env file
GOOGLE_APPLICATION_CREDENTIALS=/path/to/your-service-account.json
GOOGLE_TTS_LANGUAGE_CODE=ar-XA
GOOGLE_TTS_VOICE_NAME=ar-XA-Wavenet-B
The skill explicitly routes generated or user-influenced religious text through external TTS providers, but it does not clearly warn users that their prompts, preferences, or recitations may be sent to third parties. This creates a privacy and data-sharing risk, particularly in a sensitive religious context where spoken content, language preferences, and timing/location-derived prayer data may reveal personal information.
The activation phrases are broad enough to trigger during ordinary conversation, especially for common terms like prayer names or phrases such as 'Friday prayer' and 'time to pray.' In a voice-driven skill, unintended activation can cause surprise audio output, context switching, or transmission of spoken/user-supplied content to external services without clear intent.
Line L16 states the opening is 'Always in Arabic', which is a natural-language instruction enforcing a specific language. Under the policy, language constraints should either provide user opt-in or be clearly documented as a justified region-specific requirement; this file does not do so.
The text states that Arabic recitations are "ALWAYS in Arabic regardless of language setting," which imposes a fixed language behavior without user opt-in. Under the policy, forcing a specific language is a natural-language policy violation unless the constraint is explicitly offered as a choice or clearly justified as a documented exception.
The documented gTTS fallback uses os.system to invoke a local media player, which introduces shell execution into a skill whose purpose is prayer audio delivery. Even though the shown command is static, normalizing shell-based execution in documentation can lead implementers to extend it with user-controlled paths or commands, increasing command-injection and unsafe local execution risk.
The example explicitly states that audio 'plays immediately' and demonstrates local playback without a warning or consent step. Unexpected audio output is a real side effect that can disrupt users, reveal device activity, or create safety/privacy issues in shared or quiet environments.
The CLI defaults hard-code Pukhraayan, UP coordinates and IST (+5.5), which imposes a specific geographic/locale assumption on all users unless they override it. This is a natural-language policy concern because the user-facing help text and behavior effectively force a locale-specific default without offering an explicit opt-in or documenting why the restriction is necessary.
No suspicious patterns detected.