T08 · Insecure Dependencies
- Location
requirements.txt:1- Finding
Unpinned Third-Party Dependencies Create Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a user-directed bioinformatics simulator, but it overstates production-grade foundation-model predictions and can produce wet-lab target guidance from placeholder random code.
Install only in an isolated environment, pin and audit dependencies first, and do not use this skill for real experimental, therapeutic, clinical, or business decisions unless the model integrations and validation claims are independently verified. Keep outputs confined to a workspace directory and treat any remote model/API use as sensitive biological data handling until the publisher documents it clearly.
requirements.txt:1Unpinned Third-Party Dependencies Create Supply-Chain Risk
scripts/main.py:1036Path Traversal and Arbitrary File Overwrite Through Unsanitized Result Prefix
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.
The top-level documentation markets the tool as using biological foundation models for gene knockout prediction, while the implementation uses placeholder random simulation. This mismatch is especially dangerous in a scientific decision-support context because it can mislead users into trusting outputs as model-derived evidence when they are not.
The implementation claims to perform foundation-model-based perturbation prediction, but the core logic is explicitly synthetic and random. In a bioinformatics skill that may drive experimental prioritization, this is dangerous because users could make research or therapeutic decisions based on fabricated outputs that appear scientifically grounded.
The skill documents executable scripts plus file read/write behavior, but it does not declare an explicit tool scope such as permissions or allowed-tools. That creates ambiguity around what the agent is authorized to access and increases the risk of over-broad filesystem actions, especially because results and inputs are path-based and the security checklist is only aspirational.
The skill acknowledges high-risk capabilities like network access and filesystem handling but does not clearly warn users that uploaded biological data, gene lists, cell-type metadata, or generated reports may be transmitted to external services or stored locally. In a bioinformatics context, such data can be sensitive or proprietary, so lack of transparent handling guidance can lead to unintended data exposure or compliance issues.
The skill extends beyond stated transcriptional-change prediction into therapeutic target ranking and wet-lab validation recommendations. That scope expansion increases risk because it converts unvalidated simulated outputs into downstream action guidance, potentially influencing real laboratory work under false assumptions of scientific validity.
The combinatorial knockout synergy feature materially expands the operational purpose beyond the manifest's stated single-knockout prediction. In this context, hidden capability expansion is risky because users may rely on unsupported combination-effect outputs that can further compound errors from the already simulated prediction pipeline.
The comment on L002 is written in Chinese while the rest of the file's human-readable descriptions are primarily in English. This creates an implicit language constraint for maintainers or users reading the configuration, and there is no accompanying note indicating bilingual support, locale scope, or user opt-in.
This YAML file includes natural-language comments in Chinese alongside English identifiers, which can impose a language expectation on maintainers or users without any stated opt-in or locale guidance. Under the language/locale policy rule, forcing or assuming a specific language in user-facing instructions or comments can be a policy concern when no choice is offered.
The file contains natural-language comments only in Chinese on L56-L57, which introduces a locale-specific instruction style without any documented opt-in, language choice, or region-specific justification. Under the policy criteria, forcing a specific language or locale in natural-language content is a policy concern even in configuration files.
The dependency 'anndata' is unpinned, so builds may resolve to different versions over time, creating supply-chain unpredictability and making it difficult to reproduce or audit the environment. In an ML/bioinformatics skill with many transitive dependencies, this increases exposure to newly introduced vulnerable or breaking releases.
anndata
biopython
dataclasses
gseapy
The dependency 'biopython' is unpinned, which allows installation of arbitrary future or repository-resolved versions and prevents verification against known advisories. Because this skill processes biological data and may parse complex file formats, version drift can expose the environment to supply-chain and parser-related security risk.
anndata
biopython
dataclasses
gseapy
h5py
Because 'biopython' is unpinned and has known advisories, the manifest cannot establish whether deployed environments are safe or affected. This is especially relevant for a biology-focused skill that may parse structured bioinformatics data where parser flaws such as XXE can become reachable.
The dependency 'dataclasses' is unpinned, which reduces build reproducibility and can cause inconsistent environments across installations. While lower risk than packages with a long advisory history, leaving it unpinned still weakens supply-chain control.
anndata
biopython
dataclasses
gseapy
h5py
matplotlib
The dependency 'gseapy' is unpinned, so installs are not deterministic and may silently pick up vulnerable or incompatible upstream releases. In scientific workflows, this can affect both security posture and result integrity.
anndata
biopython
dataclasses
gseapy
h5py
matplotlib
mygene
The dependency 'h5py' is unpinned, which can lead to inconsistent dependency resolution and unknown exposure to vulnerabilities in native/parsing code paths. Libraries handling HDF5 data can be sensitive because malformed files may trigger crashes or unsafe behavior in affected versions.
biopython
dataclasses
gseapy
h5py
matplotlib
mygene
numpy
The dependency 'matplotlib' is unpinned, creating non-reproducible installs and making security/compliance review harder. Although plotting libraries are often lower risk than deserializers or model loaders, unpinned versions still increase supply-chain uncertainty.
dataclasses
gseapy
h5py
matplotlib
mygene
numpy
pandas
The dependency 'mygene' is unpinned, which weakens dependency integrity and allows unnoticed changes in installed behavior or security posture. In a data-enrichment workflow that may contact external services, predictable versions are important for auditing and risk management.
gseapy
h5py
matplotlib
mygene
numpy
pandas
plotly
The dependency 'numpy' is unpinned, so the environment may resolve to versions with known defects or advisories and cannot be reliably audited. Because this package is foundational and widely depended upon, version drift can affect a large portion of the runtime surface.
h5py
matplotlib
mygene
numpy
pandas
plotly
pyyaml
Because 'numpy' is unpinned despite a history of advisories, the security status of installed environments is unverifiable. As a core scientific dependency used throughout the stack, uncertainty here propagates broadly and complicates patch management.
The dependency 'pandas' is unpinned, which undermines reproducibility and makes it impossible to know whether installations are affected by known issues. Since data-processing libraries may handle untrusted tabular inputs and serialization features, deterministic versioning matters.
matplotlib
mygene
numpy
pandas
plotly
pyyaml
scanpy
The manifest leaves 'pandas' unpinned even though known advisories exist, so it is impossible to determine whether the deployed version is affected. In data-centric workflows, uncertainty around serialization or parser-related vulnerabilities is undesirable.
The dependency 'plotly' is unpinned, increasing supply-chain unpredictability and complicating security review. While not necessarily dangerous by itself, leaving it floating can introduce untested changes into the skill.
mygene
numpy
pandas
plotly
pyyaml
scanpy
scipy
The dependency 'pyyaml' is unpinned, which is more concerning because PyYAML has a history of unsafe deserialization issues in certain usage patterns and versions. In a skill that may consume configuration or model metadata, unresolved version drift can materially increase exploitability.
numpy
pandas
plotly
pyyaml
scanpy
scipy
scvi-tools
The manifest leaves 'pyyaml' unpinned despite multiple known deserialization-related advisories, making it impossible to verify whether the runtime is vulnerable. If this skill reads YAML configuration or metadata, exploitation could become substantially more dangerous than a generic package-versioning issue.
No suspicious patterns detected.