Back to skill

Security audit

Dappier

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward Dappier API integration that sends user-provided search, news, market, research, sports, lifestyle, and address queries to Dappier when invoked.

Install only if you are comfortable sending entered queries, ticker searches, research terms, and any Stellar AI residential addresses to Dappier using your DAPPIER_API_KEY. Avoid including secrets, private customer data, account details, or sensitive personal information in queries.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (23)

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README promotes API-backed real-time web search and premium data access but does not clearly disclose that user queries and any supplied content are transmitted to Dappier, a third-party service. This can lead users or downstream agent builders to unknowingly send sensitive prompts, internal data, or regulated information outside their trust boundary.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The Stellar AI example encourages use of a full street address for solar and roof analysis without warning that precise location data will be sent to an external API. Street addresses are sensitive location data, and omission of that warning increases the risk of inadvertent disclosure of personal or customer information.

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill invokes Node scripts, uses an API key, and performs external network access, but it does not declare an explicit tool scope such as permissions or allowed-tools. This weakens least-privilege controls and makes the runtime capabilities less transparent to reviewers and users, increasing the chance of unintended code execution or data egress if the skill is misused or later modified.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The Stellar AI feature instructs users to submit a residential home address to an external service, but the skill does not provide a privacy warning or consent guidance. Residential addresses are sensitive personal data, and sending them to a third party without clear disclosure can expose users to privacy harm, regulatory issues, or unexpected retention and secondary use of location data.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The script sends the user-provided query to Dappier's external API, but it does not clearly disclose in output or inline comments that user input is transmitted off-host. In an agent-skill context, users may assume local processing, so queries could unintentionally include sensitive prompts, investment research, or proprietary data that is then shared with a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
const dataModelId = "dm_01jmxn1a9tem8bq1nzbzjck8c4";

const resp = await fetch(
  `https://api.dappier.com/app/v2/search?data_model_id=${dataModelId}`,
  {
    method: "POST",
    headers: {
Confidence
90% confidence
Finding
This code performs an outbound HTTPS request to api.dappier.com and includes user-controlled query content plus a bearer token for authentication. In this skill's context, external transmission is expected for web/news search, but it still creates a real privacy and data-governance risk if users or upstream agents pass sensitive information assuming the tool is purely local.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script transmits the user-supplied query directly to Dappier's third-party API, which can expose potentially sensitive user input to an external service without any runtime disclosure, consent prompt, or minimization. In an agent/skill context, users may reasonably assume their prompt is handled locally unless clearly told otherwise, so this creates a privacy and data-handling risk.

External Transmission

Medium
Category
Data Exfiltration
Content
const dataModelId = "dm_01j0q82s4bfjmsqkhs3ywm3x6y";

const resp = await fetch(
  `https://api.dappier.com/app/v2/search?data_model_id=${dataModelId}`,
  {
    method: "POST",
    headers: {
Confidence
88% confidence
Finding
This code makes an outbound request to https://api.dappier.com/ and includes the full query in the POST body along with an authorization bearer token. The request itself is expected for the skill's functionality, but it still represents real data exfiltration to a third party and can leak sensitive user-entered content if used with confidential prompts.

External Transmission

Medium
Category
Data Exfiltration
Content
process.exit(1);
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01j06ytn18ejftedz6dyhz2b15",
  {
    method: "POST",
Confidence
88% confidence
Finding
This fetch call transmits user-supplied query data and an API-authenticated request to an external service. In the context of a search skill this behavior is expected, but it still creates a real privacy and data-handling risk if sensitive information is entered, especially because the script does not warn users or constrain what may be sent.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script sends the user's raw query to Dappier's external API but provides no explicit disclosure, consent prompt, or warning that user input leaves the local environment. This can expose sensitive prompts, internal terms, or personal data if users assume the search happens locally or do not realize a third party receives their input.

External Transmission

Medium
Category
Data Exfiltration
Content
process.exit(1);
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01j0rzq4tvfscrgzwac7jv6dr2",
  {
    method: "POST",
Confidence
84% confidence
Finding
This code performs an outbound POST request to a third-party service and includes both the user's query and a bearer API credential. External transmission is expected for a search integration, but it is still a real security/privacy concern because sensitive input may be exfiltrated to a remote provider and the script provides no controls, minimization, or consent mechanism.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script sends the user-provided query directly to Dappier's external API, but it does not clearly disclose to the user at runtime that their input will leave the local environment. This creates a privacy and data-handling risk, especially if users include sensitive research topics, internal project names, or confidential text in the query.

External Transmission

Medium
Category
Data Exfiltration
Content
process.exit(1);
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01hw6kehn6f0rthxsvc33s7mad",
  {
    method: "POST",
Confidence
95% confidence
Finding
This code performs outbound network transmission to a third-party service and includes user-supplied address data in the POST body. External transmission is not inherently malicious, but in this context it carries privacy risk because the payload is sensitive residential location information and the script provides no notice or control to the user.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The manifest describes a general-purpose Dappier skill for real-time web search and access to premium data sources such as news, finance, sports, and weather. This file instead accepts a residential address and calls a specific Dappier AI model for 'Stellar AI (Solar & Roof Analysis)', which is a narrow property-analysis use case not reflected in the stated skill description.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The script accepts a residential home address and sends it to an external third-party API without any user-facing disclosure, consent prompt, or minimization. Residential addresses are sensitive location data, and transmitting them off-host can expose private user information to external retention, profiling, or secondary use.

External Transmission

Medium
Category
Data Exfiltration
Content
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01hw6kehn6f0rthxsvc33s7mad",
  {
    method: "POST",
    headers: {
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01hw6kehn6f0rthxsvc33s7mad",
  {
    method: "POST",
    headers: {
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01hw6kehn6f0rthxsvc33s7mad",
  {
    method: "POST",
    headers: {
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01hw6kehn6f0rthxsvc33s7mad",
  {
    method: "POST",
    headers: {
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01hw6kehn6f0rthxsvc33s7mad",
  {
    method: "POST",
    headers: {
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
process.exit(1);
}

const resp = await fetch(
  "https://api.dappier.com/app/aimodel/am_01j0rzq4tvfscrgzwac7jv1p4h",
  {
    method: "POST",
Confidence
84% confidence
Finding
This fetch call transmits user-controlled input and an API credential to an external service. While external API use is expected for this skill, the security issue is the unrestricted outbound transmission of user input to a third party, which can expose confidential data if the calling agent passes sensitive content.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The script sends the raw user-provided query to Dappier's external API, but the only disclosure is implicit in the source code. In a skill/agent context, users may provide sensitive financial research terms, account-related details, or proprietary prompts without realizing that this data leaves the local environment and is processed by a third party.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The code reads DAPPIER_API_KEY from the environment to authenticate outbound requests. While this is common, the script provides no comment or user-facing explanation that it depends on a sensitive credential and uses it for external API access.

Static analysis

No suspicious patterns detected.