Back to skill

Security audit

uni-course-scheduler

Security checks across malware telemetry and agentic risk

Overview

This is a coherent course-planning skill with disclosed web lookup and optional paid cloud use, with supply-chain precautions the user should apply before installing extras.

Before installing optional cloud tooling, use a virtual environment, pin exact package versions with hashes where possible, verify the LoomLoom release tag and checksum yourself, and never paste tokens into chat. Use cloud mode only after reviewing the fields being sent and confirming the fee.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:29
Finding
Mutable and Incompletely Verified Third-Party Installation Sources<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:29-32`; related installation guidance in `references/loomloom-setup.md:43-49` and `references/loomloom-setup.md:66-70` **Vulnerability Type**: Supply-chain integrity weakness **Risk Level**: Medium ### Vulnerable Code and Instructions `SKILL.md:29-32`: ```markdown ## Prerequisites - Python 3.10+ with `openpyxl` and `icalendar` packages - If missing, install pinned versions (reviewed, reproducible): `pip install "openpyxl>=3.1,<3.2" "icalendar>=5,<6" "pytz==2024.2"` Prefer a hash-locked `requirements.txt` + `pip install --require-hashes` for production use. ``` `references/loomloom-setup.md:43-49`: ```markdown > Please install LoomLoom in this project: use the official release install script > (never `curl | bash` from an untrusted source). Pin to a specific reviewed release > tag & commit, and verify the artifact checksum after install (see below). > Server: 【the server of your chosen platform, see table above】 > After installing, run `doctor` once to check everything works. ``` `references/loomloom-setup.md:66-70`: ```markdown 2. Clone a specific reviewed tag & commit (NOT the live `main` branch), then verify the release checksum/signature before use: ```bash git clone --branch <reviewed-tag> --depth 1 https://gitee.com/cogfoundry/loomloom.git cd loomloom && cat <published checksum> && <verify> # e.g. pip/installer integrity ``` ``` ### Technical Analysis The Python dependencies are not fully pinned: `openpyxl` and `icalendar` use version ranges, and none of the packages are authenticated with package hashes. A future package release satisfying those ranges can therefore be selected without any corresponding change to the reviewed Skill. This conflicts with the instructions' description of the installation as “pinned” and “reproducible.” The LoomLoom installation procedure recommends sound controls but does not implement them. It supplies placeholders such as `<reviewed ...[truncated 2283 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace version ranges with exact reviewed versions, for example: ```text openpyxl==3.1.x icalendar==5.x.y pytz==2024.2 ``` 2. Ship a reviewed lock file containing SHA-256 hashes for every direct and transitive dependency, and require: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Document the supported Python and package-index configuration. For higher-assurance deployments, use a controlled package mirror and disable unapproved extra indexes. 4. Replace all LoomLoom placeholders with: - A fixed release version. - An immutable commit identifier. - A fixed HTTPS artifact URL. - The expected SHA-256 digest or verified signing identity. - A concrete verification command that aborts on failure. 5. Do not ask an agent to discover or choose an installer dynamically. If an installation script is unavoidable, download it as a file, verify its digest or signature, review it, and execute only the verified artifact. 6. Run installation and the CLI without administrative privileges, preferably in an isolated virtual environment or container with only the required project directory mounted. 7. Keep cloud tokens out of the installation environment where practical. Use interactive credential storage or narrowly scoped credentials, and rotate any token exposed to a compromised dependency. ]]>

SkillSpector

By NVIDIA
Vulnerability Patterns
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The interaction flow directs the agent to search university course catalogs and academic calendars online, which expands behavior beyond the stated skill constraints that cloud standard mode requires catalog text input. This creates an unauthorized data-acquisition path and can lead the agent to fetch untrusted external content, increasing privacy, integrity, and scope-creep risks.

Description-Behavior Mismatch

Medium
Confidence
90% confidence
Finding
The local-mode instructions tell the agent to analyze course catalogs using web search, conflicting with the skill metadata that describes local mode as a personal lightweight local workflow. That mismatch can cause agents to access external resources unexpectedly, undermining user expectations about locality and potentially exposing user context or causing decisions based on unverified remote content.

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.