Back to skill

Security audit

Korean Holiday CLI

Security checks for vulnerabilities and agentic risk

Overview

This is a focused local tool for Korean holiday and business-day date calculations, with no hidden access or persistence found.

Reasonable to install for Korean holiday and scheduling calculations. For more controlled environments, install in a virtual environment and consider pinning or locking the two Python dependencies before use.

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
scripts/requirements.txt:1
Finding

Unbounded Third-Party Dependency Versions

Content
View full analysis

Vulnerability Details

File Location: scripts/requirements.txt, lines 1–2
Vulnerability Type: Unpinned third-party dependencies without integrity verification
Risk Level: Medium

Vulnerable Code

text
holidays>=0.52
korean-lunar-calendar>=0.3.1

The dependencies are installed through the command documented in SKILL.md and README.md:

bash
pip install -r scripts/requirements.txt

Technical Analysis

Both dependencies use open-ended minimum-version constraints. Consequently, the installation process can retrieve any future release that satisfies the minimum version, rather than a specific release reviewed with this project. The requirements file also lacks cryptographic hashes for package artifacts.

The package names are consistent with the packages described in the documentation, and the audit found no evidence of typosquatting, dependency confusion, or a currently malicious package. Nevertheless, the dependency policy creates a supply-chain exposure and makes installations non-reproducible. A future compromised release, malicious maintainer update, or unexpected breaking change could be installed automatically. Python packages may execute build or installation logic during installation, and their code is imported at runtime by scripts/kr_holiday.py.

Attack Path

  1. An attacker compromises a maintainer account, release process, or distribution artifact for one of the declared packages.
  2. The attacker publishes a new package version satisfying holidays>=0.52 or korean-lunar-calendar>=0.3.1.
  3. A user follows the documented installation command.
  4. pip resolves the open-ended constraint to the attacker-controlled release.
  5. Malicious package logic executes during installation or when scripts/kr_holiday.py imports and uses the dependency.

Impact Assessment

Malicious dependency code could execute with the privileges of the user or automation acc ...[truncated 517 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace open-ended constraints with exact versions that have been reviewed:
    text
    holidays==<reviewed-version>
    korean-lunar-calendar==<reviewed-version>
    
  2. Generate and record SHA-256 hashes for every accepted distribution artifact.
  3. Install with hash enforcement:
    bash
    pip install --require-hashes -r scripts/requirements.txt
    
  4. Use a lock-file workflow that also pins and hashes transitive dependencies.
  5. Prefer vetted binary wheels where appropriate and restrict package indexes to approved HTTPS repositories.
  6. Review dependency updates deliberately, including changelogs, ownership changes, artifact provenance, and vulnerability advisories, before updating pins.
  7. Perform installation and execution in an isolated virtual environment or container under a least-privileged account.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The code hard-codes language="ko" when loading holiday names, which makes output language fixed to Korean for all users. This is a natural-language/locale policy concern because the skill does not offer user opt-in or a configurable locale despite otherwise general-purpose CLI behavior.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
90% confidence
Finding

The dependency is only lower-bounded (holidays>=0.52), which makes builds non-reproducible and allows installation of any newer release, including one that could introduce a malicious package version, a compromised upstream release, or breaking behavior. In a CLI skill that performs date and holiday calculations, this does not create direct code execution by itself, but it does increase software supply-chain risk during installation and deployment.

Content

Scanner excerpt · scripts/requirements.txt (reported line 1)May include surrounding context.

text
holidays>=0.52
korean-lunar-calendar>=0.3.1

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
90% confidence
Finding

The dependency is not pinned to an exact version (korean-lunar-calendar>=0.3.1), so future installs may resolve to different upstream releases than originally tested. This creates a supply-chain exposure where a compromised or incompatible later version could be pulled into the environment, which is especially relevant because this package directly affects the skill's core date-conversion logic.

Content

Scanner excerpt · scripts/requirements.txt (reported line 2)May include surrounding context.

text
holidays>=0.52
korean-lunar-calendar>=0.3.1

Static analysis

No suspicious patterns detected.