Togoder security

npm package security report

eslint npm package: is it safe?

Risky patterns found that deserve a look.

Needs review Version 10.12.0 Files reviewed 410 Size 2.6 MB Scanned

Summary

Togoder Security scanned the npm package eslint@10.12.0 on Oct 6, 2026. An AI review of 410 source files produced 6 medium, 18 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.

0
critical
0
high
6
medium
18
low

Findings 24

medium

Dynamic module loading with computed path

NPS-B02E79D7B94E

getErrorMessage() dynamically constructs a require() path using error.messageTemplate (require(../messages/${error.messageTemplate}.js)). While messageTemplate is typically controlled internally by ESLint, if an attacker can influence error.messageTemplate (e.g., via a third-party plugin throwing a crafted error), this could enable arbitrary module resolution/loading within the parent directory. This is a potential vector for loading unintended modules.

bin/eslint.js:113
medium

Dynamic code execution via data URL module

NPS-8A86341F5F45

The createOptionsModule function constructs a JavaScript module source string by embedding serialized CLI options via JSON.stringify and imports it through a base64-encoded data:text/javascript URL. While the input is JSON-encoded (mitigating direct injection), dynamically generating and loading executable module code from user-controlled CLI options is a code-generation pattern that can be abused and is difficult to audit. A malicious or crafted option value that survives JSON serialization into the template could alter the module body.

lib/cli.js:78
medium

Spawning external process

NPS-1AD7502F2C38

The inspect-config code path uses require('cross-spawn') and spawn.sync('npx', ['@eslint/config-inspector@latest', ...flags]) with stdio: 'inherit'. This downloads and executes an unpinned, externally-hosted npm package (@latest) at runtime, which is a supply-chain risk: the fetched package is not integrity-verified and could change or be compromised at any time. The flags are derived from resolved config file paths.

lib/cli.js:348
medium

Dynamic import

NPS-9525054BDA66

The loadFormatter method dynamically imports arbitrary formatter modules. While this is a legitimate feature of ESLint, it could be abused to load malicious code if a user is tricked into using a malicious formatter name. The formatter path is resolved based on user input and could potentially point to an attacker-controlled module or file path.

lib/eslint/eslint.js
medium

Dynamic module loading

NPS-FB3827E3E825

The fromOptionsModule method loads options from a module URL. This allows dynamic loading of JavaScript modules based on a URL, which could be exploited if an attacker can control the URL, leading to arbitrary code execution.

lib/eslint/eslint.js
medium

Dynamic module loading with computed input

NPS-57A44A1D7019

The worker dynamically loads an ESLint options module from a URL or path provided via workerData (loadOptionsFromModule(eslintOptionsOrURL)). If this value is controllable by an attacker (e.g., through CLI options or shared workerData), it could lead to loading and executing arbitrary JavaScript. This is a legitimate feature of ESLint's multithreaded worker design, but it still represents a code-loading vector that should be treated as a potential risk if untrusted input can reach it.

lib/eslint/worker.js:70
low

Spawning external processes

NPS-22C8701C5888

spawnExternalCommand() uses cross-spawn to execute external commands (npm init @eslint/config@latest and npx @eslint/mcp@latest). These are triggered when the user passes --init or --mcp. This is expected behavior for ESLint's CLI migration path, but it does fetch and execute remote packages from the npm registry, which introduces supply-chain risk (e.g., if @eslint/config or @eslint/mcp were compromised). Note that the commands are hard-coded, not derived from user input, mitigating injection concerns.

bin/eslint.js:88
low

File system write outside package scope

NPS-CF8FCBAB879F

printResults resolves the user-supplied outputFile against process.cwd(), creates directories with mkdir(..., { recursive: true }), and writes the formatter output there. The destination is controlled by CLI input and can target arbitrary filesystem locations outside the package directory.

lib/cli.js:111
low

Dynamic module loading with computed input

NPS-C684F89B8B66

ESLint.fromOptionsModule(optionsURL) is invoked with a computed URL derived from user-supplied CLI options. Dynamic module loading based on runtime-constructed URLs expands the attack surface for arbitrary module resolution.

