registry  /  eslint-plugin-find-duplicates  /  1.0.0

eslint-plugin-find-duplicates@1.0.0

ESLint plugin to find structural code duplicates in TS/React/Vue/Svelte projects

AI Security Review

scanned 2h ago · by lpm-firewall-ai

Install-time code downloads an unverified mutable binary, stores it inside the package, and makes it executable. ESLint runtime later executes it on the user's project directory.

Static reason
One or more suspicious static signals were detected.
Trigger
`npm install` followed by ESLint invoking the `no-duplicates` rule
Impact
A release-side compromise or substituted latest binary can execute arbitrary code during linting.
Mechanism
remote binary staging and execution
Rationale
Source inspection confirms an unverified install-time remote executable download that is later run on consumer projects. This is a real supply-chain risk, but the package source alone does not prove the fetched binary is malicious.
Evidence
package.jsoninstall.jsrunner.jsrules/no-duplicates.jsREADME.mdbin/find-dups
Network endpoints1
github.com/DecSec2030/find-duplicates/releases/latest/download/

Decision evidence

public snapshot
AI called this Suspicious at 91.0% confidence as Dangerous Capability with low false-positive risk.
Evidence for warning
  • `package.json` runs `node install.js` in `postinstall`.
  • `install.js` downloads a platform binary from GitHub Releases `latest` without checksum or signature verification.
  • `install.js` writes the downloaded executable to `bin/find-dups` and marks it executable.
  • `runner.js` executes that downloaded binary against the ESLint project root.
Evidence against
  • No credential, environment, or broad filesystem harvesting appears in package JavaScript.
  • No exfiltration endpoint or AI-agent/control-surface mutation is present.
  • Shell use is limited to `chmod` and `which`/`where` via fixed commands and arguments.
Behavioral surface
Source
ChildProcessFilesystemNetwork
Supply chain
UrlStrings
ManifestNo manifest risk signals triggered.
scanned 4 file(s), 7.11 KB of source, external domains: github.com

Source & flagged code

2 flagged · loading source
package.jsonView file
scripts.postinstall = node install.js
High
Install Time Lifecycle Scripts

Package defines install-time lifecycle scripts.

package.jsonView on unpkg
scripts.postinstall = node install.js
Medium
Ambiguous Install Lifecycle Script

Install-time lifecycle script is not statically allowlisted and needs review.

package.jsonView on unpkg

Findings

1 High2 Medium3 Low
HighInstall Time Lifecycle Scriptspackage.json
MediumAmbiguous Install Lifecycle Scriptpackage.json
MediumNetwork
LowScripts Present
LowFilesystem
LowUrl Strings