Back to skill

Security audit

University Applications

Security checks for vulnerabilities and agentic risk

Overview

The skill is not malicious, but it needs review because its admissions reports can misstate official-source coverage and its HTML output handles collected data unsafely.

Install only if you are comfortable treating the generated admissions data as a draft, not an authoritative guide. Verify tuition, deadlines, requirements, and programme availability directly on official university pages, and be cautious opening or hosting generated HTML reports until the template escapes collected data and validates links.

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

Warning
Location
skill/output-templates/html-template.md:333
Finding

Stored Cross-Site Scripting Through Unescaped Admissions Data

Content
View full analysis
`

${p.name}

${p.uni} · ${p.faculty}
Degree ${p.degree}
Mode ${p.mode.split(/[&,]/).map(m => ''+m.trim()+'' ).join(' ')}
Duration${p.duration}
Tuition${p.tuitionTotal}
Deadline${p.deadlineMain}
IELTS${p.ielts}
TOEFL${p.toefl}
`).join(''); } ``` ### Techni ...[truncated 3501 chars]
Remediation
View remediation
`, `&`, U+2028, and U+2029. - Prefer loading serialized data from a non-executable `application/json` element and parsing its `textContent`. 4. **Add defense-in-depth browser controls** - Add a restrictive Content Security Policy that disallows inline event handlers and unexpected network destinations. - Avoid inline scripts where practical and use a nonce or hash if scripts must remain inline. - Restrict navigation and resource loading to expected HTTPS destinations. 5. **Add regression tests** - Test text fields with payloads such as ``, closing tags, quotes, and encoded markup. - Test URL fields with `javascript:`, `data:`, malformed URLs, credential-bearing URLs, and deceptive suffixes. - Verify that payloads are displayed only as literal text and never become executable DOM elements. - Apply the corrected implementation to both the reusable template and regenerated HTML artifacts. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (33)

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest says the skill collects admissions information for all 22 Hong Kong universities, including public and private institutions. This template instructs generated output to present 'Official data from 9 universities' and a stats card fixed at '9', which would misrepresent the skill’s actual claimed coverage and constrain outputs to a narrower scope.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The template materially conflicts with the skill's stated scope: it hardcodes coverage for only 9 universities while the skill metadata promises all 22 Hong Kong institutions. In a data-collection/reporting skill, this can systematically omit institutions and mislead users into treating an incomplete guide as comprehensive, undermining trust and potentially causing missed application opportunities.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The template hard-codes only 9 university sections and also states 'Universities: 9', which directly conflicts with the skill metadata claiming coverage of 22 Hong Kong institutions. In a data-collection skill, this creates a structural omission risk: the generated report can systematically exclude institutions while still appearing complete, leading users to make decisions based on incomplete official-information coverage.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The document repeatedly presents the content as sourced from official university websites, but the disclaimer states the data is based on AI training data instead of actual live collection. This creates a provenance-integrity failure: users may rely on inaccurate tuition, deadline, or admission requirements while believing the data was officially verified, which is especially risky for admissions decisions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README states that only official university websites may be used, but the allowed-domain rule whitelists only a subset of the institutions named elsewhere in the same document. In a prompt-driven skill, this kind of contradictory source-validation logic can cause the agent to reject legitimate official sites or apply inconsistent trust checks, increasing the chance of bad data handling and unsafe manual overrides.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README instructs users to invoke the skill with broad natural-language requests like '直接用自然语言告诉 AI 助手你想做什么即可', without requiring an explicit skill name, confirmation step, or scoped trigger syntax. This can cause accidental activation during ordinary conversation, leading the agent to begin a large data-collection workflow, browse many sites, and generate files when the user did not clearly intend to run this skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The quick-reference table lists many generic phrases such as '输出为Excel格式', '比较各校学费', and '显示[学科领域]的项目' as valid triggers, but these phrases are common in unrelated contexts. In an agent environment with automatic skill selection, such overbroad triggers increase the chance of unintended skill routing, causing context confusion, unnecessary external access, or incorrect output generation based on the wrong workflow.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

