Back to skill

Security audit

Bid Reader

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it says: it extracts text from user-specified bid documents, with the main caution being unpinned Python dependencies.

Install this in a dedicated virtual environment or container, pin and review dependency versions before use, and only run it on documents whose full text you are comfortable exposing to the agent workflow.

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

Unpinned and Unverified Third-Party Dependencies

Content
View full analysis
Remediation
View remediation
python-docx== pandas== openpyxl== ``` 2. Generate a lock file that includes resolved transitive dependencies. 3. Record SHA-256 hashes for all approved distributions and install with: ```bash python -m pip install --require-hashes -r requirements.txt ``` 4. Obtain packages only from a trusted, explicitly configured package index or an internally controlled artifact repository. 5. Perform dependency vulnerability and provenance scanning in CI, and review updates before regenerating the lock file. 6. Install and run the skill in a dedicated virtual environment or container with least-privilege filesystem and network access. 7. Prefer prebuilt, verified wheels where practical to reduce execution of arbitrary source-build logic. ]]>
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 (7)

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
96% confidence
Finding

The dependency list uses unpinned package names, which makes builds non-reproducible and can silently pull in newer releases with breaking changes or newly introduced malicious code. In a skill that processes external document formats, uncontrolled dependency resolution increases supply-chain risk because vulnerable or compromised transitive code may be installed at runtime or deployment time.

Content

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

text
pdfplumber
python-docx
pandas
openpyxl

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
98% confidence
Finding

python-docx is declared without a version constraint, so the environment may install an unknown release, including versions with published security issues. Because this skill likely handles untrusted Office documents, dependency ambiguity is more concerning than in a purely internal utility.

Content

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

text
pdfplumber
python-docx
pandas
openpyxl

Unverifiable Dependency: python-docx has 2 known advisory(ies) (CVE-2016-5851 (Improper Restriction of XML External Entity Reference in python-docx); CVE-2016-5851 (python-docx before 0.8.6 allows context-dependent attackers to conduct XML Exter)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The manifest does not pin python-docx, and published advisories exist for older versions involving XML external entity handling. In a skill that likely parses DOCX files from users, an affected version could expose local files or trigger network access during document processing, making the context more dangerous than a generic library listing.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
96% confidence
Finding

An unpinned pandas dependency allows uncontrolled version selection, which can introduce vulnerable or behaviorally incompatible releases into the environment. Even where impact is limited, this weakens supply-chain integrity and hampers incident response and reproducibility.

Content

Scanner excerpt · requirements.txt (reported line 3)May include surrounding context.

text
pdfplumber
python-docx
pandas
openpyxl

Unverifiable Dependency: pandas has 1 known advisory(ies) (CVE-2020-13091 (** DISPUTED ** pandas through 1.0.3 can unserialize and execute commands from an)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
78% confidence
Finding

The unpinned pandas dependency makes it impossible to verify whether a vulnerable release is installed, though the cited advisory is disputed and context-dependent. This is still a supply-chain and assurance problem, but the practical exploitability from this file alone appears limited.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

openpyxl is unpinned, so deployments may consume arbitrary versions, including historically vulnerable ones. Since spreadsheet parsers often ingest attacker-controlled files, using an indeterminate parser version increases exposure to known XML-related flaws and future supply-chain compromise.

Content

Scanner excerpt · requirements.txt (reported line 4)May include surrounding context.

text
pdfplumber
python-docx
pandas
openpyxl

Unverifiable Dependency: openpyxl has 2 known advisory(ies) (CVE-2017-5992 (Improper Restriction of XML External Entity Reference in Openpyxl); CVE-2017-5992 (Openpyxl 2.4.1 resolves external entities by default, which allows remote attack)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
92% confidence
Finding

The openpyxl dependency is unpinned despite advisories for XXE-style issues in older versions. Because this skill appears intended to handle spreadsheet documents, an attacker-supplied XLSX file could be used to exploit an affected parser version if one is resolved during installation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.