← Scan another repo

github.com/trekhleb/javascript-algorithms

@ 85293e3e2b88

Submitted 8/4/2026, 10:25:51 AM · Status: ok

Risk grade
C
32 / 100
Findings
26
0 critical0 high26 medium0 low0 info0 on CISA KEV0ATT&CK
Showing 26 of 26 findings

Findings

  • Ensure top-level permissions are not set to write-all
    Ensure top-level permissions are not set to write-all on on(CI)
    checkov.github/workflows/CI.yml:0
  • @babel/core: Arbitrary File Read via sourceMappingURL Comment
    ## Impact Using `@babel/core` to compile maliciously crafted code can allow ab attacker to read any source map from the system that is running Babel, if these conditions are _all_ true: - the attacker controls the input source code - the attacker can read the output source code …
    osv-scannerCVE-2026-49356
  • @babel/plugin-transform-modules-systemjs generates arbitrary code when compiling malicious input
    ### Impact Using Babel to compile code that was specifically crafted by an attacker can cause Babel to generate output code that executes arbitrary code. Known affected plugins are: - `@babel/plugin-transform-modules-systemjs` - `@babel/preset-env` when using the [`modules: "sy…
    osv-scannerCVE-2026-44728
  • ajv has ReDoS when using `$data` option
    ajv (Another JSON Schema Validator) through version 8.17.1 is vulnerable to Regular Expression Denial of Service (ReDoS) when the `$data` option is enabled. The pattern keyword accepts runtime data via JSON Pointer syntax (`$data` reference), which is passed directly to the JavaS…
    osv-scannerCVE-2025-69873
  • brace-expansion: DoS via exponential-time expansion of consecutive non-expanding {} groups
    ### Summary brace-expansion's expand() exhibits exponential-time - O(2ⁿ) - behavior in the number of consecutive non-expanding {} groups. A short, all-ASCII input (~90 bytes/30 groups) blocks the calling thread for minutes; a slightly longer input hangs it effectively indefinitel…
    osv-scannerCVE-2026-13149
  • brace-expansion: DoS via exponential-time expansion of consecutive non-expanding {} groups
    ### Summary brace-expansion's expand() exhibits exponential-time - O(2ⁿ) - behavior in the number of consecutive non-expanding {} groups. A short, all-ASCII input (~90 bytes/30 groups) blocks the calling thread for minutes; a slightly longer input hangs it effectively indefinitel…
    osv-scannerCVE-2026-13149
  • brace-expansion: DoS via unbounded expansion length causing an out-of-memory process crash
    ### Summary `expand()` bounds the *number* of results it produces (the `max` option, `100_000` by default) but not their *length*. By chaining many brace groups, an attacker keeps the result count under `max` while making every result grow with the number of groups. Building `ma…
    osv-scannerCVE-2026-14257
  • brace-expansion: DoS via unbounded expansion length causing an out-of-memory process crash
    ### Summary `expand()` bounds the *number* of results it produces (the `max` option, `100_000` by default) but not their *length*. By chaining many brace groups, an attacker keeps the result count under `max` while making every result grow with the number of groups. Building `ma…
    osv-scannerCVE-2026-14257
  • brace-expansion: Zero-step sequence causes process hang and memory exhaustion
    ### Impact A brace pattern with a zero step value (e.g., `{1..2..0}`) causes the sequence generation loop to run indefinitely, making the process hang for seconds and allocate heaps of memory. The loop in question: https://github.com/juliangruber/brace-expansion/blob/daa71bcb4…
    osv-scannerCVE-2026-33750
  • brace-expansion: Zero-step sequence causes process hang and memory exhaustion
    ### Impact A brace pattern with a zero step value (e.g., `{1..2..0}`) causes the sequence generation loop to run indefinitely, making the process hang for seconds and allocate heaps of memory. The loop in question: https://github.com/juliangruber/brace-expansion/blob/daa71bcb4…
    osv-scannerCVE-2026-33750
  • flatted vulnerable to unbounded recursion DoS in parse() revive phase
    ## Summary flatted's `parse()` function uses a recursive `revive()` phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential `$` indices, the recursion depth is unbounded, causing a stack overflow that crashes…
    osv-scannerCVE-2026-32141
  • JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases
    ### Summary A crafted YAML document can trigger algorithmic CPU exhaustion in `js-yaml` merge-key processing (`<<`) by repeating the same alias many times in a merge sequence. This causes quadratic parse-time behavior relative to input size and can block a Node.js worker/event …
    osv-scannerCVE-2026-53550
  • JS-YAML: Quadratic-complexity DoS in merge key handling via repeated aliases
    ### Summary A crafted YAML document can trigger algorithmic CPU exhaustion in `js-yaml` merge-key processing (`<<`) by repeating the same alias many times in a merge sequence. This causes quadratic parse-time behavior relative to input size and can block a Node.js worker/event …
    osv-scannerCVE-2026-53550
  • js-yaml: YAML merge-key chains can force quadratic CPU consumption
    ### Impact js-yaml can spend quadratic CPU time parsing a document whose size grows only linearly. The issue is triggered by a chain of mappings where each mapping merges the previous one: ```yaml a0: &a0 { k0: 0 } a1: &a1 { <<: *a0, k1: 1 } a2: &a2 { <<: *a1, k2: 2 } a3: &a3 {…
    osv-scannerCVE-2026-59869
  • js-yaml: YAML merge-key chains can force quadratic CPU consumption
    ### Impact js-yaml can spend quadratic CPU time parsing a document whose size grows only linearly. The issue is triggered by a chain of mappings where each mapping merges the previous one: ```yaml a0: &a0 { k0: 0 } a1: &a1 { <<: *a0, k1: 1 } a2: &a2 { <<: *a1, k2: 2 } a3: &a3 {…
    osv-scannerCVE-2026-59869
  • minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
    ### Summary `minimatch` is vulnerable to Regular Expression Denial of Service (ReDoS) when a glob pattern contains many consecutive `*` wildcards followed by a literal character that doesn't appear in the test string. Each `*` compiles to a separate `[^/]*?` regex group, and when…
    osv-scannerCVE-2026-26996
  • minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern
    ### Summary `minimatch` is vulnerable to Regular Expression Denial of Service (ReDoS) when a glob pattern contains many consecutive `*` wildcards followed by a literal character that doesn't appear in the test string. Each `*` compiles to a separate `[^/]*?` regex group, and when…
    osv-scannerCVE-2026-26996
  • minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments
    ### Summary `matchOne()` performs unbounded recursive backtracking when a glob pattern contains multiple non-adjacent `**` (GLOBSTAR) segments and the input path does not match. The time complexity is O(C(n, k)) -- binomial -- where `n` is the number of path segments and `k` is …
    osv-scannerCVE-2026-27903
  • minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments
    ### Summary `matchOne()` performs unbounded recursive backtracking when a glob pattern contains multiple non-adjacent `**` (GLOBSTAR) segments and the input path does not match. The time complexity is O(C(n, k)) -- binomial -- where `n` is the number of path segments and `k` is …
    osv-scannerCVE-2026-27903
  • minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions
    ### Summary Nested `*()` extglobs produce regexps with nested unbounded quantifiers (e.g. `(?:(?:a|b)*)*`), which exhibit catastrophic backtracking in V8. With a 12-byte pattern `*(*(*(a|b)))` and an 18-byte non-matching input, `minimatch()` stalls for over 7 seconds. Adding a s…
    osv-scannerCVE-2026-27904
  • minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions
    ### Summary Nested `*()` extglobs produce regexps with nested unbounded quantifiers (e.g. `(?:(?:a|b)*)*`), which exhibit catastrophic backtracking in V8. With a 12-byte pattern `*(*(*(a|b)))` and an 18-byte non-matching input, `minimatch()` stalls for over 7 seconds. Adding a s…
    osv-scannerCVE-2026-27904
  • Picomatch has a ReDoS vulnerability via extglob quantifiers
    ### Impact `picomatch` is vulnerable to Regular Expression Denial of Service (ReDoS) when processing crafted extglob patterns. Certain patterns using extglob quantifiers such as `+()` and `*()`, especially when combined with overlapping alternatives or nested extglobs, are compil…
    osv-scannerCVE-2026-33671
  • Picomatch has a ReDoS vulnerability via extglob quantifiers
    ### Impact `picomatch` is vulnerable to Regular Expression Denial of Service (ReDoS) when processing crafted extglob patterns. Certain patterns using extglob quantifiers such as `+()` and `*()`, especially when combined with overlapping alternatives or nested extglobs, are compil…
    osv-scannerCVE-2026-33671
  • Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching
    ### Impact picomatch is vulnerable to a **method injection vulnerability (CWE-1321)** affecting the `POSIX_REGEX_SOURCE` object. Because the object inherits from `Object.prototype`, specially crafted POSIX bracket expressions (e.g., `[[:constructor:]]`) can reference inherited me…
    osv-scannerCVE-2026-33672
  • Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching
    ### Impact picomatch is vulnerable to a **method injection vulnerability (CWE-1321)** affecting the `POSIX_REGEX_SOURCE` object. Because the object inherits from `Object.prototype`, specially crafted POSIX bracket expressions (e.g., `[[:constructor:]]`) can reference inherited me…
    osv-scannerCVE-2026-33672
  • Prototype Pollution via parse() in NodeJS flatted
    --- **Summary** The parse() function in flatted can use attacker-controlled string values from the parsed JSON as direct array index keys, without validating that they are numeric. Since the internal input buffer is a JavaScript Array, accessing it with the key "\_\_prot…
    osv-scannerCVE-2026-33228

This report is public.