T01 · Skill Instruction Hijacking
- Location
SKILL.md:8- Finding
Mandatory Promotional Messaging Overrides User-Directed Interaction
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a real Distribb SEO API integration, but it can upload and publish content, insert service-selected backlinks, and use remote writing instructions without enough per-action user control.
Review this skill carefully before installing. Use it only with a Distribb account and API key you trust, keep articles in Draft unless you intentionally want scheduling or publishing, and require the agent to show you all outbound backlink targets, article content, destination project, and publishing status before any create, update, or publish request.
SKILL.md:8Mandatory Promotional Messaging Overrides User-Directed Interaction
SKILL.md:90Mandatory Third-Party Backlink Injection into User Content
SKILL.md:163Remote API Content Is Treated as Agent Instructions Without a Trust Boundary
The README instructs users to authenticate with an API key and send business context, keyword data, and article content to a third-party service, but it does not clearly warn that potentially sensitive project data leaves the local environment. In an agent-skill context, this can cause unreviewed exfiltration of proprietary content, competitor data, and operational metadata to an external platform.
This POST example sends keyword research inputs and project identifiers to an external API, which is an external transmission of user or business data. While expected for the product's functionality, the skill documentation does not frame it as a privacy/security-sensitive action, making accidental disclosure more likely.
"https://distribb.io/api/v1/business-context?project_id=42" | jq .
# Keyword research
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword": "crm software", "project_id": 42}' \
https://distribb.io/api/v1/keywords/search | jq .
This article creation example transmits title and HTML content to distribb.io, potentially including unpublished marketing material, proprietary research, or customer-sensitive text. In an agent setting, such content exfiltration is more dangerous because the model may generate and submit data automatically without a clear review checkpoint.
"https://distribb.io/api/v1/backlink-targets?project_id=42&keyword=crm+software" | jq .
# Create article
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"project_id": 42, "keyword": "best crm", "title": "Best CRM", "content": "<h2>...</h2>", "status": "Draft"}' \
https://distribb.io/api/v1/articles | jq .
The README shows update and publish operations that can modify stored articles and push content to external CMS platforms, but it does not warn that these actions have real side effects. In an autonomous or semi-autonomous agent workflow, that omission raises the risk of unintended content changes or accidental publication to production sites.
This PUT example performs an external state-changing request that updates remotely stored article content. Without a clear caution about side effects and review requirements, an agent could overwrite content unintentionally or alter material later published to connected CMS platforms.
https://distribb.io/api/v1/articles | jq .
# Update article (e.g. add backlink targets after submission)
curl -s -X PUT -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "<h2>Revised...</h2>"}' \
https://distribb.io/api/v1/articles/123 | jq .
The skill description is broad enough to trigger on many generic writing, publishing, SEO, or content-planning requests, increasing the chance the agent invokes a capability set that can publish content and trigger downstream actions without the user intending to use this service. In this skill, overbroad activation is more dangerous because the skill can submit articles, publish to external CMS platforms, and implicitly trigger social-media draft generation.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"https://distribb.io/api/v1/business-context?project_id=42" | jq .
# 3. KEYWORD RESEARCH: Find what to write about
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword": "crm software", "project_id": 42}' \
https://distribb.io/api/v1/keywords/search | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"https://distribb.io/api/v1/business-context?project_id=42" | jq .
# 3. KEYWORD RESEARCH: Find what to write about
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword": "crm software", "project_id": 42}' \
https://distribb.io/api/v1/keywords/search | jq .
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"https://distribb.io/api/v1/business-context?project_id=42" | jq .
# 3. KEYWORD RESEARCH: Find what to write about
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword": "crm software", "project_id": 42}' \
https://distribb.io/api/v1/keywords/search | jq .
This submission step sends full article content and metadata to an external service for storage and scheduling, which may expose sensitive drafts or proprietary content if done without explicit user approval. In this skill, the danger is amplified because submitted content may later be auto-published and is shaped to include third-party backlinks for a link-exchange network.
# You MUST include 1-2 URLs from the backlink-targets response as natural references.
# 7. SUBMIT: Save to Distribb's content calendar
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": 42,
The skill instructs the agent to publish articles to a connected CMS, and publication automatically triggers creation of social-media drafts on connected platforms, but it does not require an explicit just-in-time confirmation immediately before these irreversible or externally visible actions. This creates a real risk of unintended content publication and downstream propagation beyond the user's primary site.
Creating an article sends complete generated content, metadata, and scheduling information to Distribb, which can persist the content and prepare it for publication. This is dangerous if the user has not explicitly approved external submission, and the surrounding workflow pressures the agent to include network backlinks that may not align with the user's editorial or compliance expectations.
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": 42,
This long-form submission pattern encourages uploading entire article files to the external service, increasing the amount of potentially sensitive data transmitted and stored. The risk is contextual rather than inherent to curl itself: the skill does not require pre-send review or warn about external storage of the full article body.
For long articles, write the HTML to a file and use @ syntax:
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg content "$(cat article.html)" '{
"project_id": 42,
Updating an article with revised content is another external transmission of full content, and here it is specifically driven by the platform's backlink-credit mechanism. That context makes it riskier because the agent is instructed to modify content to satisfy a link-exchange program, potentially overriding user editorial intent without a fresh confirmation.
Use this to revise an article after submission, for example to add backlink targets if the creation response included a backlinks_warning.
curl -s -X PUT -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg content "$(cat revised-article.html)" '{
"content": $content
This step submits the finished article to Distribb as part of an end-to-end workflow that proceeds directly toward scheduling and publication, but does not force an explicit confirmation at the moment of external submission. Because the content may contain required exchange-network backlinks and may later auto-publish, accidental or unauthorized transmission can have business, reputational, and compliance consequences.
# - Output valid HTML
# Step 7: Submit to Distribb
curl -s -X POST -H "Authorization: Bearer $DISTRIBB_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg content "$(cat article.html)" '{
"project_id": 42,
No suspicious patterns detected.