# @sigstore/tuf@4.0.2 security report (npm)

- Verdict: **Needs review** (risk level: medium)
- Scanned: 2026-10-06T14:23:04.000Z
- Files reviewed: 5
- Findings: 4 low severity findings
- Report: https://security.togoder.click/npm/@sigstore/tuf
- Source: Togoder Security (https://security.togoder.click), AI source-code review

## Summary

Togoder Security scanned the npm package @sigstore/tuf@4.0.2 on Oct 6, 2026. An AI review of 5 source files produced 4 low severity findings. The overall verdict is medium: the findings flag risky but common patterns (dynamic code, unsafe defaults, broad file or network access) rather than confirmed malware.

## Findings

### [low] Legitimate platform-specific path resolution

Finding ID: `NPS-4E08E18B3829`

File: `dist/appdata.js`

The code computes standard application data directories using os.homedir(), process.env.XDG_DATA_HOME, and process.env.LOCALAPPDATA. These are common, documented environment variables used for resolving user data directories on Linux, macOS, and Windows. No credentials, tokens, or sensitive files (.npmrc, .ssh, .aws, etc.) are read, exfiltrated, or harvested.

### [low] File system manipulation outside package scope

Finding ID: `NPS-85EB7684DFC7`

File: `dist/client.js`

The code creates and writes cache directories (targets, root.json) to a path derived directly from `options.cachePath` with no validation restricting it to a safe location. A malicious caller could set cachePath to a sensitive directory (e.g. filesystem root or user config dirs), and the code will create directories and copy/write files there. This is a legitimate caching mechanism for a TUF client, but the lack of path confinement is a potential abuse vector.

### [low] Dynamic require of external data blob

Finding ID: `NPS-70C482B7265D`

File: `dist/client.js`

The code uses `require('../seeds.json')` and indexes it with the untrusted `mirrorURL` string: `seeds[mirrorURL]`. If seeds.json ever contained malicious keys, prototype pollution-style access could occur (e.g. mirrorURL = '__proto__' or 'constructor'). Validating the mirrorURL and using Object.prototype.hasOwnProperty.call would mitigate this.

### [low] Encoded payload decoding (base64)

Finding ID: `NPS-05CA400C2A15`

File: `dist/client.js`

Base64-decoded content from seeds.json is written directly to disk as root.json and as target files. This is standard for TUF metadata seeding, but writing decoded blobs to the filesystem is worth noting for supply-chain review.

## Files reviewed

- `dist/client.js` (medium): This is a legitimate Sigstore TUF client implementation with no clear malicious behavior, though it performs cache directory creation/file writes based on caller-supplied paths and decodes base64 seed data to disk, warranting caution.
- `dist/appdata.js` (safe): Code is a benign utility from sigstore that resolves OS-specific application data paths using standard environment variables and homedir; no malicious patterns detected.
- `dist/error.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/index.js` (safe): This is a legitimate Sigstore TUF client initialization module with no malicious patterns detected; it only makes expected network requests to the Sigstore TUF repository.
- `dist/target.js` (safe): The code is a legitimate Sigstore TUF target reader that only uses fs.readFile and a TUF updater; no malicious patterns were detected.

AI analysis is guidance, not a guarantee. Methodology: https://security.togoder.click/methodology
