Back to skill

Security audit

IRS Strategy Development Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent for IRS trading-strategy development, but it publishes reusable database and web-service credentials and gives under-scoped setup/live-trading guidance.

Install only in an authorized internal environment after the publisher removes and rotates the exposed credentials, replaces them with secure secret-retrieval instructions, pins or verifies the private NuGet template version, and adds explicit confirmation guidance before running trader projects or account-affecting order examples.

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

T09 · Insecure Skill Coding Practices

Error
Location
references/data.md:21
Finding

Plaintext Database and Web-Service Credentials Embedded in Documentation

Content
View full analysis

Vulnerability Details

File Locations:

  • references/data.md:21
  • references/data.md:370
  • references/jydb.md:4-6
  • SKILL.md:342

Vulnerability Type: Hardcoded credentials and insecure database transport configuration
Risk Level: High

Vulnerable Code

csharp
SqlHelperOptions.JYDBConnectionString = "Server=192.168.1.129;Database=JYDB;User Id=Traders;Password=abcd4321;Encrypt=false;TrustServerCertificate=True";

The documentation also publishes credentials for the external data-dictionary service:

text
https://dd.gildata.com/ (username: szsgdsjk01, password: gildata@123)

The SQL Server connection string is duplicated in references/jydb.md:4, while the data-dictionary credentials are duplicated in SKILL.md:342, references/data.md:370, and references/jydb.md:6.

Technical Analysis

The project embeds reusable credentials directly in documentation that is distributed with the Skill. Anyone who can obtain the package can recover the SQL Server username and password without additional access or decryption.

The database configuration also sets Encrypt=false, disabling SQL Server transport encryption. TrustServerCertificate=True further establishes an unsafe configuration pattern because it would bypass normal certificate validation if encryption were later enabled without correcting that option.

The database uses a private address, so exploitation requires access to the relevant internal network, a connected host, a VPN, an exposed forwarding service, or another network foothold. The external data-dictionary credentials can potentially be tested from any network where the service is reachable.

Attack Path

  1. An attacker downloads or otherwise obtains the Skill package.
  2. The attacker searches its documentation and extracts:
    • The SQL Server host, database name, username, and password.
    • The online data-dictionary username and password.
  3. If the attacker has network reachability to 192.168.1.129, ...[truncated 1208 chars]
Remediation
View remediation

Remediation Suggestions

  1. Immediately revoke and rotate both published credential sets.
  2. Review authentication logs for the SQL Server and data-dictionary account for unexpected access.
  3. Remove all passwords from SKILL.md, references/data.md, references/jydb.md, package archives, and repository history.
  4. Replace embedded connection strings with environment-based configuration or a managed secret store:
    csharp
    SqlHelperOptions.JYDBConnectionString =
        Environment.GetEnvironmentVariable("JYDB_CONNECTION_STRING")
        ?? throw new InvalidOperationException("JYDB_CONNECTION_STRING is not configured.");
    
  5. Configure encrypted SQL Server transport with Encrypt=true and TrustServerCertificate=false.
  6. Deploy a certificate whose identity and trust chain can be validated by clients.
  7. Replace shared accounts with individual or workload-specific credentials.
  8. Apply least-privilege permissions, restricting each account to only the required schemas and operations.
  9. Use short-lived credentials or centrally managed credential rotation where supported.
  10. Add automated secret scanning to package and release pipelines to prevent future publication of passwords and connection strings.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:34
Finding

Unpinned Forced Package Installation from a Private NuGet Feed

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:34
Vulnerability Type: Unpinned dependency installation from a mutable external source
Risk Level: Medium

Vulnerable Code

shell
dotnet new install SGD.InvestorResearchSystem --nuget-source https://nuget.shengguanda.com/v3/index.json --force

Technical Analysis

The Skill instructs users to install SGD.InvestorResearchSystem without specifying an audited version. Consequently, the installed content is determined by the latest package available from the private feed when the command is executed and can differ from what existed when this Skill was reviewed.

The --force option allows an existing template package to be replaced or reinstalled without the user first resolving version or source conflicts. The installed template may generate executable C# projects that users subsequently restore, build, backtest, or run in a live trading environment.

No evidence shows that the current package or feed is malicious. The vulnerability is the lack of version pinning, integrity verification, and provenance controls in the installation guidance. Exploitation therefore depends on compromise or unauthorized modification of the private feed, package publisher, DNS or network path, or package identity.

