v1.1.0
Added
farrier-kit/node: a Node-only, DNS-pinnedfetchfor resolving untrusted
LNURL and Lightning Address hosts on a server.createPinnedFetchreturns a
fetchImplforresolveLnurlPay,verifyLud21andcreateCapabilityProbe.
It resolves the hostname once, rejects the request if any answer is private,
loopback, link-local, reserved, documentation-only or multicast (IPv4 and
IPv6), and pins the socket to the approved address by overriding its DNS
lookup, so there is no second resolution for a rebinding race to win. The TLS
SNI, certificate check and Host header stay on the original hostname, and it
never follows redirects. This closes the DNS-rebinding window a check-then-
fetchurlGuardcannot. Browser and other entries are unchanged.
Notes
- The
/nodeentry is server-side I/O, not part of the language-neutral vector
contract; native ports implement their own pinning against the same IP policy.
Reproducible build: byte-identical output verified across two independent CI runners.
Artefact integrity
file: farrier-kit-1.1.0.tgz
size: 122129 bytes
sha256: 80f736ee6d2ccf9f1c04a63ef27a62f067740629e875da541a01554f24ce57b5
sha512-g8hZMLZ3ef0yrSEr22F9wovjr+LaggSUeOGFGLmAny8zAvRmc+f+OBSf58LtZJVUhoLeQ1i0eQyX6q7H5RzxtQ==
Verify against the registry tarball:
curl -sLO https://registry.npmjs.org/farrier-kit/-/farrier-kit-1.1.0.tgz
shasum -a 256 farrier-kit-1.1.0.tgz