T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/sandbox.py:35- Finding
Arbitrary Filesystem Deletion Through an Unvalidated Sandbox Identifier
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s local document-AI purpose is coherent, but its security, sandboxing, offline, and audit claims are materially stronger than what the code actually enforces.
Review this skill before installing in any sensitive environment. Treat the sandbox and compliance features as incomplete application code, not as real isolation or certified audit controls. Use a disposable virtual environment, pin and verify dependencies/models, restrict file access, and avoid processing highly sensitive documents until sandbox path validation, output handling, audit-key management, and documentation gaps are fixed.
scripts/sandbox.py:35Arbitrary Filesystem Deletion Through an Unvalidated Sandbox Identifier
scripts/sandbox.py:154Path Traversal in Sandbox Output Operations Allows Arbitrary File Read and Write
scripts/sandbox.py:20Security Sandbox Configuration Does Not Enforce Filesystem, Network, or Resource Isolation
scripts/compliance_logger.py:44Hardcoded Audit Encryption Password and Non-Persistent Key Derivation Make Historical Logs Unrecoverable
requirements.txt:1Unpinned and Unverified Dependency Installation Creates Supply-Chain Exposure
A skill presented as local private AI file processing appears to include generic retry/fallback orchestration and cross-skill import behavior via filesystem path and sys.path modification. Hidden orchestration or dynamic module-loading behavior expands the attack surface and may execute code outside the user's expected trust boundary.
A skill presented as local private AI file processing appears to include generic retry/fallback orchestration and cross-skill import behavior via filesystem path and sys.path modification. Hidden orchestration or dynamic module-loading behavior expands the attack surface and may execute code outside the user's expected trust boundary.
A skill presented as local private AI file processing appears to include generic retry/fallback orchestration and cross-skill import behavior via filesystem path and sys.path modification. Hidden orchestration or dynamic module-loading behavior expands the attack surface and may execute code outside the user's expected trust boundary.
A skill presented as local private AI file processing appears to include generic retry/fallback orchestration and cross-skill import behavior via filesystem path and sys.path modification. Hidden orchestration or dynamic module-loading behavior expands the attack surface and may execute code outside the user's expected trust boundary.
The README title and description are entirely in Chinese and repeatedly position the tool around domestic Chinese environments and formats, but do not state that this locale restriction is optional or region-specific by design. Under the language/locale policy, forcing a specific language without opt-in is a natural-language policy concern.
This markdown file includes an example that processes a directory and writes outputs to ./处理结果/, which is a file-system affecting operation. The surrounding documentation does not warn users that running the batch workflow will create or modify local output files or advise them to verify the target directory before use.
The skill advertises code-related capabilities and installation steps that imply file and network access, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates an authorization ambiguity where an agent may grant broader access than users expect, especially for a skill claiming privacy-sensitive local document processing.
Claiming fully offline/local-only operation while requiring a model download is misleading for users operating in air-gapped, regulated, or privacy-sensitive contexts. The danger is not just inconsistency: users may approve installation believing there will be no network egress, undermining compliance assumptions and deployment controls.
Automatic model download is a network transfer with supply-chain and policy implications, yet the installation instructions do not warn users about external connectivity. In a skill handling sensitive local files, undisclosed downloads materially increase risk because they can violate environment restrictions or fetch unverified artifacts.
This config hard-codes OCR language handling to simplified Chinese and English only via the language setting. For a general parser configuration, that is a natural-language/locale policy concern because it constrains language processing without any visible opt-in or documented region-specific justification in the file.
This manifest/config file is written entirely in Chinese comments and includes China-specific compliance settings such as 等保 2.0, 个保法, and 数据安全法, with no natural-language indication that the skill is limited to a China-specific deployment or that users can choose another locale/compliance regime. Under the policy, forcing a specific language or locale context without opt-in or clear justification is a natural-language policy concern.
Natural-language strings throughout the file, including the module description, docstrings, prompts, and console output, force a specific language without any opt-in or alternative. This can violate language/locale policy when users are not given a choice or when no region-specific justification is provided.
The code exports an audit report containing user and activity metadata and only prints a generic success message, without warning that a potentially sensitive artifact is being written to disk. In a tool marketed for private/local processing of sensitive documents, silent report generation increases the risk of unintended disclosure through leftover files, broad filesystem access, or later collection by backup/sync tools.
The module claims logs are 'tamper-proof', but the implementation only encrypts entries in locally writable files and even includes automated deletion logic. This can create a false sense of evidentiary integrity: an attacker or insider with filesystem access can delete, replace, or rewrite logs, undermining forensic trust and compliance assurances.
The logger automatically invokes _cleanup_old_logs() during initialization, and that routine deletes files with log_file.unlink() based on retention age. Although there is a brief print after deletion, there is no prior warning, confirmation, or prominent disclosure at initialization that constructing the logger may immediately remove existing audit files.
Audit reports include detailed operational records and are exported as plaintext JSON/XLSX files into the local log directory without encryption or access-control hardening. In this skill context, the product handles private local documents, so exported reports may expose sensitive filenames, user identifiers, metadata, and errors to any local user or malware that can read those files.
The docstring for _export_pdf says it exports a PDF report, and export_audit_report advertises format: 导出格式 (pdf/excel/json). However, the implementation explicitly returns _export_json(...), so a caller requesting PDF does not receive a PDF at all. This is an active contradiction between the documented intent and runtime behavior.
The module docstring is written entirely in Chinese, and the script presents itself as a general-purpose model download tool rather than a region-specific or Chinese-only skill. This imposes a specific language on users without opt-in or justification, which matches the language/locale policy violation criteria.
Multiple docstrings and printed messages shown to the user are exclusively in Chinese, including the tool banner, status updates, and usage instructions. Because the file does not offer a language/locale choice or justify a locale restriction, this is a natural-language policy violation.
The top-level docstring presents the skill entirely in Chinese and describes support for domestic mainstream formats, which imposes a specific language/locale presentation on users without any opt-in or alternative. Under the policy, language constraints should either offer user choice or be explicitly justified as region-specific.
Natural-language text in the module docstrings and status messages is presented only in Chinese, with no indication that users can choose another language. This creates a language/locale policy concern because the skill effectively forces one language without opt-in or documented regional justification.
The class docstring advertises '断点续传、崩溃恢复', but in _process_large_file the code calls _load_checkpoint at L141 before self.checkpoint_file is set at L157. Since _load_checkpoint immediately returns None when self.checkpoint_file is unset, the documented resume/crash-recovery behavior contradicts the actual control flow.
The PDF chunking path writes temporary files containing user document content to disk using predictable filenames derived from the original path. Even in a local-only skill, this can expose sensitive data through leftover temp files after crashes, concurrent access by other local users/processes, or symlink/path-manipulation issues in shared directories.
Excel sheet processing writes user data to a predictable temporary .xlsx path based on the source filename and sheet name. This creates local data-exposure risk similar to the PDF path and may also allow filename collisions or failures when sheet names contain problematic characters for filesystem paths.
The summarization prompt explicitly instructs the model in Chinese, and similar Chinese-only prompts/docstrings appear throughout the file, which makes the skill operate in a fixed language. The file does not offer any user opt-in, language selection, or justification that this is a region-specific tool, so this is a natural-language locale policy concern.
No suspicious patterns detected.