Back to skill

Security audit

monitoring-google-news-coverage-for-brand

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Google News monitoring workflow using Apify, with a credential-handling caveat in its REST fallback example.

Install only if you are comfortable sending search queries and related result handling to Apify/apidojo. Use a dedicated, least-privilege Apify token, avoid confidential investigation terms in queries, and prefer authorization-header based API calls over the shown URL token fallback.

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

Warning
Location
SKILL.md:90
Finding

Apify API Token Exposed in URL Query Parameter

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 90–93
Vulnerability Type: Credential exposure through a URL query parameter
Risk Level: Medium

Vulnerable Code

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["\"[BRAND_NAME]\" news"], "maxPagesPerQuery": 3, "searchType": "news"}'

Technical Analysis

The documented REST fallback expands APIFY_TOKEN directly into the request URL. Although the request uses HTTPS and the destination is the declared Apify API, secrets embedded in URLs can be exposed outside the encrypted network channel.

The expanded URL may be visible in process command-line information, host monitoring systems, shell debugging output, proxy telemetry, API access logs, error reports, or copied diagnostics. Any component that records the full request URL may therefore retain a reusable credential.

The network request itself is necessary for the Skill's Google News monitoring function, and no evidence indicates that the token is sent to an unrelated or malicious destination. The vulnerability is specifically the unsafe credential transport mechanism.

Attack Path

  1. A user configures a valid APIFY_TOKEN and executes the documented REST fallback.
  2. The shell expands $APIFY_TOKEN into curl's URL argument.
  3. A local process observer, telemetry agent, proxy, or logging system captures the command line or complete request URL.
  4. An attacker with access to that captured information extracts the token.
  5. The attacker submits authenticated requests to Apify using the stolen token.
  6. The attacker can perform actions allowed by the token until it expires or is revoked.

Impact Assessment

Successful exploitation grants the attacker the same Apify API permissions assigned to the exposed token. Depending on its scope, this could allow unaut ...[truncated 363 chars]

Remediation
View remediation

Remediation Suggestions

Remove the token from the request URL and transmit it through an authorization header:

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["\"[BRAND_NAME]\" news"], "maxPagesPerQuery": 3, "searchType": "news"}'

Apply the following additional controls:

  1. Use a dedicated, least-privilege Apify token with only the permissions required to run the specified actor and retrieve its results.
  2. Avoid verbose shell tracing, curl trace output, or debug logging that could record authorization headers.
  3. Redact credentials from process telemetry, proxy logs, error reports, and command transcripts.
  4. Store the token in a protected secret manager or restricted environment rather than committing it to files.
  5. Rotate any token previously used in the query parameter if relevant URLs or command lines may have been retained.
  6. Configure token expiration, usage monitoring, and account spending limits where supported.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger language is broad enough to match many generic research and monitoring requests, which can cause the skill to activate in situations where a user may not expect an external scraping service to be used. This increases the risk of unintended data disclosure to a third party and inappropriate tool invocation for loosely related prompts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs sending search queries and resulting URLs to Apify without clearly warning users that their inputs will be transmitted to an external third-party service. Users may include sensitive brand, incident, competitor, or executive-related terms, creating a privacy and confidentiality risk through undisclosed external processing.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
95% confidence
Finding

This step explicitly transmits user-supplied search terms to Apify's external API, which is a real data egress path. While expected for the skill's function, it becomes dangerous if users are not informed or if sensitive investigation terms, internal project names, or executive issues are included in queries.

Content

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

REST API fallback:

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["\"[BRAND_NAME]\" news"], "maxPagesPerQuery": 3, "searchType": "news"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

The explicit reference to the Apify API endpoint confirms that this skill depends on a third-party network service for execution. In context, the danger is not the domain itself but the undisclosed off-platform transmission of user queries and potential operational metadata to that service.

Content

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

REST API fallback:

bash
curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"queries": ["\"[BRAND_NAME]\" news"], "maxPagesPerQuery": 3, "searchType": "news"}'

Static analysis

No suspicious patterns detected.