T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:20- Finding
Mutable Remote Application Is Downloaded and Executed Without Integrity Pinning
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent wellness-coach purpose, but it asks users to run unpinned external code, persist daily automation, and share sensitive health and calendar data with multiple services.
Review this skill carefully before installing. Use only a pinned, verified version of the external repository, run it in an isolated environment, confirm every recipient and provider, avoid storing tokens in the project directory when possible, and do not enable the daily cron or HEARTBEAT forwarding rule unless you understand how to disable them and are comfortable with recurring health/calendar summaries being sent externally.
SKILL.md:20Mutable Remote Application Is Downloaded and Executed Without Integrity Pinning
references/openclaw-cron.md:8Daily Main-Session Scheduled Task Creates Cross-Session Persistence
references/openclaw-cron.md:21Persistent Heartbeat Rule Blindly Forwards Event-Controlled Content
SKILL.md:12Sensitive Health and Calendar Data Is Routed Through Multiple External Services Without Documented Minimization Controls
The description omits a clear warning that sensitive health metrics, calendar contents, and possibly identifiers are sent to third-party services including Tavus, Anthropic, Google, and Telegram. In this context, lack of explicit disclosure undermines informed user consent and can expose highly sensitive personal data to multiple processors.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
1. Go to https://console.cloud.google.com → create a new project
2. Enable **Google Calendar API**
3. APIs & Services → Credentials → Create **OAuth 2.0 Client ID** (Desktop app type)
4. Download JSON → save as `credentials.json` in project root
5. Run: `python3 setup_gcal.py`
6. Browser opens → sign in → allow Calendar access
7. `token.pickle` is saved automatically
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
1. Go to https://console.cloud.google.com → create a new project
2. Enable **Google Calendar API**
3. APIs & Services → Credentials → Create **OAuth 2.0 Client ID** (Desktop app type)
4. Download JSON → save as `credentials.json` in project root
5. Run: `python3 setup_gcal.py`
6. Browser opens → sign in → allow Calendar access
7. `token.pickle` is saved automatically
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
1. Go to https://console.cloud.google.com → create a new project
2. Enable **Google Calendar API**
3. APIs & Services → Credentials → Create **OAuth 2.0 Client ID** (Desktop app type)
4. Download JSON → save as `credentials.json` in project root
5. Run: `python3 setup_gcal.py`
6. Browser opens → sign in → allow Calendar access
7. `token.pickle` is saved automatically
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
token.pickle is saved automaticallyGOOGLE_CREDENTIALS_PATH=../credentials.json
GOOGLE_TOKEN_PATH=../token.pickle
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
token.pickle is saved automaticallyGOOGLE_CREDENTIALS_PATH=../credentials.json
GOOGLE_TOKEN_PATH=../token.pickle
The activation text is broad enough to match ordinary wellness or morning-routine requests, which could trigger the skill unexpectedly. Because this skill transmits sensitive health and calendar context to external services and can create live video sessions, accidental invocation materially increases privacy and consent risk.
The setup guide tells users to generate and store OAuth client and token artifacts, but only says not to commit them. It does not clearly warn that these files grant ongoing Google Calendar access, should be tightly permissioned, and must be revoked/rotated if exposed. In a skill that processes personal health and schedule data, compromise of these artifacts could expose sensitive calendar information and enable unauthorized access until revoked.
The document sets up an automated 7AM workflow that culminates in sending a Telegram message, but it does not include any user-facing disclosure, approval step, or guardrail around outbound messaging. In this skill, the message content is derived from health and calendar data, so silent automatic transmission increases the risk of privacy leakage and unexpected external actions.
The HEARTBEAT instruction tells the agent to forward system-event content to Telegram "as-is," which creates a direct unreviewed path from internal/generated content to an external messaging channel. That is especially dangerous here because the upstream pipeline uses personal wellness and calendar context, and any prompt injection, formatting bug, or malicious event content could exfiltrate sensitive data or send unintended messages without validation.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
import requests def get_oura_health_data(api_token: str) -> dict: headers = {"Authorization": f"Bearer {api_token}"} sleep = requests.get("https://api.ouraring.com/v2/usercollection/daily_sleep", headers=headers).json() readiness = requests.get("https://api.ouraring.com/v2/usercollection/daily_readiness", headers=headers).json() # Map to standard format: sleep_score, hrv_ms, recovery_score etc.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
import requests def get_oura_health_data(api_token: str) -> dict: headers = {"Authorization": f"Bearer {api_token}"} sleep = requests.get("https://api.ouraring.com/v2/usercollection/daily_sleep", headers=headers).json() readiness = requests.get("https://api.ouraring.com/v2/usercollection/daily_readiness", headers=headers).json() # Map to standard format: sleep_score, hrv_ms, recovery_score etc.
The guidance shows how to use personal access/OAuth tokens to pull sensitive wearable health data, but it provides no warnings about consent, secure storage, least-privilege scopes, retention, or downstream sharing. In the context of a wellness coach that personalizes prompts and delivers briefings through third-party services, this omission increases the risk of mishandling regulated or highly sensitive personal data.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
def get_fitbit_health_data(access_token: str) -> dict:
headers = {"Authorization": f"Bearer {access_token}"}
sleep = requests.get("https://api.fitbit.com/1.2/user/-/sleep/date/today.json", headers=headers).json()
hrv = requests.get("https://api.fitbit.com/1/user/-/hrv/date/today.json", headers=headers).json()
Get token: https://dev.fitbit.com (OAuth2 flow)
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
def get_fitbit_health_data(access_token: str) -> dict:
headers = {"Authorization": f"Bearer {access_token}"}
sleep = requests.get("https://api.fitbit.com/1.2/user/-/sleep/date/today.json", headers=headers).json()
hrv = requests.get("https://api.fitbit.com/1/user/-/hrv/date/today.json", headers=headers).json()
Get token: https://dev.fitbit.com (OAuth2 flow)
The manifest says the skill requires only Tavus and Anthropic keys, but the documentation also depends on Google Calendar OAuth files and environment variables. This mismatch can cause administrators to enable the skill without realizing calendar access and token storage are involved, reducing informed consent and increasing the chance of insecure setup.
The manifest says the skill requires only Tavus and Anthropic keys, but the documentation also depends on Google Calendar OAuth files and environment variables. This mismatch can cause administrators to enable the skill without realizing calendar access and token storage are involved, reducing informed consent and increasing the chance of insecure setup.
No suspicious patterns detected.