lib/cli.js:492
low

Dynamic import

NPS-550E11E95089

The code uses dynamic import() to load JavaScript configuration files (eslint.config.js) from paths resolved from user input. This is a required, documented behavior of ESLint, not an exfiltration or backdoor. The imported files are the user's own config files, not external or attacker-controlled remote modules.

lib/config/config-loader.js:249
low

Require cache manipulation

NPS-46F27EE218B9

The code deletes entries from require.cache to force re-import of config files when their mtime changes. This is intentional for hot-reloading user config and is scoped to the config file path only, with no broad cache poisoning.

lib/config/config-loader.js:265
low

Dependency loading

NPS-7FB46858A023

The static loadJiti method dynamically imports the 'jiti' package at runtime. This is a declared optional dependency for TypeScript config support, not an undeclared or obfuscated module load.

lib/config/config-loader.js:400
low

Dynamic import with computed input

NPS-D79D14D342D1

The loadOptionsFromModule function and the import('@humanfs/node') call use dynamic imports. However, loadOptionsFromModule is designed to load a user-specified ESLint options module (a documented feature), and the @humanfs/node import is a fixed, trusted package dependency. There is no evidence of malicious intent.

lib/eslint/eslint-helpers.js
low

Environment variable access

NPS-F5418CBA526D

mergeEnvironmentFlags reads the ESLINT_FLAGS environment variable. This is a documented ESLint feature for supplying CLI flags and does not involve credential harvesting or exfiltration.

lib/eslint/eslint-helpers.js
low

File system manipulation

NPS-7F00898BBA14

The code writes files (output fixes) and deletes cache files. While these are expected behaviors for a linter, they involve file system operations outside the immediate package scope (writing to user-specified paths). This is standard for ESLint but could be misused if paths are attacker-controlled.

lib/eslint/eslint.js
low

Worker threads

NPS-25F7E5F14009

The code spawns worker threads to lint files. This is a legitimate performance feature. However, it uses SHARE_ENV which shares the environment variables with workers, potentially exposing environment variables to worker threads. This is not malicious by itself but could be a concern if workers are compromised.

lib/eslint/eslint.js
low

Runtime compilation cache enablement

NPS-4356F1C79B0E

The worker calls require("node:module").enableCompileCache?.() at load time. This is a Node.js API that caches compiled bytecode on disk for subsequent runs. While not inherently malicious, it writes cached V8 code to the filesystem outside the normal linting scope and executes at worker import time. It could be abused to cache or replay compiled code if paths were attacker-controlled, though here it uses default cache directories.

lib/eslint/worker.js:13
low

File Read from Configurable Path

NPS-7675D37CFFF7

The load() method reads from this.filePath which is set by the caller. No path traversal from untrusted input is present; the path comes from ESLint's configuration.

lib/services/suppressions-service.js:193
low

File Write to Configurable Path

NPS-EA690EB152F1

