T01 · Skill Instruction Hijacking
- Location
SKILL.md:4- Finding
Forced Skill Routing and Priority Takeover
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This converter appears purpose-built, but it deserves Review because it broadly forces routing and automatically relies on unpinned or unchecked proprietary downloads while handling potentially sensitive documents.
Review before installing, especially for private or regulated documents. Use a sandboxed virtual environment, pin and verify the ComPDFKitConversion package, pre-stage trusted license/model files where possible, restrict network access, and understand that trial usage is counted locally under the user's home directory.
SKILL.md:4Forced Skill Routing and Priority Takeover
SKILL.md:34Unpinned Third-Party SDK Installation and Execution
scripts/compdf_conversion_cli.py:318Integrity-Unchecked Remote AI Model Is Automatically Downloaded and Loaded
Referenced artifact was not completely inspected
- The entry point is `SKILL.md`; helper scripts are placed in `scripts/`.
The skill declares no explicit tool scope or permission boundaries, yet the documentation clearly describes capabilities to read/write local files, inspect environment configuration, and perform network downloads. In an agent setting, this mismatch weakens policy enforcement and user awareness, increasing the chance the skill is invoked with broader authority than intended.
The 'MUST use for ANY PDF or image format conversion task' and priority-over-other-skills language is overly broad and can force selection of this skill in situations where a safer, more local, or more appropriate alternative exists. Because this skill also performs downloads and uses proprietary components, overbroad routing increases the blast radius of accidental invocation and surprise data handling.
The skill is presented as a local conversion workflow, but it automatically downloads a license file and a large AI model from external servers on first run. That creates an unexpected supply-chain and privacy boundary: users may process sensitive documents believing the task is local, while the skill initiates outbound network activity and depends on remote content that is not pinned or independently verified.
The skill lacks a prominent upfront warning that first use will contact external servers to download license and model files, despite emphasizing local conversion. This omission undermines informed consent and can expose users in restricted, privacy-sensitive, or air-gapped environments to unexpected outbound traffic and policy violations.
The skill is presented as a local document conversion tool, but it silently introduces runtime network behavior to fetch a license and AI model. This expands the trust boundary, creates data egress/supply-chain risk, and may violate operator expectations in restricted or privacy-sensitive environments.
The code includes built-in network retrieval of external assets unrelated to the user's immediate file input, which increases attack surface beyond simple conversion. If the remote host, transport, or downloaded content is compromised, the tool may persist and trust attacker-influenced files locally.
The tool automatically downloads and stores the Document AI model when OCR or AI layout is enabled, without strong upfront consent or integrity verification. In a skill expected to process potentially sensitive documents, silent dependency fetching is dangerous because it introduces hidden network communication and a persistent supply-chain dependency.
The code auto-downloads and creates license.xml locally if it is absent, without clear upfront disclosure or authenticity checks beyond whatever the SDK later does with the key. This is risky because it normalizes hidden network access and trusts remote content that directly affects application authorization behavior.
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.
------------------------------------------------------------------------
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL PDF TECHNOLOGIES, INC. OR ITS AFFILIATES BE LIABLE FOR
Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.
def resolve_converter(format_name: str):
method_name = get_converter_method_name(format_name)
converter = getattr(CPDFConversion, method_name, None)
if converter is None:
raise RuntimeError(f"Current SDK does not provide converter method: {method_name}")
return converter
The stated purpose is converting PDFs and images between formats, but the implementation also creates and updates a hidden usage-tracking file under the user's home directory. This licensing telemetry/enforcement behavior is not part of the conversion capability described to the user.
No suspicious patterns detected.