T09 · Insecure Skill Coding Practices
- Location
references/profile.md:4- Finding
Plaintext Personal Financial Profile Included in the Distributable Package
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill performs the advertised investment analysis, but it packages real personal financial and property details in plaintext and declares an apparently unrelated API credential requirement.
Review this carefully before installing. The skill appears to be a personal investment assistant, not a generic template: it exposes real income, debt, property, mortgage, ownership, and cloud document metadata to anyone who can read the package. Remove or replace those files with placeholders, verify whether GEMINI_API_KEY is actually needed, and install Python dependencies only from a trusted pinned environment. Treat outputs as rough analysis, not financial, tax, or legal advice.
references/profile.md:4Plaintext Personal Financial Profile Included in the Distributable Package
references/portfolio.md:7Exact Property, Ownership, Debt, and Cloud Resource Metadata Exposed in Plaintext
scripts/analyze_etf.py:7Unpinned yfinance Installation Guidance Creates Supply-Chain Risk
scripts/scan_properties.py:8Unpinned Beautiful Soup Installation Guidance Creates Supply-Chain Risk
This mismatch becomes security-relevant because the skill appears to rely on external market data access while not declaring corresponding permissions or resources. Hidden or undocumented external-data behavior reduces transparency and can cause the agent to make unexpected network calls outside the user's understanding or administrator review.
This mismatch becomes security-relevant because the skill appears to rely on external market data access while not declaring corresponding permissions or resources. Hidden or undocumented external-data behavior reduces transparency and can cause the agent to make unexpected network calls outside the user's understanding or administrator review.
This mismatch becomes security-relevant because the skill appears to rely on external market data access while not declaring corresponding permissions or resources. Hidden or undocumented external-data behavior reduces transparency and can cause the agent to make unexpected network calls outside the user's understanding or administrator review.
This mismatch becomes security-relevant because the skill appears to rely on external market data access while not declaring corresponding permissions or resources. Hidden or undocumented external-data behavior reduces transparency and can cause the agent to make unexpected network calls outside the user's understanding or administrator review.
This mismatch becomes security-relevant because the skill appears to rely on external market data access while not declaring corresponding permissions or resources. Hidden or undocumented external-data behavior reduces transparency and can cause the agent to make unexpected network calls outside the user's understanding or administrator review.
This file contains highly sensitive financial and real-estate information, including full property addresses, ownership splits, mortgage balances and rates, portfolio concentration, and cloud storage identifiers. In the context of an investment-analysis skill, storing this data in a plain markdown reference file increases the risk of privacy leakage, targeted fraud, social engineering, and unauthorized access attempts against linked resources.
The skill advertises workflows that invoke external scripts and likely network-backed data retrieval, but the manifest does not declare an explicit tool scope such as allowed tools or permissions. This creates a trust and review gap: the skill may access network-capable functionality without clear least-privilege boundaries, increasing the chance of unintended external requests or data exposure.
The manifest uses broad trigger phrases such as general investment-analysis terms, which can cause the skill to activate in contexts broader than the user intended. Overbroad activation can expose personal financial reference files or trigger external analysis workflows on unrelated conversations, increasing privacy and unintended-action risk.
Ambiguous workflow triggers increase the chance that the agent invokes scripts or uses sensitive financial context without sufficiently clear user intent. In a finance-oriented skill that references profile, portfolio, and LOC data, mistaken activation is more dangerous because it may process sensitive personal information or produce consequential advice unexpectedly.
The document includes a dedicated 'Quebec-Specific Notes' section and later prioritizes Quebec markets, which constrains the analysis to a specific locale. The file does not explicitly offer a user choice of region or state that the criteria are only for a Quebec-specific use case, creating a natural-language locale policy concern.
The script emits categorical investment verdicts such as BUY, INVESTIGATE, and PASS without any disclaimer that the model is simplified, uses hard-coded assumptions, and is not financial advice. In an investment-analysis skill, users may over-trust this output and make real financial decisions based on incomplete or inapplicable assumptions, creating meaningful risk of financial harm.
The Accept-Language header is hard-coded to "fr-CA,fr;q=0.9", which imposes a specific language/locale policy on all requests. The file does not offer a user opt-in, configuration option, or documentation explaining why this locale restriction is required.
The instruction to "Always end with ✅ BUY / ⚠️ INVESTIGATE / ❌ PASS" imposes a fixed response convention regardless of user preference or locale. While this is primarily a formatting rule, it functions as a forced output policy without any opt-in or flexibility.
This code performs a live network call via yfinance to fetch historical market data when no ETF return is provided. Although it is part of the calculation flow, there is no print/log/comment/docstring informing the user that running the script may contact an external service with the requested ticker.