Back to skill

Security audit

Syft News Hub

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Syft news workflow, but it asks users to install an unpinned global CLI and creates persistent, high-confidence demographic profiles from following data without clear consent or retention controls.

Review carefully before installing. Use a pinned, verified Syft CLI version if possible, understand where syft login stores credentials, and avoid generating profile summaries unless you are comfortable saving inferred interests and demographic guesses in local workspace files. Delete or edit profiles and rulebooks that contain wrong, sensitive, or unwanted inferences.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:17
Finding

Unpinned Global Installation of a Third-Party CLI Package

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 17-28; duplicated in README.md, lines 47-57
Vulnerability Type: Unpinned third-party dependency installed globally
Risk Level: Medium

Vulnerable Code Snippet:

markdown
If the `syft` command is missing or `syft status` fails because the CLI is not installed,
pause the workflow and tell the user to install the official Syft CLI first:

```bash
npm install -g @orionarm/syft-cli

After installation, ask the user to run:

bash
syft login
syft status
text

### Technical Analysis

The Skill directs users to install the latest available version of `@orionarm/syft-cli` globally without specifying a reviewed version, lockfile, package integrity hash, or provenance-verification procedure.

An npm installation may execute package lifecycle scripts such as `preinstall`, `install`, or `postinstall`. Because the package is installed globally, those scripts execute with the privileges of the user running npm and may modify globally accessible binaries or files. The effective code installed can also change after this Skill package has been audited.

The Skill describes the package as official, but the audited repository does not include the CLI source, a package signature, an integrity digest, or other evidence that independently establishes the downloaded artifact's identity. This does not demonstrate that the current package is malicious, but it creates a supply-chain trust boundary that is not controlled by the audited project.

### Attack Path

1. An attacker compromises the npm publisher account, package repository, build pipeline, or a future package release.
2. The attacker publishes a malicious version under the expected package name.
3. A user follows the Skill's unpinned `npm install -g` instruction.
4. npm downloads the attacker-controlled latest version and may execute its lifecycle scripts.
5. The installed binary is subseque
...[truncated 948 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the CLI to an explicitly reviewed version rather than installing the moving latest release:
    bash
    npm install -g @orionarm/syft-cli@REVIEWED_VERSION
    
  2. Publish and verify the expected npm integrity digest or cryptographic signature before installation.
  3. Document the authoritative package registry, publisher identity, source repository, and release-verification process.
  4. Disable lifecycle scripts during installation where compatible with the package:
    bash
    npm install -g --ignore-scripts @orionarm/syft-cli@REVIEWED_VERSION
    
  5. Prefer a project-local, isolated installation or sandbox over a global installation.
  6. Run installation and authentication under a least-privileged account.
  7. Document what credentials the CLI stores, where they are stored, and how users can revoke or delete them.
  8. Review every version update before changing the pinned version or integrity value.

other

Warning
Location
subskills/syft-profile-summary/references/profile-summary-prompt.md:7
Finding

Persistent Sociodemographic Profiling from Inferred Interest Data

Content
View full analysis

Vulnerability Details

File Location: subskills/syft-profile-summary/references/profile-summary-prompt.md, lines 7-14; persistence is defined in subskills/syft-profile-summary/SKILL.md, lines 10-16 and 30-58
Vulnerability Type: Sensitive demographic inference and persistent profiling
Risk Level: Medium

Relevant Prompt Snippet, translated into English as required by the report language policy:

markdown
Based on the following user interest labels and scores, produce a
high-dimensional profile with extensive sociodemographic insights from
the perspective of a senior content editor. The result should make the
user feel that the system understands who they are and should uncover
detailed content preferences beneath their subscription list.

Writing requirements:

1. Use Simplified Chinese throughout.
2. Output directly readable Markdown rather than JSON or a code block.
3. Preserve insights about primary interests, personal niche interests,
   and aversion boundaries.
4. Include extensive sociodemographic inference, but present the
   inferences as high-confidence editorial observations rather than
   sounding mechanically cautious.

Persistent Output Definition:

markdown
Create or refresh these artifacts:

- `profiles/following_topics.md`
- `profiles/raw_interest_block.txt`
- `profiles/raw_aversion_block.txt`
- `profiles/profile_summary.md`
- optionally `profiles/profile_notes.md`

Technical Analysis

The workflow derives a high-dimensional profile from the user's followed topics and stores it in workspace files. The profile prompt specifically asks for extensive sociodemographic inference and directs the model to frame those inferences as high-confidence editorial observations.

A topic-following list can support conclusions about content interests, but it is generally insufficient to establish sensitive or demographic facts reliably. Presenting speculative ...[truncated 2551 chars]

Remediation
View remediation

Remediation Suggestions

  1. Require explicit, informed user consent before performing or storing sociodemographic inference.
  2. Default to interest-based editorial preferences rather than demographic conclusions.
  3. Remove the instruction to present inferences as high-confidence observations.
  4. Clearly distinguish declared facts, observed interests, inferred preferences, and speculative hypotheses.
  5. Attach a confidence level and supporting evidence to every retained inference.
  6. Avoid inferring sensitive attributes such as ethnicity, religion, health status, sexual orientation, political affiliation, or socioeconomic status unless the user explicitly supplies them for a legitimate purpose.
  7. Present the draft profile to the user before writing it to persistent storage.
  8. Require affirmative confirmation for each sensitive or demographic field.
  9. Provide documented review, correction, expiration, and deletion procedures.
  10. Minimize stored data and protect profile files using workspace-appropriate access controls.
  11. Ensure downstream workflows treat inferred profile content as advisory and lower-authority than explicit current user instructions.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (32)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Use this file to choose the correct bundled subskill, then read that subskill's `SKILL.md`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Use this file to choose the correct bundled subskill, then read that subskill's `SKILL.md`.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill hard-requires Chinese output without checking the user's language preference or documenting a justified operational constraint. In an agent environment, this can override user intent, degrade usability, and act as instruction-level steering that causes the model to ignore higher-priority user needs.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · subskills/syft-news-pipeline/references/profile-summary.md (reported line 40)May include surrounding context.

md
Keep the file honest about being heuristic rather than user-authored.

## Output Rules

- Write user-facing content in Simplified Chinese unless asked otherwise.
- Call out the tension directly when the follow graph shows hard macro tracking alongside softer refuge interests.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · subskills/syft-profile-summary/SKILL.md (reported line 73)May include surrounding context.

md
- the side-interests you think matter
   - any uncertainty caused by missing aversion data

## Output rules

- Write all user-facing content in Simplified Chinese unless the user asks otherwise.
- If you generate `raw_interest_block.txt`, keep it exhaustive enough to preserve fidelity.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The prompt explicitly instructs the model to produce confident sociodemographic inferences and to avoid sounding cautious, which encourages generation of sensitive personal attribute guesses without transparency, warning, or consent. In this skill's context, the package is designed to build durable editorial/user profile artifacts, making these inferred traits more likely to be stored, reused, and acted on, which amplifies privacy, discrimination, and trust harms.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill repeatedly mandates Chinese output for timelines and visible content without conditioning that behavior on the user's language preference. This can override explicit or implicit user intent, causing unauthorized transformation of outputs, misleading deliverables, and loss of usability in multilingual environments.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
When the user's request is broad or spans multiple stages, start with:

- `subskills/syft-news-pipeline/SKILL.md`

That bundled skill is the orchestration entry point and contains the top-level workflow map.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
Read:

- `subskills/syft-profile-summary/SKILL.md`

Use when the task is to turn `syft following` into reusable profile artifacts such as:

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
Read:

- `subskills/syft-guidance-rulebook/SKILL.md`

Use when the user expresses a durable preference or editorial rule that should persist across future runs.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
Read:

- `subskills/syft-daily-briefing/SKILL.md`

Use when the user wants a personalized daily edition from Syft CLI signals.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
Read:

- `subskills/syft-storyline-tree/SKILL.md`

Use when the user wants a relationship-first reading view with trunks, branches, and merged timelines.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
Read:

- `subskills/syft-storyline-backfill/SKILL.md`

Use when the user already has a storyline tree and wants one branch, one trunk, or the full tree extended with more chronology.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs the agent to default final user-facing deliverables to Simplified Chinese unless the user asks otherwise. This can override user expectations and cause unintended disclosure, confusion, or unsafe actionability if users rely on precise language and did not consent to a language switch. In this root skill, the issue is limited to presentation behavior rather than direct code execution or privilege abuse, so the impact is relatively low.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The activation text is broad enough to trigger on many ordinary requests for news summaries, which can cause the agent to invoke this skill outside its intended niche. That increases the chance of inappropriate workflow takeover, unnecessary command execution, and output shaping that does not match the user's actual request.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Line L20 states '全文使用简体中文', which forces a specific language for all output. Under the policy, language constraints are only acceptable when the skill offers user choice or the locale restriction is clearly documented and justified; neither is present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file contains a natural-language rule stating that all sections should read as natural edited Chinese. This imposes a specific language requirement with no indication that the user can choose another language, which matches the policy-violation criterion for forced language or locale.

Content

No source excerpt is available for this finding.

Persistent Context Injection

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

This skill is designed to persist user guidance across future sessions, which creates a persistent-context injection surface: once saved, instructions can silently influence later outputs beyond the original interaction. Although the skill includes a confirmation-first workflow, broad categories like 'filtering instructions' and 'future profile, briefing, and storyline work' can let overbroad, adversarial, or mistaken instructions become durable behavioral constraints.

Content

Scanner excerpt · subskills/syft-guidance-rulebook/SKILL.md (reported line 3)May include surrounding context.

md
---
name: syft-guidance-rulebook
description: Use when the user wants to capture long-lived preferences, editorial rules, branch preferences, or filtering instructions into a persistent rulebook in Codex or Claude Code without local helper scripts. Also use when the user wants a confirmation-first workflow before saving durable preferences.
---

# Syft Guidance Rulebook

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The instruction 'Use this skill when the user expresses something that may deserve long-term storage' is ambiguous and broad, with no clear boundary for when the skill should or should not activate. Although the manifest description is more specific, this line still lacks concrete trigger constraints or negative examples and could cause unintended invocation.

Content

No source excerpt is available for this finding.

Persistent Context Injection

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill injects content designed to persist in agent memory or context across interactions. Persistent injection can alter agent behavior long after the initial interaction.

Content

Scanner excerpt · subskills/syft-guidance-rulebook/references/rulebook-template.md (reported line 3)May include surrounding context.

md
# Rulebook Template

Use this if the workspace does not already have a persistent rulebook file.

## Suggested Markdown structure

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The instruction "Write final deliverables in Simplified Chinese unless the user asks otherwise" imposes a default language choice on users rather than offering a neutral default or explicit opt-in. The policy for this audit flags language or locale constraints unless the skill clearly offers user choice first or documents a justified region-specific requirement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill instructs the agent to create or refresh multiple files in the workspace, including reusing an existing profile directory, without requiring explicit user confirmation or a warning that local data will be modified. In an agent setting, silent writes can overwrite prior artifacts, create unexpected persistent state, and violate user expectations about when the tool is allowed to change files.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The instruction to write user-facing content in Simplified Chinese unless asked otherwise overrides the user's likely default language without consent. While not a code-execution issue, it can mislead, reduce usability, and cause the agent to produce outputs the user cannot readily review before those outputs are saved or acted upon.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction 'visible Chinese reads naturally' imposes a specific output language requirement in the skill guidance. This is a natural-language locale policy issue because the file does not offer user choice or explain a region-specific reason for forcing Chinese.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill directs the agent to persist sensitive preference inferences and raw following data into durable local artifacts without any consent check, minimization guidance, retention limit, or warning about the privacy implications. Even if the source is a normal syft following list, converting it into structured profile files increases sensitivity because it creates a reusable, higher-value dossier that may expose political views, interests, and inferred traits.

Content

No source excerpt is available for this finding.