For a markdown skill, trigger definitions should be specific enough to avoid unintended invocation. The phrase '用户说"收集所有香港大学硕士招生信息"或类似指令' leaves the trigger scope open-ended and provides no negative examples or boundaries for what counts as similar.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill explicitly instructs the agent to generate and save multiple output files in fixed locations, but it does not require user confirmation, disclose overwrite behavior, or constrain writes to a safe sandbox. In an agent environment with filesystem access, this can cause unintended local file creation or clobber existing files, especially because the workflow normalizes file output as an automatic step.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest says the skill collects admissions information for all 22 Hong Kong universities, including public and private institutions. This sample file's explanatory text states that in real execution, all programs from all 9 universities would be collected, which directly conflicts with the declared scope and can mislead developers about the intended behavior.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The template asserts that all information is sourced exclusively from official university websites, yet it embeds fixed admissions requirement values that appear as factual content rather than clearly marked placeholders. In this context, users may rely on stale or unverified requirements as official, creating an integrity issue that can propagate inaccurate admissions guidance.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The HTML template explicitly sets lang="en" and uses an English-only title, while the surrounding template content is also written to produce English output. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation unless the constraint is justified or optional.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The template explicitly states '9 Universities' even though the skill metadata says it should cover 22 Hong Kong institutions. This can systematically mislead users about dataset completeness and cause the generated report to omit or underrepresent institutions, undermining trust in an admissions guide that claims official, comprehensive coverage.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Hard-coding '9' in the executive summary conflicts with the declared requirement to cover all 22 institutions, creating a persistent integrity issue in generated outputs. In this context, users may make application decisions based on incomplete or falsely summarized official-data reporting.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The cover template markets the output as a 'Comprehensive Collection from Official Sources' while embedding a fixed 'Universities: 9' count, creating a misleading completeness claim. This can cause users to trust the report as exhaustive even when a majority of intended institutions are omitted, which is especially problematic for admissions research where missing schools materially affects outcomes.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file is entirely presented in Chinese, including headings, field labels, and disclaimers, with no indication that users can request another language. Under the policy rule for natural-language violations, forcing a specific language without user opt-in is a reportable issue unless the locale constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The disclaimer states the information was generated 'based on training data from official university websites,' which conflicts with the document's stronger claims of a current 2026 collection from official sources only. In an admissions guidance skill, this can mislead users into trusting stale or hallucinated details such as deadlines, fees, and requirements, causing real-world decision harm even though it is not code-execution related.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest says the skill collects admissions information for all 22 Hong Kong institutions, including programme details and official links, and outputs it in multiple formats. In this HTML output, the subtitle claims a "Comprehensive Guide" and official-source coverage, but detailed per-programme fields are only fully shown for HKU while many other universities are reduced to brief summaries, and some entries omit the detailed fields and official programme links promised by the manifest.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill lists an official admissions source at registry.hsu.edu.hk, but the URL validation rule only allows https://*.hsu.edu.hk/**. Because registry.hsu.edu.hk is outside that pattern, an agent following the rule may reject a legitimate official source or be forced to ignore one of the instructions, creating inconsistent behavior and potential data integrity issues in collection and validation.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list includes broad natural-language phrases such as 'web', 'print', 'document', and especially 'all/everything' that could be matched in ordinary conversation rather than clear conversion commands. In an agent setting, this can cause unintended workflow invocation, producing outputs the user did not explicitly request and potentially exposing or transforming previously collected data inappropriately.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The format mapping uses ambiguous aliases that are not sufficiently scoped to formatting requests, including generic terms like 'document', 'web', 'website', 'print', 'all', and 'everything'. These aliases increase the risk that unrelated user input is misclassified as a format-conversion request, leading to unintended execution paths or overbroad output generation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README states that users can interact with the skill in English or Chinese, which constrains supported languages to those two. Under the policy, language restrictions should either offer user choice more broadly or be clearly justified as region-specific; this file does not explain why only these languages are permitted.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The README states 'Covered Universities & Institutions (22 Total)', yet the skill structure lists files numbered 01 through 23 under skill/universities/. Although two appear to be redirects, the documentation does not clearly reconcile this count, creating an active inconsistency between the stated structure and what is described.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The prompt instructs the assistant to act specifically as a 'Hong Kong University Admissions Data Specialist' and to collect information only from Hong Kong university websites. This hard-codes a locale-specific scope in the skill text without presenting any user opt-in or alternative language/locale choice.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document is labeled as an "Excel Output Template (CSV Format)" and says to "Generate a CSV" on L01 and L05, but L09 explicitly requires tab-separated values instead of comma-separated values. This is an active contradiction in the file's own documentation about the intended output format.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.