The save() method writes to this.filePath, which is passed in via constructor options. This is normal for a suppressions file manager (ESLint's official suppressions feature) and the path is controlled by the calling code, not external input.

lib/services/suppressions-service.js:219
low

Spawning processes or shell commands

NPS-87C9A6629AB6

The code uses cross-spawn.sync to execute external commands ('npm --version', 'npm ls ...', 'npm bin -g'). This is a process spawning pattern. Although cross-spawn is a well-known library and the arguments are static, executing external binaries at runtime can be a security concern if the PATH or environment is manipulated. In this context it appears legitimate for gathering environment info (the code is from ESLint and clearly documented as such).

lib/shared/runtime-info.js
low

Environment information gathering

NPS-4FB994F555DF

The module collects environment details including Node version, npm version, local/global ESLint versions, and OS platform/release. This is expected behavior for a CLI diagnostic utility, but it does read execution environment information. It does not read sensitive files (no .npmrc, .ssh, etc.) and does not send data externally.

lib/shared/runtime-info.js
low

JSON.parse of external command output

NPS-1040F99B2B62

The result of npm ls --depth=0 --json is parsed with JSON.parse. While not a direct vulnerability, parsing untrusted command output is a pattern to note. The parsed output is only used to extract version strings.

lib/shared/runtime-info.js
low

Dynamic module loading

NPS-1687BB209989

The code uses ModuleImporter to dynamically import ESLint plugins and parsers based on CLI-supplied names (via the --plugin and --parser options). While this is expected and intended behavior for ESLint, it allows loading and executing arbitrary modules from the filesystem or node_modules if an attacker controls CLI arguments. This is not malicious per se, but is a code execution vector if untrusted input reaches these options.

lib/shared/translate-cli-options.js:41
low

Dynamic module loading

NPS-84D9024F8DA3

The parser option is passed directly to importer.import(), which resolves and executes an arbitrary module specified by the user. This is a normal ESLint feature but represents dynamic code loading driven by external input.

lib/shared/translate-cli-options.js:166

Files reviewed

FileVerdictWhat the reviewer saw
bin/eslint.js medium This is the official ESLint CLI entrypoint; no exfiltration, credential harvesting, obfuscation, or backdoor patterns were detected, but it does dynamically require modules based on error templates and spawns npm/npx to fetch and run external packages via --init/--mcp flags.
lib/cli.js medium This is the legitimate ESLint CLI entry point; it contains no data exfiltration, credential harvesting, or obfuscated payloads, but does exhibit a few low-to-medium risk patterns (data-URL module generation from CLI options, unpinned npx @latest subprocess spawn, and user-controlled output file writes) that are typical of a real linter CLI rather than overt malware.
lib/eslint/eslint.js medium The code contains legitimate dynamic imports and file system operations typical of a linter, but these features could be abused if inputs are not properly sanitized, posing a medium risk.
lib/eslint/worker.js medium This appears to be a legitimate ESLint worker thread with no clear malicious patterns, but it contains dynamic module loading from worker-provided input and enables compile cache at import time, which are worth noting as potential risk surfaces if untrusted data can reach them.
lib/shared/runtime-info.js medium This appears to be legitimate ESLint environment-info utility code that spawns npm commands to gather version data, with no clear malicious exfiltration, credential harvesting, obfuscation, or backdoor patterns.
lib/shared/translate-cli-options.js medium This is legitimate ESLint CLI option translation code with no malicious patterns; it uses dynamic imports for plugins/parsers as an intended feature, not a backdoor.
conf/ecma-version.js safe Cleared by Jev triage; no further analysis needed
conf/globals.js safe Cleared by Jev triage; no further analysis needed
lib/api.js safe Cleared by Jev triage; no further analysis needed
lib/cli-engine/formatters/html.js safe No malicious patterns detected; this is a legitimate ESLint HTML formatter that properly escapes user-controlled data and performs no network, filesystem, or process operations.
lib/cli-engine/formatters/json-with-metadata.js safe Cleared by Jev triage; no further analysis needed
lib/cli-engine/formatters/json.js safe Cleared by Jev triage; no further analysis needed
lib/cli-engine/formatters/stylish.js safe Cleared by Jev triage; no further analysis needed
lib/cli-engine/hash.js safe Cleared by Jev triage; no further analysis needed
lib/cli-engine/lint-result-cache.js safe No malicious patterns detected; the code is a legitimate ESLint lint result caching utility with expected file I/O and no suspicious behaviors.
lib/config-api.js safe Cleared by Jev triage; no further analysis needed
lib/config/config-loader.js safe This is the legitimate ESLint config loader; dynamic imports and require cache manipulation are intended features for loading user-owned config files, with no signs of exfiltration, credential harvesting, obfuscation, or process spawning.
lib/config/config.js safe Cleared by Jev triage; no further analysis needed
lib/config/default-config.js safe No malicious patterns detected; the code is a standard ESLint default configuration file that only requires internal modules and defines frozen configuration objects.
lib/config/flat-config-array.js safe Cleared by Jev triage; no further analysis needed
lib/config/flat-config-schema.js safe Cleared by Jev triage; no further analysis needed
lib/eslint/eslint-helpers.js safe This is a legitimate ESLint helper module with only benign uses of dynamic imports and environment variables; no malicious patterns detected.
lib/eslint/index.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/index.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/index.js safe Cleared by Jev triage; no further analysis needed
Show 385 more files
FileVerdictWhat the reviewer saw
lib/languages/js/source-code/source-code.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/backward-token-comment-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/backward-token-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/cursors.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/decorative-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/filter-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/forward-token-comment-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/forward-token-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/index.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/limit-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/padded-token-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/skip-cursor.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/source-code/token-store/utils.js safe Cleared by Jev triage; no further analysis needed
lib/languages/js/validate-language-options.js safe Cleared by Jev triage; no further analysis needed
lib/linter/apply-disable-directives.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/code-path-analyzer.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/code-path-segment.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/code-path-state.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/code-path.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/debug-helpers.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/fork-context.js safe Cleared by Jev triage; no further analysis needed
lib/linter/code-path-analysis/id-generator.js safe Cleared by Jev triage; no further analysis needed
lib/linter/esquery.js safe Cleared by Jev triage; no further analysis needed
lib/linter/file-context.js safe Cleared by Jev triage; no further analysis needed
lib/linter/file-report.js safe Cleared by Jev triage; no further analysis needed
lib/linter/index.js safe Cleared by Jev triage; no further analysis needed
lib/linter/interpolate.js safe Cleared by Jev triage; no further analysis needed
lib/linter/linter.js safe This is the legitimate ESLint Linter implementation; no malicious patterns, external data exfiltration, obfuscated code, or suspicious process/network activity were detected.
lib/linter/rule-fixer.js safe Cleared by Jev triage; no further analysis needed
lib/linter/source-code-fixer.js safe Cleared by Jev triage; no further analysis needed
lib/linter/source-code-traverser.js safe Cleared by Jev triage; no further analysis needed
lib/linter/source-code-visitor.js safe Cleared by Jev triage; no further analysis needed
lib/linter/timing.js safe No malicious patterns detected
lib/linter/vfile.js safe Cleared by Jev triage; no further analysis needed
lib/options.js safe Cleared by Jev triage; no further analysis needed
lib/rule-tester/index.js safe Cleared by Jev triage; no further analysis needed
lib/rule-tester/rule-tester.js safe No malicious patterns detected; the code is a standard ESLint RuleTester utility that performs local rule validation without exfiltration, credential harvesting, dynamic code execution, or suspicious filesystem/network activity.
lib/rules/accessor-pairs.js safe Cleared by Jev triage; no further analysis needed
lib/rules/array-bracket-newline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/array-bracket-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/array-callback-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/array-element-newline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/arrow-body-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/arrow-parens.js safe Cleared by Jev triage; no further analysis needed
lib/rules/arrow-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/block-scoped-var.js safe Cleared by Jev triage; no further analysis needed
lib/rules/block-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/brace-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/callback-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/camelcase.js safe Cleared by Jev triage; no further analysis needed
lib/rules/capitalized-comments.js safe Cleared by Jev triage; no further analysis needed
lib/rules/class-methods-use-this.js safe Cleared by Jev triage; no further analysis needed
lib/rules/comma-dangle.js safe Cleared by Jev triage; no further analysis needed
lib/rules/comma-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/comma-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/complexity.js safe Cleared by Jev triage; no further analysis needed
lib/rules/computed-property-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/consistent-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/consistent-this.js safe Cleared by Jev triage; no further analysis needed
lib/rules/constructor-super.js safe Cleared by Jev triage; no further analysis needed
lib/rules/curly.js safe Cleared by Jev triage; no further analysis needed
lib/rules/default-case-last.js safe Cleared by Jev triage; no further analysis needed
lib/rules/default-case.js safe Cleared by Jev triage; no further analysis needed
lib/rules/default-param-last.js safe Cleared by Jev triage; no further analysis needed
lib/rules/dot-location.js safe Cleared by Jev triage; no further analysis needed
lib/rules/dot-notation.js safe Cleared by Jev triage; no further analysis needed
lib/rules/eol-last.js safe Cleared by Jev triage; no further analysis needed
lib/rules/eqeqeq.js safe Cleared by Jev triage; no further analysis needed
lib/rules/for-direction.js safe Cleared by Jev triage; no further analysis needed
lib/rules/func-call-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/func-name-matching.js safe Cleared by Jev triage; no further analysis needed
lib/rules/func-names.js safe Cleared by Jev triage; no further analysis needed
lib/rules/func-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/function-call-argument-newline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/function-paren-newline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/generator-star-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/getter-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/global-require.js safe Cleared by Jev triage; no further analysis needed
lib/rules/grouped-accessor-pairs.js safe Cleared by Jev triage; no further analysis needed
lib/rules/guard-for-in.js safe Cleared by Jev triage; no further analysis needed
lib/rules/handle-callback-err.js safe No malicious patterns detected; this is a standard deprecated ESLint rule for enforcing callback error handling.
lib/rules/id-blacklist.js safe Cleared by Jev triage; no further analysis needed
lib/rules/id-denylist.js safe Cleared by Jev triage; no further analysis needed
lib/rules/id-length.js safe Cleared by Jev triage; no further analysis needed
lib/rules/id-match.js safe Cleared by Jev triage; no further analysis needed
lib/rules/implicit-arrow-linebreak.js safe Cleared by Jev triage; no further analysis needed
lib/rules/indent-legacy.js safe Cleared by Jev triage; no further analysis needed
lib/rules/indent.js safe Cleared by Jev triage; no further analysis needed
lib/rules/index.js safe Cleared by Jev triage; no further analysis needed
lib/rules/init-declarations.js safe Cleared by Jev triage; no further analysis needed
lib/rules/jsx-quotes.js safe Cleared by Jev triage; no further analysis needed
lib/rules/key-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/keyword-spacing.js safe No malicious patterns detected; this is a legitimate ESLint stylistic rule for keyword spacing that only performs static code analysis and auto-fixing.
lib/rules/line-comment-position.js safe Cleared by Jev triage; no further analysis needed
lib/rules/linebreak-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/lines-around-comment.js safe Cleared by Jev triage; no further analysis needed
lib/rules/lines-around-directive.js safe Cleared by Jev triage; no further analysis needed
lib/rules/lines-between-class-members.js safe Cleared by Jev triage; no further analysis needed
lib/rules/logical-assignment-operators.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-classes-per-file.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-depth.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-len.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-lines-per-function.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-lines.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-nested-callbacks.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-params.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-statements-per-line.js safe Cleared by Jev triage; no further analysis needed
lib/rules/max-statements.js safe Cleared by Jev triage; no further analysis needed
lib/rules/multiline-comment-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/multiline-ternary.js safe Cleared by Jev triage; no further analysis needed
lib/rules/new-cap.js safe Cleared by Jev triage; no further analysis needed
lib/rules/new-parens.js safe Cleared by Jev triage; no further analysis needed
lib/rules/newline-after-var.js safe Cleared by Jev triage; no further analysis needed
lib/rules/newline-before-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/newline-per-chained-call.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-alert.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-array-constructor.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-async-promise-executor.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-await-in-loop.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-bitwise.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-buffer-constructor.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-caller.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-case-declarations.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-catch-shadow.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-class-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-compare-neg-zero.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-cond-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-confusing-arrow.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-console.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-const-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-constant-binary-expression.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-constant-condition.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-constructor-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-continue.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-control-regex.js safe This is a standard ESLint rule implementation that analyzes regex literals for control characters using the regexpp validator, with no malicious patterns, network calls, file system access, or dynamic code execution.
lib/rules/no-debugger.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-delete-var.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-div-regex.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-dupe-args.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-dupe-class-members.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-dupe-else-if.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-dupe-keys.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-duplicate-case.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-duplicate-imports.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-else-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-empty-character-class.js safe No malicious patterns detected; the file is a legitimate ESLint rule implementation for detecting empty character classes in regular expressions.
lib/rules/no-empty-function.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-empty-pattern.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-empty-static-block.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-empty.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-eq-null.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-eval.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-ex-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-extend-native.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-extra-bind.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-extra-boolean-cast.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-extra-label.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-extra-parens.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-extra-semi.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-fallthrough.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-floating-decimal.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-func-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-global-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-implicit-coercion.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-implicit-globals.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-implied-eval.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-import-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-inline-comments.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-inner-declarations.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-invalid-regexp.js safe This is a standard ESLint rule implementation for validating RegExp constructor arguments, with no malicious patterns, network activity, file system access, or dynamic code execution.
lib/rules/no-invalid-this.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-irregular-whitespace.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-iterator.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-label-var.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-labels.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-lone-blocks.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-lonely-if.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-loop-func.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-loss-of-precision.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-magic-numbers.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-misleading-character-class.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-mixed-operators.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-mixed-requires.js safe This is a legitimate deprecated ESLint rule implementation with no malicious patterns, network access, file system manipulation, or code execution.
lib/rules/no-mixed-spaces-and-tabs.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-multi-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-multi-spaces.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-multi-str.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-multiple-empty-lines.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-native-reassign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-negated-condition.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-negated-in-lhs.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-nested-ternary.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new-func.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new-native-nonconstructor.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new-object.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new-require.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new-symbol.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new-wrappers.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-new.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-nonoctal-decimal-escape.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-obj-calls.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-object-constructor.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-octal-escape.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-octal.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-param-reassign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-path-concat.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-plusplus.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-process-env.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-process-exit.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-promise-executor-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-proto.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-prototype-builtins.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-redeclare.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-regex-spaces.js safe No malicious patterns detected; the file is a standard ESLint rule for detecting multiple spaces in regular expressions.
lib/rules/no-restricted-exports.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-restricted-globals.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-restricted-imports.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-restricted-modules.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-restricted-properties.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-restricted-syntax.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-return-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-return-await.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-script-url.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-self-assign.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-self-compare.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-sequences.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-setter-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-shadow-restricted-names.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-shadow.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-spaced-func.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-sparse-arrays.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-sync.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-tabs.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-template-curly-in-string.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-ternary.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-this-before-super.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-throw-literal.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-trailing-spaces.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unassigned-vars.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-undef-init.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-undef.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-undefined.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-underscore-dangle.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unexpected-multiline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unmodified-loop-condition.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unneeded-ternary.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unreachable-loop.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unreachable.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unsafe-finally.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unsafe-negation.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unsafe-optional-chaining.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unused-expressions.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unused-labels.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unused-private-class-members.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-unused-vars.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-use-before-define.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-assignment.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-backreference.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-call.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-catch.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-computed-key.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-concat.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-constructor.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-escape.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-rename.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-useless-return.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-var.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-void.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-warning-comments.js safe No malicious patterns detected; the file is a legitimate ESLint rule implementation that only processes comments and uses standard string/regex utilities.
lib/rules/no-whitespace-before-property.js safe Cleared by Jev triage; no further analysis needed
lib/rules/no-with.js safe Cleared by Jev triage; no further analysis needed
lib/rules/nonblock-statement-body-position.js safe Cleared by Jev triage; no further analysis needed
lib/rules/object-curly-newline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/object-curly-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/object-property-newline.js safe Cleared by Jev triage; no further analysis needed
lib/rules/object-shorthand.js safe Cleared by Jev triage; no further analysis needed
lib/rules/one-var-declaration-per-line.js safe Cleared by Jev triage; no further analysis needed
lib/rules/one-var.js safe Cleared by Jev triage; no further analysis needed
lib/rules/operator-assignment.js safe Cleared by Jev triage; no further analysis needed
lib/rules/operator-linebreak.js safe Cleared by Jev triage; no further analysis needed
lib/rules/padded-blocks.js safe Cleared by Jev triage; no further analysis needed
lib/rules/padding-line-between-statements.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-arrow-callback.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-const.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-destructuring.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-exponentiation-operator.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-named-capture-group.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-numeric-literals.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-object-has-own.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-object-spread.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-promise-reject-errors.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-reflect.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-regex-literals.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-rest-params.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-spread.js safe Cleared by Jev triage; no further analysis needed
lib/rules/prefer-template.js safe Cleared by Jev triage; no further analysis needed
lib/rules/preserve-caught-error.js safe Cleared by Jev triage; no further analysis needed
lib/rules/quote-props.js safe Cleared by Jev triage; no further analysis needed
lib/rules/quotes.js safe Cleared by Jev triage; no further analysis needed
lib/rules/radix.js safe Cleared by Jev triage; no further analysis needed
lib/rules/require-atomic-updates.js safe Cleared by Jev triage; no further analysis needed
lib/rules/require-await.js safe Cleared by Jev triage; no further analysis needed
lib/rules/require-unicode-regexp.js safe Cleared by Jev triage; no further analysis needed
lib/rules/require-yield.js safe Cleared by Jev triage; no further analysis needed
lib/rules/rest-spread-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/semi-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/semi-style.js safe Cleared by Jev triage; no further analysis needed
lib/rules/semi.js safe Cleared by Jev triage; no further analysis needed
lib/rules/sort-imports.js safe Cleared by Jev triage; no further analysis needed
lib/rules/sort-keys.js safe Cleared by Jev triage; no further analysis needed
lib/rules/sort-vars.js safe Cleared by Jev triage; no further analysis needed
lib/rules/space-before-blocks.js safe Cleared by Jev triage; no further analysis needed
lib/rules/space-before-function-paren.js safe Cleared by Jev triage; no further analysis needed
lib/rules/space-in-parens.js safe Cleared by Jev triage; no further analysis needed
lib/rules/space-infix-ops.js safe Cleared by Jev triage; no further analysis needed
lib/rules/space-unary-ops.js safe Cleared by Jev triage; no further analysis needed
lib/rules/spaced-comment.js safe No malicious patterns detected; the file is a legitimate ESLint rule for enforcing comment spacing and contains no network, filesystem, process, or dynamic code execution activity.
lib/rules/strict.js safe Cleared by Jev triage; no further analysis needed
lib/rules/switch-colon-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/symbol-description.js safe Cleared by Jev triage; no further analysis needed
lib/rules/template-curly-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/template-tag-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/unicode-bom.js safe Cleared by Jev triage; no further analysis needed
lib/rules/use-isnan.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/ast-utils.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/char-source.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/code-path-utils.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/fix-tracker.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/keywords.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/lazy-loading-rule-map.js safe No malicious patterns detected; the code implements a lazy-loading rule map for ESLint with no exfiltration, obfuscation, or dangerous execution.
lib/rules/utils/regular-expressions.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/string-utils.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/unicode/index.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/unicode/is-combining-character.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/unicode/is-emoji-modifier.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/unicode/is-regional-indicator-symbol.js safe Cleared by Jev triage; no further analysis needed
lib/rules/utils/unicode/is-surrogate-pair.js safe Cleared by Jev triage; no further analysis needed
lib/rules/valid-typeof.js safe Cleared by Jev triage; no further analysis needed
lib/rules/vars-on-top.js safe Cleared by Jev triage; no further analysis needed
lib/rules/wrap-iife.js safe Cleared by Jev triage; no further analysis needed
lib/rules/wrap-regex.js safe Cleared by Jev triage; no further analysis needed
lib/rules/yield-star-spacing.js safe Cleared by Jev triage; no further analysis needed
lib/rules/yoda.js safe Cleared by Jev triage; no further analysis needed
lib/services/parser-service.js safe Cleared by Jev triage; no further analysis needed
lib/services/processor-service.js safe No malicious patterns detected
lib/services/suppressions-service.js safe This is ESLint's legitimate SuppressionsService implementation with no malicious patterns: no network calls, no env var harvesting, no dynamic code execution, no process spawning, and file I/O is limited to a caller-specified suppressions file path.
lib/services/warning-service.js safe Cleared by Jev triage; no further analysis needed
lib/shared/ajv.js safe This file is a legitimate Ajv validator factory with no malicious patterns detected.
lib/shared/assert.js safe Cleared by Jev triage; no further analysis needed
lib/shared/ast-utils.js safe Cleared by Jev triage; no further analysis needed
lib/shared/deep-merge-arrays.js safe Cleared by Jev triage; no further analysis needed
lib/shared/directives.js safe Cleared by Jev triage; no further analysis needed
lib/shared/flags.js safe Cleared by Jev triage; no further analysis needed
lib/shared/logging.js safe Cleared by Jev triage; no further analysis needed
lib/shared/message-counts.js safe Cleared by Jev triage; no further analysis needed
lib/shared/naming.js safe Cleared by Jev triage; no further analysis needed
lib/shared/option-utils.js safe Cleared by Jev triage; no further analysis needed
lib/shared/relative-module-resolver.js safe This is a legitimate, well-documented utility wrapping Node's built-in Module.createRequire for resolving module paths, with no malicious patterns, network activity, credential access, or dynamic code execution.
lib/shared/serialization.js safe Cleared by Jev triage; no further analysis needed
lib/shared/severity.js safe Cleared by Jev triage; no further analysis needed
lib/shared/stats.js safe Cleared by Jev triage; no further analysis needed
lib/shared/string-utils.js safe Cleared by Jev triage; no further analysis needed
lib/shared/text-table.js safe Cleared by Jev triage; no further analysis needed
lib/shared/traverser.js safe Cleared by Jev triage; no further analysis needed
lib/universal.js safe Cleared by Jev triage; no further analysis needed
lib/unsupported-api.js safe The file only re-exports two internal ESLint modules and contains no malicious patterns.
messages/all-matched-files-ignored.js safe Cleared by Jev triage; no further analysis needed
messages/config-file-missing.js safe Cleared by Jev triage; no further analysis needed
messages/config-plugin-missing.js safe Cleared by Jev triage; no further analysis needed
messages/config-serialize-function.js safe Cleared by Jev triage; no further analysis needed
messages/eslintrc-incompat.js safe Cleared by Jev triage; no further analysis needed
messages/eslintrc-plugins.js safe Cleared by Jev triage; no further analysis needed
messages/extend-config-missing.js safe Cleared by Jev triage; no further analysis needed
messages/failed-to-read-json.js safe Cleared by Jev triage; no further analysis needed
messages/file-not-found.js safe Cleared by Jev triage; no further analysis needed
messages/invalid-rule-options.js safe Cleared by Jev triage; no further analysis needed
messages/invalid-rule-severity.js safe Cleared by Jev triage; no further analysis needed
messages/no-config-found.js safe Cleared by Jev triage; no further analysis needed
messages/plugin-conflict.js safe Cleared by Jev triage; no further analysis needed
messages/plugin-invalid.js safe Cleared by Jev triage; no further analysis needed
messages/plugin-missing.js safe Cleared by Jev triage; no further analysis needed
messages/rule-unsupported-language.js safe Cleared by Jev triage; no further analysis needed
messages/shared.js safe Cleared by Jev triage; no further analysis needed
messages/whitespace-found.js safe Cleared by Jev triage; no further analysis needed

Scanned versions of eslint

VersionVerdictFilesScanned
10.12.0 Needs review 410 Oct 6, 2026

Frequently asked questions

Is eslint safe to use?

No confirmed malware was found in eslint@10.12.0, but the review flagged 6 medium, 18 low severity findings for risky patterns worth checking before you rely on it.

Does eslint contain malware?

No malware was identified in eslint@10.12.0 when Togoder Security scanned it on Oct 6, 2026. A new version can still introduce malicious code, so scan the exact versions in your lockfile.

How was eslint checked?

Togoder Security downloaded the published npm package and had an AI model read its 410 source files, looking for install scripts, credential access, network exfiltration, obfuscation, backdoors and crypto-wallet theft. The results are cached by file hash and shown here.

How do I scan eslint together with the rest of my dependencies?

Upload your lockfile at https://security.togoder.click/scan or call the API documented at https://security.togoder.click/api-docs. Files that have already been scanned, like the ones in eslint@10.12.0, cost nothing.

Related security reports