Back to skill

Security audit

Thesis Helper

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a thesis-template helper, but it also ships an under-disclosed local logging/data script and a shell-input weakness that users should review before installing.

Review this before installing. The thesis templates themselves are local and mostly purpose-aligned, with no API keys or network behavior found, but the package also contains an unrelated local data/history logger and unclear command binding. Avoid passing untrusted values to the defense command until the bc input is validated or replaced with shell arithmetic.

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/thesis.sh:398
Finding

OS Command Injection Through Unsanitized GNU bc Input

Content
View full analysis
Remediation
View remediation
&2 return 1 fi if (( duration < 1 || duration > 1440 )); then printf 'Error: duration is outside the permitted range.\n' >&2 return 1 fi local method_minutes=$((duration * 40 / 100)) local result_minutes=$((duration * 25 / 100)) # Use $method_minutes and $result_minutes in the generated table. } ``` Additional hardening measures: 1. Replace `bc` with Bash integer arithmetic because fractional precision is not required by the existing `scale=0` expressions. 2. Validate input before passing it to any interpreter, regardless of shell quoting. 3. Apply explicit minimum and maximum bounds to prevent unreasonable values and arithmetic edge cases. 4. Avoid reconstructing and reparsing all arguments through `$*`, `sed`, and `IFS`; pass positional arguments directly to preserve clear trust boundaries. 5. Add regression tests covering newlines, shell metacharacters, negative values, decimal values, alphabetic input, empty input, and excessively large integers. 6. If `bc` must remain in use, pass only values that have already matched a strict numeric allowlist and disable or avoid implementations with shell-escape extensions where possible. ]]>
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 (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill claims to be a thesis-writing assistant, but the documented behavior reportedly maps to generic record management, persistent local storage, and command history logging unrelated to the stated purpose. This kind of description-behavior mismatch is dangerous because it can mislead users into granting trust to a skill that performs undisclosed local data collection or storage, increasing the risk of privacy violations and misuse.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script's implemented behavior is materially different from the declared thesis-writing functionality: it acts as a generic local logger/list manager with add, search, export, and history logging features. This mismatch is dangerous because users, reviewers, or automation may grant the skill broader trust based on its academic-assistant description, while the code quietly performs unrelated local data collection and persistence.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Broad invocation guidance without clear activation boundaries can cause the skill to be triggered in contexts the user did not intend, especially when common words or generic help flows are used. That can lead to unintended execution, confusing behavior, or accidental exposure of user content to the skill’s routines.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation and branding present the tool as a thesis helper, but the exposed commands and help text describe only a generic utility tool with no thesis-specific functions. Misleading documentation increases the risk of social-engineering-style trust abuse, where users invoke or install the skill under false assumptions about what it does and what data it may handle.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This shell script presents itself as a general-purpose thesis tool, but its title, command descriptions, and generated content are primarily in Chinese. Because it does not offer an opt-in language selection or clearly scope itself as a China-only or Chinese-language skill, it creates a language/locale policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The manifest description and primary documentation are led in Chinese and frame the skill as a Chinese-language thesis-writing assistant, while only partially duplicating content in English. This may constitute a language/locale policy issue because the skill does not explicitly state that users can choose their preferred language or locale.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The help/documentation says the defense command includes '20个常见问题' and '20+常见问题', but the actual generated list in generate_defense is numbered through 20 with several grouped sections and additional surrounding guidance, making the documentation internally inconsistent about the exact content. This is a doc-intent mismatch rather than a security-sensitive behavior change, but it is an active contradiction in the skill's stated behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The tips section and thesis guidance are written primarily in Chinese, which can impose a specific language/locale on users without any stated opt-in or alternative. The policy allows locale constraints when explicitly justified or when users are given a choice, neither of which appears here.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.