fix: strip wildcard prefixes from vendored blocklist entries
All checks were successful
check / check (push) Successful in 13s
All checks were successful
check / check (push) Successful in 13s
The MetaMask blocklist contains 2 entries with '*.' wildcard prefixes (e.g. *.coinbase-563513.com). These were stored literally and never matched because hostnameVariants() doesn't generate '*.' prefixed strings. Fix: normalizeDomain() strips the '*.' prefix at load time and during delta computation. The subdomain matching in hostnameVariants() already handles child domains correctly. Found during review.
This commit is contained in:
@@ -5,6 +5,7 @@ const {
|
||||
getDeltaSize,
|
||||
hostnameVariants,
|
||||
binarySearch,
|
||||
normalizeDomain,
|
||||
_reset,
|
||||
} = require("../src/shared/phishingDomains");
|
||||
|
||||
@@ -67,6 +68,35 @@ describe("phishingDomains", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("normalizeDomain", () => {
|
||||
test("strips *. wildcard prefix", () => {
|
||||
expect(normalizeDomain("*.evil.com")).toBe("evil.com");
|
||||
expect(normalizeDomain("*.sub.evil.com")).toBe("sub.evil.com");
|
||||
});
|
||||
|
||||
test("lowercases domains", () => {
|
||||
expect(normalizeDomain("Evil.COM")).toBe("evil.com");
|
||||
expect(normalizeDomain("*.Evil.COM")).toBe("evil.com");
|
||||
});
|
||||
|
||||
test("passes through normal domains unchanged", () => {
|
||||
expect(normalizeDomain("example.com")).toBe("example.com");
|
||||
});
|
||||
});
|
||||
|
||||
describe("wildcard domain handling", () => {
|
||||
test("wildcard blacklist entries match via loadConfig", () => {
|
||||
loadConfig({
|
||||
blacklist: ["*.scam-site.com", "normal-scam.com"],
|
||||
whitelist: [],
|
||||
});
|
||||
// *.scam-site.com is normalized to scam-site.com
|
||||
expect(isPhishingDomain("scam-site.com")).toBe(true);
|
||||
expect(isPhishingDomain("sub.scam-site.com")).toBe(true);
|
||||
expect(isPhishingDomain("normal-scam.com")).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("vendored baseline detection", () => {
|
||||
// These tests verify that the vendored phishing-domains.json
|
||||
// is loaded and searchable without any delta loaded.
|
||||
|
||||
Reference in New Issue
Block a user