Back to skill

Security audit

Press Release Writer

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a normal press-release writing guide, but it automatically delegates drafts to an unspecified “humanizer” skill, which is risky for confidential announcements.

Review before installing if you handle embargoed launches, earnings, incidents, personal contact details, or other confidential PR material. The main writing guidance is coherent, but the skill should not pass sensitive drafts to an unspecified humanizer unless you know exactly which dependency will run and what data it can access.

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 (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:101
Finding

Unpinned and Unverified Humanizer Skill Invocation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 101-106
Vulnerability Type: Unverified inter-skill dependency
Risk Level: Medium

Vulnerable instruction:

markdown
### Step 6b: Humanize

Invoke a humanizer skill (e.g. "humanize", "humanizer", "de-slop", "natural writing check", "AI detection cleanup", "rewrite like a human") to remove AI-generated patterns — inflated language, predictable sentence rhythm, hollow transitions. Journalists spot AI copy immediately and discard it.

**Preserve the headline and lead.** The headline (Step 4) and lead paragraph (5W1H in 25-35 words) were deliberately crafted for news impact. Instruct the humanizer to leave them intact — loosening them for "naturalness" breaks the inverted pyramid and the word-count constraint.

Technical Analysis

The skill requires the agent to invoke another skill using several generic names, but it does not identify a trusted provider, immutable version, package hash, or verified local path. This creates an ambiguous dependency-resolution boundary: whichever installed or discoverable component matches a suggested name may receive the generated press release and execute instructions within the current agent session.

A malicious, compromised, or name-colliding humanizer skill could return instruction-hijacking content, alter facts in the release, extract supplied embargoed or personal information, or induce additional tool calls. The risk is amplified because SKILL.md line 13 permits the Agent tool, which can enable delegation to another agent or skill implementation.

No malicious humanizer implementation, remote payload, installation command, executable script, persistence mechanism, or confirmed data-exfiltration endpoint is present in this repository. The finding concerns unsafe and unpinned trust in an external inter-skill dependency.

Attack Path

  1. An attacker publishes or installs a component under a generic suggested ...[truncated 1826 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the mandatory external humanizer invocation and perform the style review directly within the current skill whenever possible.
  2. If delegation is necessary, identify one explicitly trusted dependency using an exact package or skill identifier, trusted publisher, immutable version, and integrity hash.
  3. Do not resolve dependencies from generic aliases such as humanizer, humanize, or de-slop.
  4. Require explicit user approval before sending confidential, embargoed, security-related, financial, or personally identifiable information to another skill.
  5. Pass only the minimum required text. Redact media contacts, private URLs, credentials, unpublished figures, and unnecessary source documents.
  6. Run the delegated skill in a restricted context with no network, file-write, shell, memory, or additional agent permissions unless each capability is specifically required.
  7. Treat delegated output strictly as untrusted data. Do not execute embedded instructions or tool requests, and validate that facts, quotations, figures, headline, and lead remain unchanged.
  8. Maintain an allowlist of reviewed inter-skill dependencies and fail closed when the approved implementation is unavailable.
  9. Record the resolved dependency identity and version in audit logs so substitutions can be detected.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger description is unusually broad and includes vague phrases like 'I need to announce something' and 'how do I tell the press about X,' which can match many generic communication requests outside the narrow scope of press-release drafting. In an agentic environment, this can cause the wrong skill to activate, leading to overreach, unintended file/tool use, or interference with a more appropriate skill handling the user’s request.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This eval explicitly requires the press release to be written in French and further enforces French-specific formatting conventions. Because the policy applies to all file types and forbids forcing a specific language without user opt-in, this is a natural-language locale constraint presented as mandatory rather than optional.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This eval requires the output to be in German and imposes German-media formatting expectations. That forces a specific language/locale in the instructions without any indication of user selection or a clearly documented justified regional-only constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

Normalizing 'self-censorship on sensitive topics' in China guidance is risky because it can steer the assistant toward suppressing or shaping content to satisfy political sensitivities rather than user intent, factual accuracy, or neutral compliance guidance. In a writing skill, this creates a pathway for hidden editorial bias and region-based content suppression, especially if the model treats it as an instruction instead of a description of media conditions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The document states "British English" as a required convention for UK/Ireland releases, which is a natural-language locale constraint. Under the policy, forcing a specific language or locale without user choice or an explicit justified scope can be a violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The line says local language is strongly preferred for domestic media, which functions as a locale requirement. Because the document does not frame this as user-selectable or explicitly opt-in, it may conflict with the language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

This instruction says local language is strongly preferred for domestic media, imposing a locale expectation in natural language. The policy requires either user choice or a clearly documented justification for such language constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The text directs use of Spanish for most markets and Portuguese for Brazil, including a "Do NOT use Spanish" instruction. This is a language policy constraint stated as a requirement rather than as a user-selected option or a clearly scoped compliance rule.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This line prescribes Arabic plus English bilingual releases for Middle East business and financial news. Because it sets a default language requirement without an explicit opt-in or user preference mechanism, it may violate the locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The line directs use of local language plus Russian for most Central Asian markets, which is a locale constraint. The policy allows such constraints when documented and justified, but here it is presented as a general rule rather than a user-driven choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The text says local language is required for domestic media in Thailand, Vietnam, and Indonesia, creating a mandatory locale rule. Without explicit user opt-in or a clearer scoped justification, this may violate the language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

Line L19 uses a Europe-specific example, "EUR 12M," as a prescriptive model for how claims should be written. In a general writing-principles file, this can function as a locale preference without offering user choice or explaining that the guidance is intended only for a European context.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.