Trust Assessment
merge-pdf received a trust score of 62/100, placing it in the Caution category. This skill has some security considerations that users should review before deployment.
SkillShield's automated analysis identified 5 findings: 0 critical, 1 high, 3 medium, and 1 low severity. Key findings include Suspicious import: requests, Potential data exfiltration: file read + network send, Unpinned Python dependency version.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. All layers scored 70 or above, reflecting consistent security practices.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings5
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| HIGH | Potential data exfiltration: file read + network send Function 'create_job' reads files and sends data over the network. This may indicate data exfiltration. Review this function to ensure file contents are not being sent to external servers. | Static | skills/crossservicesolutions/merge-pdf/scripts/merge-pdf.py:64 | |
| MEDIUM | Suspicious import: requests Import of 'requests' detected. This module provides network or low-level system access. Verify this import is necessary. Network and system modules in skill code may indicate data exfiltration. | Static | skills/crossservicesolutions/merge-pdf/scripts/merge-pdf.py:24 | |
| MEDIUM | Unpinned Python dependency version Requirement 'requests>=2.32.0' is not pinned to an exact version. Pin Python dependencies with '==<exact version>'. | Dependencies | skills/crossservicesolutions/merge-pdf/requirements.txt:1 | |
| MEDIUM | Weak file type validation allows potential data exfiltration The skill uses a simple file extension check (`.endswith('.pdf')`) to validate input files before opening and uploading them. An attacker could rename a sensitive non-PDF file (e.g., `/etc/passwd`) to have a `.pdf` extension (e.g., `/etc/passwd.pdf`) and trick the agent into providing this path. The skill would then open and upload this sensitive file to the remote service, leading to unintended data exfiltration. While the skill's purpose is to upload user-provided PDFs, the validation is insufficient to prevent malicious file types from being processed if their names are manipulated. Implement more robust file type validation, such as checking file magic bytes or using a dedicated library to confirm the file's actual content type is PDF, rather than relying solely on the file extension. Additionally, consider sandboxing file access if possible. | LLM | scripts/merge-pdf.py:26 | |
| LOW | Unpinned dependency in requirements.txt The 'requests' dependency is specified with a minimum version ('>=2.32.0') rather than an exact version. This can lead to unexpected behavior or introduce vulnerabilities if a future version of the library contains breaking changes or security flaws. While 'requests' is a widely trusted library, pinning exact versions is a best practice for supply chain security and reproducibility. Pin the 'requests' dependency to an exact version (e.g., 'requests==2.32.0') to ensure consistent and secure builds. Regularly review and update dependencies. | LLM | requirements.txt:1 |
Scan History
Embed Code
[](https://skillshield.io/report/4ac7e4135d1c6f82)
Powered by SkillShield