Back to skill

Security audit

Survival Curve Risk Table

Security checks across malware telemetry and agentic risk

Overview

This survival-plotting skill mostly does what it claims, but it can load Python pickle files as data, which can execute code if the file is malicious.

Install only in an isolated environment. Do not use .pkl or .pickle input files unless they come from a fully trusted source. Prefer CSV, Excel, or SAS data, and the maintainer should remove pickle support, remove the pil dependency, and pin reviewed dependency versions before broad use.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The code accepts .pkl/.pickle input and calls pandas.read_pickle(), which deserializes attacker-controlled Python objects. Pickle deserialization can execute arbitrary code during loading, so a user opening an untrusted dataset could trigger code execution on the host. In a survival-analysis plotting skill, this capability is not necessary and therefore increases risk rather than serving the workflow.

Unpinned Dependencies

Low
Category
Supply Chain
Content
lifelines
matplotlib
numpy
pandas
Confidence
89% confidence
Finding
The dependency lifelines is unpinned, so installs may resolve to different versions over time, reducing reproducibility and potentially pulling in a newly introduced vulnerable or breaking release. In a review-oriented analytical skill, this weakens supply-chain control even if it is not immediately exploitable on its own.

Unpinned Dependencies

Low
Category
Supply Chain
Content
lifelines
matplotlib
numpy
pandas
pil
Confidence
89% confidence
Finding
The dependency matplotlib is unpinned, which allows non-deterministic installs and increases exposure to supply-chain or compatibility issues from future releases. For a reproducible workflow skill, this is especially contrary to the stated design goal of reproducibility.

Unpinned Dependencies

Low
Category
Supply Chain
Content
lifelines
matplotlib
numpy
pandas
pil
pillow
Confidence
93% confidence
Finding
The dependency numpy is unpinned, so package resolution may select versions with known flaws or behavioral changes. Because static analysis also flags numpy as having multiple advisories, leaving it unpinned materially increases the chance of installing an unsafe version.

Unpinned Dependencies

Low
Category
Supply Chain
Content
lifelines
matplotlib
numpy
pandas
pil
pillow
seaborn
Confidence
92% confidence
Finding
The dependency pandas is unpinned, which permits drift to older or newly introduced vulnerable versions and undermines deterministic builds. Given an associated advisory for pandas, the lack of version control increases operational and security risk.

Unpinned Dependencies

Low
Category
Supply Chain
Content
matplotlib
numpy
pandas
pil
pillow
seaborn
Confidence
97% confidence
Finding
The requirement pil is both unpinned and suspicious because PIL is obsolete on modern Python packaging and may indicate an incorrect or unintended package reference. This creates significant supply-chain risk, especially when paired with a typosquatting warning and the simultaneous presence of pillow.

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy
pandas
pil
pillow
seaborn
Confidence
94% confidence
Finding
The dependency pillow is unpinned, allowing installation of versions with known image parsing vulnerabilities or future regressions. Since Pillow processes complex file formats and is flagged separately for known advisories, this raises the likelihood of exposure to exploitable flaws.

Unpinned Dependencies

Low
Category
Supply Chain
Content
pandas
pil
pillow
seaborn
Confidence
88% confidence
Finding
The dependency seaborn is unpinned, which affects reproducibility and may indirectly pull differing versions of related scientific Python packages. While lower impact than a known-vulnerable package, it still weakens supply-chain hygiene for this analytics skill.

Known Vulnerable Dependency: numpy — 10 advisory(ies): CVE-2014-1859 (Numpy arbitrary file write via symlink attack); CVE-2021-41495 (NumPy NULL Pointer Dereference); CVE-2021-33430 (NumPy Buffer Overflow (Disputed)) +7 more

Critical
Category
Supply Chain
Confidence
83% confidence
Finding
The requirements file permits installation of numpy without constraining it to a patched version, and the scanner reports multiple advisories affecting numpy releases. In this context, even if not every advisory is practically reachable, allowing a vulnerable numerical library version into the environment is a real supply-chain and denial-of-service risk.

Known Vulnerable Dependency: pillow — 10 advisory(ies): CVE-2016-2533 (Pillow buffer overflow in ImagingPcdDecode); CVE-2023-50447 (Arbitrary Code Execution in Pillow); CVE-2021-27922 (Pillow Uncontrolled Resource Consumption) +7 more

Critical
Category
Supply Chain
Confidence
90% confidence
Finding
The requirements allow installation of pillow without constraining to a patched release, and Pillow has a history of vulnerabilities in image parsing, including resource exhaustion and in some cases code-execution-class issues. If the skill handles untrusted images or generated visual artifacts, this materially increases the attack surface.

Possible Typosquatting: 'pil' resembles popular package 'pip'

High
Category
Supply Chain
Confidence
98% confidence
Finding
The package name pil is highly suspicious in modern Python environments because the original PIL distribution is obsolete, and its presence alongside pillow suggests confusion or an incorrect dependency. This creates a substantial risk of typosquatting, dependency confusion, or installation failure that could be exploited through malicious package publication or misresolution.

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.