You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(review): close SSRF and lockfile-tamper detection gaps (#7826)
* fix(review): recognize IPv4-compatible IPv6 hosts in the SSRF guard (#7777)
ipv6IsPrivateOrLocal in safe-url.ts recognized the IPv4-mapped IPv6 form
(::ffff:a.b.c.d, normalized by new URL() to ::ffff:7f00:1) but not the older,
ffff:-less IPv4-compatible form (::a.b.c.d, normalized the same bracket-free
way to ::7f00:1). A URL like https://[::169.254.169.254] (cloud metadata) or
https://[::127.0.0.1] (loopback) passed the guard as a public host.
Generalize the existing hex-pair-to-IPv4 conversion to treat "ffff:" as
optional, so both encodings are checked the same way. Applied identically to
the byte-identical engine twin (packages/loopover-engine/src/review/safe-url.ts)
to keep engine-parity:drift-check passing.
Closes#7777
* fix(review): flag lockfile tamper changes with no entry header in view (#7778)
scanPackageLockPatch tracked which package-lock entry a line belonged to only
by watching for that entry's own opening "node_modules/<pkg>": { line in the
diff. git's default 3-line context doesn't guarantee that line survives when
a changed resolved/integrity/version field sits deeper into the entry -- when
it doesn't, currentEntryKey stayed null for the whole hunk and the change was
silently dropped instead of flagged.
Add a fallback "unattributed entry" bucket for a tracked-field change with no
known active entry, gated by a new insideRejectedBlock flag so the existing
deliberate-skip case (a malformed "node_modules/" key with nothing after the
marker) still behaves exactly as before.
Closes#7778
---------
Co-authored-by: loopover-orb[bot] <296761690+loopover-orb[bot]@users.noreply.github.com>
0 commit comments