Attack Path

  1. An attacker compromises the private NuGet feed, a publisher account, or another component capable of changing the package served under SGD.InvestorResearchSystem.
  2. The attacker publishes a modified version containing malicious generated files, build targets, package references, or executable application code.
  3. A user follows the Skill instruction and installs the package without a version constraint.
  4. The --force option replaces or overrides an existing template registration where applicable.
  5. The user generates a strategy project from the compromised template.
  6. The malicious content executes when the generated project is restored, built, or run, subject to the ...[truncated 854 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin installation to a specific reviewed package version:
    shell
    dotnet new install SGD.InvestorResearchSystem::<AUDITED_VERSION> --nuget-source https://nuget.shengguanda.com/v3/index.json
    
  2. Remove --force from the default command. Document it only as an exceptional recovery option after the user verifies the installed source and version.
  3. Publish expected package hashes or signed-package verification instructions.
  4. Require authenticated publishing, multifactor authentication, and tightly scoped publisher identities for the private feed.
  5. Enable immutable package versions and prevent silent replacement of existing artifacts.
  6. Audit template contents, generated project files, transitive package references, and MSBuild targets before approving each release.
  7. Separate development, backtesting, and production trading credentials so generated projects do not automatically inherit production access.
  8. Build and test new template versions in an isolated environment before permitting their use on systems connected to live trading accounts.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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 (331)

Ssd 3

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

This line includes what appears to be a username and password in prose for accessing an online data dictionary. Although framed as helpful documentation rather than code, it still instructs readers to use and disclose sensitive credentials, creating a clear data-leak risk conveyed through natural language.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This markdown file includes a full SQL Server connection string with username and password in plaintext. The surrounding documentation does not warn readers that it contains sensitive credentials or advise secure handling, which is a privacy and system-integrity risk under the markdown warning criteria.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest frames this skill as providing knowledge for developing IRS trading strategies, but this reference file exposes a concrete SQL Server username and password. Supplying operational credentials is not an obvious requirement for code-writing assistance and creates an unjustified sensitive-access capability within the skill's knowledge base.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The manifest describes a skill for writing and debugging IRS framework strategies, not for granting access to external web services. Publishing a live URL together with username and password extends the skill into credential disclosure and external-resource access beyond its stated purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The file provides a URL together with a username and password for an online system, but gives no warning that this is sensitive access information. For markdown files, disclosing credentials or access details affecting privacy or system integrity without an explicit warning is a clear missing-user-warning issue.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest scopes this skill to providing framework knowledge for IRS/CommonStrategy development, but this file includes a live SQL Server address, database connection string with username/password, and separate website credentials. Supplying operational credentials is not an obvious requirement for explaining or generating trading-strategy code and introduces an unjustified capability to access external data systems.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The document directly lists an internal database host, connection string with username and password, and separate website login credentials. For markdown files, SQP-2 applies when the description omits warnings about behaviors affecting privacy or system integrity; here, sensitive access details are presented with no caution about credential sensitivity, authorized use, or secure handling.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language instructions throughout the file are presented in Chinese, and the skill does not indicate that users may choose another language or that Chinese is required for a specific compliance or regional reason. This can violate a language/locale policy that forbids forcing a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
79% confidence
Finding

These lines instruct the agent to modify project startup parameters and start backtest or trader projects, which can affect system state and, in the case of the trader project, may interact with simulated or live trading environments. The markdown does not provide any caution, confirmation expectation, or disclosure about these actions' operational impact.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file includes multiple strategy examples that submit buy/sell, pair, and TWAP orders against trading accounts, including scheduled execution. The descriptions and surrounding text present these as examples but do not warn that using or adapting them can place real market orders and materially affect account positions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest describes a skill for writing, reviewing, and debugging IRS framework trading strategies, but this document primarily serves as a comprehensive access guide to the JYDB database, including connection details and raw SQL/ORM query examples. That is a materially broader operational behavior than framework-specific strategy assistance alone.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This JSON schema metadata includes natural-language labels and remarks in Chinese, beginning with field descriptions such as "截止日期" and continuing throughout the file. Under the policy, forcing a specific language without user opt-in or documented justification is a natural-language locale violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This manifest-style JSON contains user-facing natural-language fields such as "columnChiName" and "remark" in Chinese, but nowhere in the file indicates that the skill is region-specific or that users can opt into this locale. Under the stated policy, forcing a specific language without opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JSON metadata includes user-facing descriptive text entirely in Chinese, such as the Chinese column label and remark text, without indicating that the skill is China-specific or offering any language/locale opt-in. Under the stated policy, forcing a specific language without user choice is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The long descriptive remarks for classification codes are natural-language metadata intended for human interpretation, but they are provided only in Chinese. Because the file does not state that it is exclusively for a Chinese locale or otherwise justify the language restriction, this conflicts with the language/locale policy criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This JSON manifest-like file contains user-facing/descriptive natural-language fields such as "columnChiName" and "remark" exclusively in Chinese. Per the policy, forcing a specific language without user opt-in or a documented justification is a natural-language locale violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JSON file includes user-facing natural-language content such as column labels and remarks entirely in Chinese, with no indication that the skill is region-specific or that users can opt into this locale. Under the policy, forcing a specific language without user choice or justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This JSON manifest-like file contains user-facing natural-language fields such as columnChiName and remark entirely in Chinese. Under the stated policy, forcing a specific language without user opt-in or a documented region-specific justification is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This JSON manifest-style reference file includes user-facing natural-language content in Chinese, such as column labels and remarks, but provides no indication that the skill is China-specific or that users can choose another language. Under the policy, forcing a specific language without opt-in is a natural-language locale violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JSON manifest-like file includes user-facing descriptive text in Chinese, such as the column display names and remarks, with no indication that other languages are supported. Per the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This JSON manifest-like file includes multiple natural-language fields such as columnChiName and remark written exclusively in Chinese, with no indication that the skill is region-specific or that users may choose another language. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern applicable to all file types.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This JSON manifest-style file contains multiple human-readable fields such as columnChiName and remark written in Chinese, with no indication that the skill is intentionally region-specific or that users may choose another language. Under the policy rule, forcing a specific language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This JSON manifest-like file includes user-facing natural-language content such as column labels and remarks in Chinese (for example, "信息来源"), and similar localized text appears throughout the file. Under the policy rule, forcing a specific language or locale without user choice or an explicit documented justification is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This JSON manifest-like file contains user-facing descriptive text in Chinese, such as the remark at L018, with no indication that the locale is optional or region-specific. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.