# yaml@2.9.0 security report (npm)

- Verdict: **Needs review** (risk level: medium)
- Scanned: 2026-10-06T14:25:22.000Z
- Files reviewed: 151
- Findings: 1 medium severity finding
- Report: https://security.togoder.click/npm/yaml@2.9.0
- Source: Togoder Security (https://security.togoder.click), AI source-code review

## Summary

Togoder Security scanned the npm package yaml@2.9.0 on Oct 6, 2026. An AI review of 151 source files produced 1 medium severity finding. 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

### [medium] Dynamic import with user-controlled path

Finding ID: `NPS-650301DADFC3`

File: `dist/cli.mjs:110`

The '--visit' option allows importing an arbitrary module from a path provided by the user via 'await import(resolve(opt.visit))'. This is a dynamic import of an external, computed path. While it is an intentional documented feature of this CLI for applying visitor functions to YAML documents, it can be exploited if untrusted arguments are passed to the CLI (e.g., in a wrapper/shell context), leading to arbitrary code execution from a local file the attacker can place.

## Files reviewed

- `dist/cli.mjs` (medium): The code is the official yaml package CLI and contains no exfiltration, credential harvesting, or malicious behavior, but exposes a documented dynamic import of a user-supplied path that could be abused if arguments are attacker-controlled.
- `bin.mjs` (safe): No malicious patterns detected
- `browser/dist/compose/compose-collection.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/compose-doc.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/compose-node.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/compose-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/composer.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/resolve-block-map.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/resolve-block-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/resolve-block-seq.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/resolve-end.js` (safe): No malicious patterns detected
- `browser/dist/compose/resolve-flow-collection.js` (safe): This file is a legitimate YAML flow collection parser from the yaml npm package with no malicious patterns, network calls, command execution, or credential harvesting.
- `browser/dist/compose/resolve-flow-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/resolve-props.js` (safe): No malicious patterns detected in this YAML parser utility function.
- `browser/dist/compose/util-contains-newline.js` (safe): No malicious patterns detected; the code is a pure utility function for detecting newlines in YAML key nodes.
- `browser/dist/compose/util-empty-scalar-position.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/util-flow-indent-check.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/compose/util-map-includes.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/doc/Document.js` (safe): No malicious patterns detected
- `browser/dist/doc/anchors.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/doc/applyReviver.js` (safe): No malicious patterns detected; the code is a legitimate implementation of JSON.parse reviver logic with Map/Set extensions and performs no external I/O, dynamic execution, or system access.
- `browser/dist/doc/createNode.js` (safe): No malicious patterns detected; the code is a legitimate YAML node creation utility without exfiltration, credential harvesting, obfuscation, or process execution.
- `browser/dist/doc/directives.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/errors.js` (safe): No malicious patterns detected
- `browser/dist/index.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/log.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/Alias.js` (safe): The code is a legitimate part of the YAML library that handles alias nodes, with no malicious patterns detected.
- `browser/dist/nodes/Collection.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/Node.js` (safe): No malicious patterns detected
- `browser/dist/nodes/Pair.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/Scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/YAMLMap.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/YAMLSeq.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/addPairToJSMap.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/nodes/identity.js` (safe): No malicious patterns detected; the file only contains YAML node type identification utilities using Symbols and type-guard functions.
- `browser/dist/nodes/toJS.js` (safe): The provided toJS.js file is a benign recursive conversion utility with no malicious patterns, network calls, file system access, or dynamic code execution.
- `browser/dist/parse/cst-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/parse/cst-stringify.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/parse/cst-visit.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/parse/cst.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/parse/lexer.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/parse/line-counter.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/parse/parser.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/public-api.js` (safe): No malicious patterns detected
- `browser/dist/schema/Schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/common/map.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/common/null.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/common/seq.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/common/string.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/core/bool.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/core/float.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/core/int.js` (safe): No malicious patterns detected; the code only implements integer parsing/stringification for YAML schemas without network, filesystem, process, or dynamic execution behavior.
- `browser/dist/schema/core/schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/json/schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/tags.js` (safe): No malicious patterns detected; the file only defines YAML schema/tag mappings and a lookup helper.
- `browser/dist/schema/yaml-1.1/binary.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/bool.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/float.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/int.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/merge.js` (safe): No malicious patterns detected; the file implements YAML 1.1 merge key (`<<`) semantics for a public YAML library with no network, filesystem, process, or dynamic code execution behavior.
- `browser/dist/schema/yaml-1.1/omap.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/pairs.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/set.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/schema/yaml-1.1/timestamp.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/foldFlowLines.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/stringify.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/stringifyCollection.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/stringifyComment.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/stringifyDocument.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/stringifyNumber.js` (safe): No malicious patterns detected
- `browser/dist/stringify/stringifyPair.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/stringify/stringifyString.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/util.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/dist/visit.js` (safe): Cleared by Jev triage; no further analysis needed
- `browser/index.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/compose-collection.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/compose-doc.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/compose-node.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/compose-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/composer.js` (safe): No malicious patterns detected; the code is a standard YAML parser composer with no network, process, or credential access.
- `dist/compose/resolve-block-map.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/resolve-block-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/resolve-block-seq.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/resolve-end.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/resolve-flow-collection.js` (safe): No malicious patterns detected; the code is a legitimate YAML flow collection parser from the yaml package.
- `dist/compose/resolve-flow-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/resolve-props.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/util-contains-newline.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/util-empty-scalar-position.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/util-flow-indent-check.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/compose/util-map-includes.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/doc/Document.js` (safe): No malicious patterns detected; this is a legitimate YAML Document class implementation from the 'yaml' package.
- `dist/doc/anchors.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/doc/applyReviver.js` (safe): No malicious patterns detected; the code implements a standard JSON.parse reviver algorithm with Map/Set support and contains no network, filesystem, process, or dynamic execution activity.
- `dist/doc/createNode.js` (safe): No malicious patterns detected; the code is a standard YAML node creation utility with no network, filesystem, or dynamic execution risks.
- `dist/doc/directives.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/errors.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/index.js` (safe): No malicious patterns detected
- `dist/log.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/Alias.js` (safe): No malicious patterns detected
- `dist/nodes/Collection.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/Node.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/Pair.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/Scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/YAMLMap.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/YAMLSeq.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/addPairToJSMap.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/nodes/identity.js` (safe): No malicious patterns detected; the file contains only YAML node type identity helpers and exports.
- `dist/nodes/toJS.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/cst-scalar.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/cst-stringify.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/cst-visit.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/cst.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/lexer.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/line-counter.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/parse/parser.js` (safe): No malicious patterns detected; this is a legitimate YAML CST parser with only a debug logging check via process.env.LOG_TOKENS.
- `dist/public-api.js` (safe): No malicious patterns detected; this is the standard public API entry point of the yaml npm package, which only defines YAML parsing/stringifying functions with no network, filesystem, process, credential, or code-execution behavior.
- `dist/schema/Schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/common/map.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/common/null.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/common/seq.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/common/string.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/core/bool.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/core/float.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/core/int.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/core/schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/json/schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/tags.js` (safe): No malicious patterns detected; the file only defines YAML schema tag mappings and helper functions with no external data access, command execution, or network activity.
- `dist/schema/yaml-1.1/binary.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/bool.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/float.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/int.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/merge.js` (safe): No malicious patterns detected; the code implements YAML 1.1 merge key semantics without any exfiltration, dynamic execution, process spawning, or file system manipulation.
- `dist/schema/yaml-1.1/omap.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/pairs.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/schema.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/set.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/schema/yaml-1.1/timestamp.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/foldFlowLines.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringify.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringifyCollection.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringifyComment.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringifyDocument.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringifyNumber.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringifyPair.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/stringify/stringifyString.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/test-events.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/util.js` (safe): Cleared by Jev triage; no further analysis needed
- `dist/visit.js` (safe): Cleared by Jev triage; no further analysis needed
- `util.js` (safe): Cleared by Jev triage; no further analysis needed

## Version ranges

None of the 2 scanned versions of yaml are flagged high or critical. The latest scanned version, 2.9.1, is medium risk. Only versions we have scanned are listed; unscanned versions between them are not covered.

- 2.9.0 – 2.9.1 (`>=2.9.0 <=2.9.1`): medium (Dynamic import with user-controlled path)
- 1.10.3 – 2.8.3 (`>=1.10.3 <=2.8.3`): not scanned

## Scanned versions

- [2.9.1](https://security.togoder.click/npm/yaml@2.9.1): medium, 2026-10-04T16:47:01.000Z
- [2.9.0](https://security.togoder.click/npm/yaml@2.9.0): medium, 2026-10-06T14:25:22.000Z

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