Back to skill

Security audit

Verosight Monitor

Security checks for vulnerabilities and agentic risk

Overview

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.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
references/pdf-template.md:6
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/verosight-auth.sh:3
Finding

API Credentials Exposed Through Command-Line Arguments

Content
View full analysis
# Output: JWT token to stdout API_KEY="${1:-$VEROSIGHT_API_KEY}" ``` From `scripts/quick-sentiment.sh`, lines 3–5: ```bash # Usage: ./quick-sentiment.sh [DAYS] [SOURCES] JWT="$1" ``` The authentication script subsequently transmits the supplied API key: ```bash RESPONSE=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \ -H "X-API-Key: $API_KEY") ``` The sentiment script subsequently transmits the supplied JWT: ```bash curl -s "https://api.verosight.com/v1/analytics/sentiment?query=$QUERY&sources=$SOURCES&days=$DAYS" \ -H "Authorization: Bearer $JWT" | python3 -c " ``` ### Technical Analysis Both helper scripts encourage or require credentials to be supplied as positional command-line arguments. Command lines may be retained in shell history and exposed through process inspection, audit telemetry, terminal recording, debugging output, or orchestration logs. The authentication helper supports `VEROSIGHT_API_KEY` as an alternative, but its documented primary usage places the API key directly on the command line. The sentiment helper has no protected input alternative and requires the JWT as its first argument. The scripts send credentials only to the declared Verosight API over HTTPS; no unrelated exfiltration endpoint was identified. Nevertheless, local command-line exposure is unnecessary for the declared API functionality. ### Attack Path 1. A user runs `./scripts/verosight-auth.sh vlt_live_SECRET` or `./scripts/quick-sentiment.sh JWT_SECRET keyword`. 2. The command is retained in shell history, captured by execution telemetry, or temporarily exposed through process information ...[truncated 990 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (25)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/quick-sentiment.sh (reported line 16)May include surrounding context.

sh
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']

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/verosight-auth.sh (reported line 15)May include surrounding context.

sh
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)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

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.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

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.

Content

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

Exchange your API key for a JWT token (valid 24 hours):

bash
JWT=$(curl -s -X POST "https://api.verosight.com/v1/auth/token" \
  -H "X-API-Key: vlt_live_YOUR_KEY" | jq -r '.token')

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

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.

Content

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

3. Query Data

bash
# Sentiment analysis
curl -s "https://api.verosight.com/v1/analytics/sentiment?query=KEYWORD&sources=x,instagram&days=7" \
  -H "Authorization: Bearer $JWT"

# Search posts

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

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.

Content

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

-H "Authorization: Bearer $JWT"

Search posts

curl -s "https://api.verosight.com/v1/posts?query=KEYWORD&sources=x,instagram&limit=10"
-H "Authorization: Bearer $JWT"

text

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

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.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

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.

Content

Scanner excerpt · references/sentiment-workflow.md (reported line 12)May include surrounding context.

md
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

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

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.

Content

Scanner excerpt · references/sentiment-workflow.md (reported line 16)May include surrounding context.

-H "X-API-Key: $VEROSIGHT_API_KEY" | jq -r '.token')

Verify token works

curl -s "https://api.verosight.com/v1/account/balance"
-H "Authorization: Bearer $JWT"

text

External Transmission

Medium
Category
Data Exfiltration
Confidence
86% confidence
Finding

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.

Content

Scanner excerpt · references/sentiment-workflow.md (reported line 23)May include surrounding context.

Step 2: Get Sentiment Data

bash
curl -s "https://api.verosight.com/v1/analytics/sentiment?query=KEYWORD&sources=x,instagram,tiktok&days=7" \
  -H "Authorization: Bearer $JWT" | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
85% confidence
Finding

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.

Content

Scanner excerpt · references/sentiment-workflow.md (reported line 43)May include surrounding context.

Step 3: Get Volume Trend

bash
curl -s "https://api.verosight.com/v1/analytics/volume?query=KEYWORD&days=7" \
  -H "Authorization: Bearer $JWT" | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
86% confidence
Finding

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.

Content

Scanner excerpt · references/sentiment-workflow.md (reported line 53)May include surrounding context.

bash
# 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

External Transmission

Medium
Category
Data Exfiltration
Confidence
86% confidence
Finding

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.

Content

Scanner excerpt · references/sentiment-workflow.md (reported line 57)May include surrounding context.

-H "Authorization: Bearer $JWT" | jq .

All posts from specific platforms

curl -s "https://api.verosight.com/v1/posts?query=KEYWORD&sources=x,threads&limit=20&days=7"
-H "Authorization: Bearer $JWT" | jq .

text

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

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.

Content

Scanner excerpt · scripts/quick-sentiment.sh (reported line 16)May include surrounding context.

sh
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']

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · README.md (reported line 66)May include surrounding context.

md
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)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · README.md (reported line 74)May include surrounding context.

md
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)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 210)May include surrounding context.

md
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)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · scripts/verosight-auth.sh (reported line 15)May include surrounding context.

sh
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)

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

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.

Content

No source excerpt is available for this finding.