deps: update to wabac.js 2.22.15 for improved CSP hardening (#417)

bump to 2.3.6
This commit is contained in:
Ilya Kreymer
2025-05-01 18:27:29 -07:00
committed by GitHub
parent e2c3f69c7e
commit 15a2ee4937
4 changed files with 64 additions and 6 deletions
+6
View File
@@ -1,6 +1,12 @@
<!-- cSpell:ignoreRegExp @\w+ --> <!-- cSpell:ignoreRegExp @\w+ -->
## CHANGES ## CHANGES
v2.3.6
- Security: Improved CSP policy again, block loading of iframes outsides of replay (via wabac.js 2.22.15)
- Tests: Update tests to check CSP behavior
v2.3.5 v2.3.5
- Fidelity: Update to wabac.js 2.22.14, various fidelity improvements - Fidelity: Update to wabac.js 2.22.14, various fidelity improvements
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"name": "replaywebpage", "name": "replaywebpage",
"productName": "ReplayWeb.page", "productName": "ReplayWeb.page",
"version": "2.3.5", "version": "2.3.6",
"description": "Serverless Web Archive Replay", "description": "Serverless Web Archive Replay",
"repository": "https://github.com/webrecorder/replayweb.page", "repository": "https://github.com/webrecorder/replayweb.page",
"homepage": "https://replayweb.page/", "homepage": "https://replayweb.page/",
@@ -22,7 +22,7 @@
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^5.15.4", "@fortawesome/fontawesome-free": "^5.15.4",
"@shoelace-style/shoelace": "~2.15.1", "@shoelace-style/shoelace": "~2.15.1",
"@webrecorder/wabac": "^2.22.14", "@webrecorder/wabac": "^2.22.15",
"bulma": "^0.9.3", "bulma": "^0.9.3",
"electron-log": "^4.4.1", "electron-log": "^4.4.1",
"electron-updater": "^6.3.9", "electron-updater": "^6.3.9",
+52
View File
@@ -72,3 +72,55 @@ test("require subdomain iframe", async ({ page }) => {
"Sorry, due to security settings, this ReplayWeb.page embed only be viewed within a subdomain iframe.", "Sorry, due to security settings, this ReplayWeb.page embed only be viewed within a subdomain iframe.",
); );
}); });
test("csp blocking in place", async ({ page }) => {
await page.goto("http://localhost:9990/embed.html");
const frame = page
.locator("replay-web-page")
.frameLocator("iframe")
.locator("replay-app-main wr-item wr-coll-replay")
.frameLocator("iframe")
.locator(":root");
const didNotFetch = await frame.evaluate(async () => {
const blocked = async (win, url) => {
try {
const resp = await win.fetch(url);
if (!resp.ok) {
return 1;
}
return 0;
} catch (e) {
return 1;
}
};
let block = 0;
// blocks (1 - 3)
block += await blocked(window, "https://webrecorder.net/");
block += await blocked(window, "http://localhost:9990/ui.js");
block += await blocked(window, "http://localhost:9990/sw.js");
const iframe = document.createElement("iframe");
iframe.src = "http://localhost:9990/static/wombat.js";
document.body.appendChild(iframe);
await new Promise((resolve) => setTimeout(resolve, 1000));
// (4) still blocked from loading due to csp
block += await blocked(iframe.contentWindow, "https://webrecorder.net/");
// (5-6) blocked by csp policy, even though local
block += await blocked(iframe.contentWindow, "http://localhost:9990/sw.js");
block += await blocked(
iframe.contentWindow,
"http://localhost:9990/static/wombat.js",
);
return block;
});
expect(didNotFetch).toBe(6);
});
+4 -4
View File
@@ -1028,10 +1028,10 @@
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
"@webrecorder/wabac@^2.22.14": "@webrecorder/wabac@^2.22.15":
version "2.22.14" version "2.22.15"
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.22.14.tgz#6f7503c2f06d126a1fb1ff754ce081836602e202" resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.22.15.tgz#2b5c31cf16fdd2055e7bae331fa26488359df9cd"
integrity sha512-dcomAtul8dML/fJZjQNqRCWVLjirmuJPqPDNFv/7hFsm9SUHt9LdbXytQqndCWqCPvu6RVA4lfdXSA4O8erClQ== integrity sha512-GJvFNCnDdvpij1mBNRRpT4zfr66W5td4NpNKEPmBtEwTPdlRyNlU96ZSL3NRVtzvg7RG6LpI6Oa86lKd6EUpBA==
dependencies: dependencies:
"@peculiar/asn1-ecc" "^2.3.4" "@peculiar/asn1-ecc" "^2.3.4"
"@peculiar/asn1-schema" "^2.3.3" "@peculiar/asn1-schema" "^2.3.3"