npm / estraverse / 5.3.0

estraverse 5.3.0

Source
https://github.com/estools/estraverse
Tag scanned
v5.3.0
Compared with
v5.2.0 (0 signals introduced since)
Files
12 scanned, 1 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 1 info
Scan time
3.4 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 1 of 1 warn and critical signal; 1 demoted to info.
Disclude version
4.0.0
Scanned (UTC)
2026-10-14 19:19

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info critical → info by review dynamic-execution test/replace.js:57:32

    `eval` called with a non-literal expression (ast pass, confidence 0.75)

                            type: 'Literal',
                            value: eval(JSON.stringify(node.left.value) + node.operator + JSON.stringify(node.right.value))
                        };
                    }
    likely benign LLM, confidence 0.80 An eval call in a test helper that folds a binary expression between two literal values into a Literal AST node.
    Reasoning

    The eval concatenates JSON-stringified literal values with an AST binary operator to fold a constant expression. This is a common pattern in a test file for a deobfuscator or replacer that evaluates literal arithmetic. It sits in test/, the operands are literals rather than external input, and the surrounding code builds a Literal node, which suggests a test fixture that checks constant folding. The eval is still poor practice, and the operator is not validated, so it is not zero-risk, but nothing in the snippet points to a dropper or external payload.

Reproduce This Scan

Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.0.0
git clone https://github.com/estools/estraverse estraverse && cd estraverse
git checkout v5.3.0
disclude scan --severity info --diff v5.2.0 .