T08 · Insecure Dependencies
- Location
references/pdf-template.md:6- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a coherent Verosight API integration, but users should handle API keys, JWTs, and monitoring queries carefully because they are sent to a third-party service.
Install only if you intend to use Verosight. Use test or least-privilege API keys where possible, avoid putting production keys or JWTs directly in commands, do not submit confidential or regulated monitoring targets without authorization, and pin or isolate the optional pdfkit dependency if using PDF report generation.
references/pdf-template.md:6Unpinned Third-Party Dependency Installation
scripts/verosight-auth.sh:3API Credentials Exposed Through Command-Line Arguments
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
fi
echo "=== SENTIMENT ANALYSIS: $QUERY ==="
curl -s "https://api.verosight.com/v1/analytics/sentiment?query=$QUERY&sources=$SOURCES&days=$DAYS" \
-H "Authorization: Bearer $JWT" | python3 -c "
import sys, json
d = json.load(sys.stdin)['data']
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
exit 1
fi
RESPONSE=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: $API_KEY")
JWT=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('token',''))" 2>/dev/null)
The README promotes sending social-media queries and analytics requests to a third-party API but does not warn that prompts, keywords, account names, and monitoring targets may contain sensitive or regulated personal data. In an agent context, this omission can lead operators to unknowingly transmit privacy-sensitive monitoring subjects to an external service without consent review, data minimization, or policy checks.
The authentication example shows use of a live-format API key and JWT exchange but gives no guidance on secure credential handling, storage, shell history exposure, or token lifetime risks. In practice, users may paste production keys into commands, scripts, screenshots, logs, or shared terminals, leading to credential theft and unauthorized API use.
The skill includes shell-based setup and API invocation examples but does not declare any tool scope or allowed-tools constraints. In an agent environment, that omission can allow broader-than-expected shell/network use, increasing the chance of unintended command execution or data transmission when the skill is invoked.
The manifest description contains broad trigger phrases like sentiment analysis, trend analysis, and social monitoring, which can cause the skill to be invoked in contexts broader than intended. Because the skill performs external API queries and handles monitoring targets, overbroad invocation raises privacy and data-handling risk through accidental use.
The documentation instructs users to send keywords, accounts, and monitoring targets to an external social-media intelligence service without warning that these inputs may be sensitive. Users may unknowingly transmit confidential investigations, internal watchlists, personal data, or reputationally sensitive terms to a third party.
This step sends an API key to an external service to exchange it for a JWT, which is expected for the integration but still constitutes external transmission of a secret. In the skill context, the danger is not the existence of the call itself but the lack of guardrails around secret handling, disclosure, and user awareness when shell commands are executed.
Exchange your API key for a JWT token (valid 24 hours):
JWT=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: vlt_live_YOUR_KEY" | jq -r '.token')
The sentiment query transmits user-provided monitoring keywords and source selections to an external API. In this skill's context, those queries may reveal sensitive investigations, brand-monitoring targets, or personal data, making the transmission security-relevant if users are not warned or the invocation is too broad.
# Sentiment analysis
curl -s "https://api.verosight.com/v1/analytics/sentiment?query=KEYWORD&sources=x,instagram&days=7" \
-H "Authorization: Bearer $JWT"
# Search posts
The post-search request sends keywords and platform filters to an external provider, potentially disclosing sensitive topics or persons of interest. Because the skill is aimed at cyber monitoring and reputation management, the operational context makes query confidentiality important even though the network call is functionally expected.
-H "Authorization: Bearer $JWT"
curl -s "https://api.verosight.com/v1/posts?query=KEYWORD&sources=x,instagram&limit=10"
-H "Authorization: Bearer $JWT"
The workflow instructs users to export a live API key and immediately use it to obtain a bearer token and make authenticated requests to a third-party service, but it provides no credential-handling, data-sharing, or environment-safety guidance. This can lead to accidental key exposure in shell history, logs, screenshots, CI environments, or use with sensitive query terms that are transmitted off-platform.
This step sends an API key to an external service endpoint to obtain a JWT, which is expected for the integration but still represents third-party credential transmission. In the skill context, this is more sensitive because users may run the commands directly without realizing they are disclosing credentials and potentially sensitive monitoring targets to an external provider.
export VEROSIGHT_API_KEY="vlt_live_YOUR_KEY"
# Get JWT token (valid 24h)
JWT=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: $VEROSIGHT_API_KEY" | jq -r '.token')
# Verify token works
The authenticated balance check transmits a bearer token to an external endpoint. While routine for API usage, bearer tokens are reusable secrets, and the workflow lacks warnings about token storage, shell/session hygiene, or preventing accidental leakage in logs and shared terminals.
-H "X-API-Key: $VEROSIGHT_API_KEY" | jq -r '.token')
curl -s "https://api.verosight.com/v1/account/balance"
-H "Authorization: Bearer $JWT"
This request sends the user's query terms and authentication token to an external analytics endpoint. In a social-monitoring skill, query terms may themselves be sensitive investigations, customer names, or incident topics, so undocumented external transmission can create confidentiality and compliance risk.
curl -s "https://api.verosight.com/v1/analytics/sentiment?query=KEYWORD&sources=x,instagram,tiktok&days=7" \
-H "Authorization: Bearer $JWT" | jq .
The volume analytics request transmits monitoring queries and authentication data to an external provider. This is normal for the product, but without disclosure or handling guidance it can expose sensitive investigative intent and increase reliance on third-party processing.
curl -s "https://api.verosight.com/v1/analytics/volume?query=KEYWORD&days=7" \
-H "Authorization: Bearer $JWT" | jq .
Fetching negative posts from X through the external API transmits both authentication material and a potentially sensitive keyword/topic to a third party. Because the workflow is operational and action-oriented, users may unknowingly expose reputational, political, or incident-response investigations through these requests.
# Negative posts from X
curl -s "https://api.verosight.com/v1/posts?query=KEYWORD&sources=x&sentiment=negative&limit=15&days=7" \
-H "Authorization: Bearer $JWT" | jq .
# All posts from specific platforms
This posts query similarly sends authenticated requests and monitoring parameters to an external service. The danger is not the existence of the call itself, but the lack of disclosure and safeguards around transmitting potentially confidential monitoring interests and handling returned data safely.
-H "Authorization: Bearer $JWT" | jq .
curl -s "https://api.verosight.com/v1/posts?query=KEYWORD&sources=x,threads&limit=20&days=7"
-H "Authorization: Bearer $JWT" | jq .
The script transmits user-supplied query data and a bearer JWT to an external third-party API. In the context of a monitoring skill this is expected behavior, but it still creates a real security/privacy boundary because sensitive search terms and credentials leave the local environment and are exposed to the remote service, logs, proxies, shell history, and process listings.
fi
echo "=== SENTIMENT ANALYSIS: $QUERY ==="
curl -s "https://api.verosight.com/v1/analytics/sentiment?query=$QUERY&sources=$SOURCES&days=$DAYS" \
-H "Authorization: Bearer $JWT" | python3 -c "
import sys, json
d = json.load(sys.stdin)['data']
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
exit 1
fi
RESPONSE=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: $API_KEY")
JWT=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('token',''))" 2>/dev/null)
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
exit 1
fi
RESPONSE=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: $API_KEY")
JWT=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('token',''))" 2>/dev/null)
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
exit 1
fi
RESPONSE=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: $API_KEY")
JWT=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('token',''))" 2>/dev/null)
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
exit 1
fi
RESPONSE=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
-H "X-API-Key: $API_KEY")
JWT=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('token',''))" 2>/dev/null)
The manifest description states coverage across X, Instagram, TikTok, YouTube, Threads, and news portals, and the documented API parameters likewise enumerate x,instagram,tiktok,youtube,threads,news_portal. However, the 'Supported Platforms' table additionally claims Facebook and LinkedIn support, which is not reflected in the manifest description or the documented endpoint parameters. This creates a documentation-level mismatch about the skill's actual scope.
The section explicitly defines 'Engagement Benchmarks (Indonesian social media)' but does not state that this is optional, user-selected, or limited to an Indonesia-specific use case. This can violate language/locale policy guidance when a specific locale is imposed without opt-in or clear justification.
This code performs a network request and sends a credential in the request header, but the script does not include an explicit warning, confirmation, or descriptive disclosure that the provided API key will be transmitted to api.verosight.com. For a standalone auth helper, this is safety-relevant behavior that should be clearly disclosed to users invoking the script.