Back to skill

Security audit

Chairman Daily Brief

Security checks for vulnerabilities and agentic risk

Overview

This skill looks like a real executive market briefing tool, but its current script generates realistic hardcoded financial data instead of verified live data.

Review carefully before installing or scheduling this skill. It does not show evidence of credential theft, destructive actions, or hidden code execution, but its generated financial briefings currently contain realistic hardcoded mock data that could be mistaken for live market intelligence. Do not rely on its reports for executive, trading, financing, investor-relations, or strategy decisions unless the data retrieval is replaced with verified live sources and failures are clearly surfaced.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/chairman_daily.mjs:106
Finding

Fabricated Market Intelligence Presented as Current Data

Content
View full analysis
({ symbol: symbol.trim(), name: symbol.trim(), // Should pa ...[truncated 2856 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (26)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node scripts/chairman_daily.mjs morning --symbol 600519.SS --company "Kweichow Moutai"

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill declares access to environment variables and outbound network usage but does not define an explicit tool/permission scope such as allowed-tools or permissions. That creates an authorization ambiguity: an agent runtime may grant broader capabilities than users expect, increasing the risk of unintended credential access or network actions if the skill implementation changes or is interpreted loosely.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The changelog explicitly states "Full English localization," which indicates the skill is fixed to a specific language. The file does not provide an option for users to choose another language or document a justified locale restriction, making this a natural-language policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The script sends query content to a remote API without clearly informing the user that their inputs and search terms are transmitted off-host. In this context, symbols, company names, competitor sets, or policy-related queries may be commercially sensitive, so undisclosed network transmission creates a data handling and confidentiality risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

Tool execution forwards parameters to an external service without obvious user-facing disclosure, which can expose user-supplied symbols, competitor lists, or other sensitive analytical inputs. For an executive briefing skill, such metadata may reveal monitoring priorities or strategic interests, making the privacy impact more serious than in a generic consumer app.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The function is presented as obtaining market data but actually returns hardcoded simulated values while implying production QVeris-backed behavior. In a chairman-focused financial briefing context, this can mislead users into making decisions on fabricated or stale information, creating integrity and trust risks even if it is not a classic exploit.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The company quote helper claims to retrieve quote data but returns fixed values for price, market cap, support, and resistance regardless of the requested symbol. In a financial decision-support tool for executives, fabricated quote data can directly distort risk assessment and strategy recommendations.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · scripts/chairman_daily.mjs (reported line 165)May include surrounding context.

js
async function getCompetitorNews(competitors) {
  if (!competitors) return [];
  
  const compList = competitors.split(',');
  return compList.map(symbol => ({
    symbol: symbol.trim(),
    name: symbol.trim(), // Should parse company name in production

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · scripts/chairman_daily.mjs (reported line 166)May include surrounding context.

js
async function getCompetitorNews(competitors) {
  if (!competitors) return [];
  
  const compList = competitors.split(',');
  return compList.map(symbol => ({
    symbol: symbol.trim(),
    name: symbol.trim(), // Should parse company name in production

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest describes a briefing skill that provides morning and evening executive summaries from aggregated QVeris data. This file also implements full local watchlist management, including adding, removing, and persisting holdings and competitors to disk, which is a separate portfolio-tracking capability rather than just briefing generation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This markdown file documents setting an API key and references external data sources, indicating the skill likely sends user-specified company/watchlist information to external services. The README does not include any warning about external network access, data sharing, or privacy implications, which is a missing user-facing disclosure under the markdown criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

The README hard-codes the timezone Asia/Shanghai in the cron setup and uses a chairman-focused regional market workflow, but does not state whether this locale is optional or required. Under the policy rule, forcing a specific locale without opt-in can be a natural-language policy concern unless explicitly documented and justified.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The manifest frames the skill as a data-aggregation briefing tool for chairmen, but does not mention handling credentials or environment-based secret access. Accessing process environment for an API key is an additional capability not justified by the stated purpose alone, especially since the description mentions data sources but not secret retrieval behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The report timestamp is formatted with toLocaleString('en-US', ...), which forces US English output regardless of user preference. The policy requires avoiding forced language or locale choices unless the user can opt in or the restriction is clearly justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.