Back to skill

Security audit

Meta-Analysis Forest Plotter

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local meta-analysis plotting helper with ordinary scientific Python dependencies and no evidence of hidden data access, persistence, or exfiltration.

Before installing, consider using a locked or pinned dependency set for numpy, scipy, matplotlib, and pandas. Also note that the README-style examples reference a different script/module name than the one shipped, so users may need to run artifact/scripts/main.py or adjust imports.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
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
Content
numpy>=1.20.0
scipy>=1.7.0
matplotlib>=3.5.0
pandas>=1.3.0
Confidence
96% confidence
Finding
The dependency is specified with only a lower bound, so installations may resolve to different versions over time, including versions with newly introduced regressions or security issues. This weakens supply-chain reproducibility and makes it harder to verify whether deployed environments are using vetted releases.

Unverifiable Dependency: numpy has 16 known 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)) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
90% confidence
Finding
Numpy has known advisories, but because the requirement is not pinned, it is impossible to determine whether deployment will select a patched or affected version. In practice, this is a supply-chain hygiene issue that increases uncertainty and can permit vulnerable versions to be installed.

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy>=1.20.0
scipy>=1.7.0
matplotlib>=3.5.0
pandas>=1.3.0
Confidence
96% confidence
Finding
Using an unpinned scipy requirement allows package resolution to drift across environments and over time. That increases supply-chain risk because a vulnerable or incompatible release could be installed without any manifest change.

Unverifiable Dependency: scipy has 4 known advisory(ies) (CVE-2013-4251 (SciPy creates insecure temporary directories); CVE-2013-4251 (The scipy.weave component in SciPy before 0.12.1 creates insecure temporary dire); CVE-2023-25399 (A refcounting issue which leads to potential memory leak was discovered in scipy) +1 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
88% confidence
Finding
Scipy has historical advisories, and the unpinned manifest prevents verification that only safe versions will be installed. This makes risk assessment and patch assurance difficult, even if no directly exploitable path is evident from this file alone.

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy>=1.20.0
scipy>=1.7.0
matplotlib>=3.5.0
pandas>=1.3.0
Confidence
96% confidence
Finding
The matplotlib dependency is not fixed to a single version, so builds are not reproducible and may silently consume future releases. This creates avoidable supply-chain exposure and complicates auditing of what code is actually installed.

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy>=1.20.0
scipy>=1.7.0
matplotlib>=3.5.0
pandas>=1.3.0
Confidence
96% confidence
Finding
An unpinned pandas dependency means the installed version is not deterministic and may vary by environment or install date. This can expose the skill to dependency-related security issues that cannot be reliably assessed from the manifest alone.

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
85% confidence
Finding
Pandas has at least one known advisory, and without an exact version pin there is no reliable way to verify whether the environment will use an affected version. The main danger is dependency uncertainty rather than a demonstrated exploit path in this skill itself.

Static analysis

No suspicious patterns detected.