1sealsemantic last-mile verification

Research / Finding

Global executable ownership check accepts a prefix-colliding package directory

F-NPM-CLI-001

Public snapshot: 26 Sep 2026. Status, releases and attribution belong to each source below; none is inferred from another record.

Read the evidence · View in research browse

Recorded evidence

—score not recorded
npm/cliReported fixnpm/cli

Global executable ownership check accepts a prefix-colliding package directory

Fixed in: bin-links 6.0.1; also verified in npm 11.15.0 (bin-links 6.0.2)

fixed publicly
details
Finding IDs
F-NPM-CLI-001
Status
fixed publicly
Fixed in
bin-links 6.0.1; also verified in npm 11.15.0 (bin-links 6.0.2)
Note
When a user installs a package globally, bin-links decides whether an existing executable belongs to that package. A startsWith comparison also accepted sibling directories whose names share the same prefix, permitting an unrelated executable link or shim to be replaced without force. PR #173, merged 13 May 2026, requires an exact directory match or a prefix followed by the platform path separator in check-bin, link-gently and shim-bin, with regression tests. The boundary check is present in bin-links 6.0.1 and the bin-links 6.0.2 bundled with npm 11.15.0. This concerns package installation and executable ownership, not execution without a user installing a package. Public-source review does not establish vendor attribution, an assigned severity or a fresh end-to-end retest.

F-NPM-CLI-001: Access control. A textual path prefix is mistaken for package ownership, allowing replacement of another package's executable link. Reviewed 26 Sep 2026. Mechanism assessed by 1seal.

Mechanism source for F-NPM-CLI-001

Security area (1seal assessment): Authorization. A textual path prefix is mistaken for package ownership, allowing replacement of another package's executable link. Reviewed 26 Sep 2026.

Clarify or correct this record privately. The email subject includes the finding ID. For an existing case, continue the agreed private thread. Do not post unpublished vulnerability details in public issues. Research disclosure policy.

How this page groups evidence

This identifier groups recorded evidence; it is not an additional CVE, independent-vulnerability count or guarantee of vendor confirmation. Fixed code, released versions, attribution and independent discovery are distinct claims. Absent metadata means not recorded, not disproved. Counting rules.