Today, any package in the dep graph can declare perry.nativeLibrary (linking arbitrary native code) or perry.compilePackages (compiling untrusted TS into the binary), and Perry accepts it silently. These are the two attack surfaces Perry itself introduced over Node — they should require explicit host-app opt-in.
Mechanism
Read perry.allow.nativeLibrary and perry.allow.compilePackages from the host's package.json only — never from deps. At resolve time, if a transitive dep introduces either one and isn't in the host's allowlist, fail with a clear message:
package X declares perry.nativeLibrary but is not in your host package.json's perry.allow.nativeLibrary — review the package and add it explicitly.
Zero runtime cost (compile-time refusal).
Acceptance
Part of the supply-chain hardening series. Closes the two attack surfaces Perry itself introduced. Host-app-controlled. Zero runtime cost.
Today, any package in the dep graph can declare
perry.nativeLibrary(linking arbitrary native code) orperry.compilePackages(compiling untrusted TS into the binary), and Perry accepts it silently. These are the two attack surfaces Perry itself introduced over Node — they should require explicit host-app opt-in.Mechanism
Read
perry.allow.nativeLibraryandperry.allow.compilePackagesfrom the host'spackage.jsononly — never from deps. At resolve time, if a transitive dep introduces either one and isn't in the host's allowlist, fail with a clear message:Zero runtime cost (compile-time refusal).
Acceptance
package.jsonkeys:perry.allow.nativeLibrary: ["pkg-a"],perry.allow.compilePackages: [...]"@scope/*") for trusted scopesperry auditlists deps that would need allowlistingPart of the supply-chain hardening series. Closes the two attack surfaces Perry itself introduced. Host-app-controlled. Zero runtime cost.