Shared security patch analysis results
AI Used: DEEPSEEK deepseek-chat--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.filter = new CanvasFilter({filter: "componentTransfer", funcR: {type: "identity"},@@ -37,7 +37,7 @@ for (const color of inputColors) { ctx.fillStyle = `rgba(${color[0]}, ${color[1]}, ${color[2]}, 1)`, ctx.fillRect(0, 0, 10, 10);- _assertPixel(offscreenCanvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`);+ _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`); } t.done();
After analyzing the provided code diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) and corresponding updates to the variable usage. Here's the analysis following your requested format: Vulnerability Existed: no [No security vulnerability found] [testing/web-platform/tests/html/canvas/offscreen/filters/2d.filter.canvasFilterObject.componentTransfer.identity.html] [Lines 17-18, 37] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 5, 5, color[0],color[1],color[2],255, "5,5", `${color[0]},${color[1]},${color[2]}`); The changes are purely cosmetic/refactoring in nature and don't appear to address any security issues. The functionality remains exactly the same, just with a different variable name.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/taskcluster/ci/toolchain/sccache.yml+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/taskcluster/ci/toolchain/sccache.yml@@ -27,7 +27,7 @@ fetches: toolchain: - linux64-rust-1.57- - linux64-clang-13+ - linux64-clang-toolchain - linux64-binutils - sysroot-x86_64-linux-gnu@@ -43,8 +43,8 @@ fetches: toolchain: - linux64-rust-macos-1.57- - linux64-clang-13- - linux64-cctools-port-clang-13+ - linux64-clang-toolchain+ - linux64-cctools-port - macosx64-sdk-11.0 macosx64-aarch64-sccache:@@ -59,8 +59,8 @@ fetches: toolchain: - linux64-rust-macos-1.57- - linux64-clang-13- - linux64-cctools-port-clang-13+ - linux64-clang-toolchain+ - linux64-cctools-port - macosx64-sdk-11.0 win64-sccache:
Based on the provided diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be updates to toolchain dependencies, likely for version consistency or maintenance purposes. Here's the analysis: Vulnerability Existed: no No security vulnerability found [taskcluster/ci/toolchain/sccache.yml] [Lines 27,43-44,59-60] [Old Code] - linux64-clang-13 - linux64-cctools-port-clang-13 [Fixed Code] - linux64-clang-toolchain - linux64-cctools-port The changes involve: 1. Replacing specific versioned clang toolchain (linux64-clang-13) with a more generic reference (linux64-clang-toolchain) 2. Similarly updating cctools-port references to remove version-specific naming These appear to be build system improvements rather than security fixes. The changes might be related to better toolchain management but don't indicate any patched vulnerabilities.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.object.string.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.object.string.worker.js@@ -13,8 +13,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); var imgdata = ctx.getImageData(0, 0, 10, 10); imgdata.data[0] = 100;
Analysis of the code diff: 1. Vulnerability Existed: no No specific vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/pixel-manipulation/2d.imageData.object.string.worker.js [Lines] 13-14 Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); Additional Details: - The change appears to be a simple variable renaming from `offscreenCanvas` to `canvas` - No security implications are visible in this change - The modification doesn't affect any security-sensitive operations - The change is likely for code consistency or readability purposes rather than security fixes
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/webxr/resources/webxr_test_constants.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/webxr/resources/webxr_test_constants.js@@ -94,6 +94,11 @@ orientation: [0, 0, 0, 1] };+const FIRST_PERSON_OFFSET = {+ position: [0, 0.1, 0],+ orientation: [0, 0, 0, 1]+};+ const VALID_VIEWS = [{ eye:"left", projectionMatrix: VALID_PROJECTION_MATRIX,@@ -105,6 +110,15 @@ viewOffset: RIGHT_OFFSET, resolution: VALID_RESOLUTION },+];++const VALID_SECONDARY_VIEWS = [{+ eye: "none",+ projectionMatrix: VALID_PROJECTION_MATRIX,+ viewOffset: FIRST_PERSON_OFFSET,+ resolution: VALID_RESOLUTION,+ isFirstPersonObserver: true+ } ]; const NON_IMMERSIVE_VIEWS = [{@@ -126,12 +140,14 @@ 'light-estimation', 'anchors', 'depth-sensing',+ 'secondary-views', ]; const TRACKED_IMMERSIVE_DEVICE = { supportsImmersive: true, supportedModes: [ "inline", "immersive-vr"], views: VALID_VIEWS,+ secondaryViews: VALID_SECONDARY_VIEWS, viewerOrigin: IDENTITY_TRANSFORM, supportedFeatures: ALL_FEATURES, environmentBlendMode: "opaque",
Based on the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be adding new functionality (secondary views support) rather than patching security issues. Here's the analysis: Vulnerability Existed: no No security vulnerability found [testing/web-platform/tests/webxr/resources/webxr_test_constants.js] [Lines 94-140] [Old Code - missing secondary views constants and feature] [Fixed Code - adds secondary views support with FIRST_PERSON_OFFSET, VALID_SECONDARY_VIEWS, and updates ALL_FEATURES/TRACKED_IMMERSIVE_DEVICE] The changes include: 1. Adding FIRST_PERSON_OFFSET constant 2. Adding VALID_SECONDARY_VIEWS array 3. Adding 'secondary-views' to ALL_FEATURES 4. Adding secondaryViews to TRACKED_IMMERSIVE_DEVICE These appear to be feature additions rather than security fixes. The code is part of test constants for WebXR functionality.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/the-canvas-state/2d.state.saverestore.fillStyle.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); // Test that restore() undoes any modifications var old = ctx.fillStyle;
Analysis of the provided code diff: 1. Vulnerability Existed: no Variable Renaming [File] [Lines 17-18] Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); Additional Details: - This appears to be a simple variable renaming from 'offscreenCanvas' to 'canvas' for consistency or readability purposes. - No security vulnerability is addressed or introduced by this change. - The functionality remains exactly the same, only the variable name has changed. - No security-related patterns (like XSS, injection, etc.) are involved in this change.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.width.basic.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/line-styles/2d.line.width.basic.worker.js@@ -13,8 +13,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -35,20 +35,20 @@ ctx.lineTo(75, 35); ctx.stroke(); ctx.fillRect(65, 15, 20, 20);-_assertPixel(offscreenCanvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255");-_assertPixel(offscreenCanvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255");+_assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255");+_assertPixel(canvas, 15,25, 0,255,0,255, "15,25", "0,255,0,255");+_assertPixel(canvas, 16,25, 0,255,0,255, "16,25", "0,255,0,255");+_assertPixel(canvas, 25,25, 0,255,0,255, "25,25", "0,255,0,255");+_assertPixel(canvas, 34,25, 0,255,0,255, "34,25", "0,255,0,255");+_assertPixel(canvas, 35,25, 0,255,0,255, "35,25", "0,255,0,255");+_assertPixel(canvas, 36,25, 0,255,0,255, "36,25", "0,255,0,255");+_assertPixel(canvas, 64,25, 0,255,0,255, "64,25", "0,255,0,255");+_assertPixel(canvas, 65,25, 0,255,0,255, "65,25", "0,255,0,255");+_assertPixel(canvas, 66,25, 0,255,0,255, "66,25", "0,255,0,255");+_assertPixel(canvas, 75,25, 0,255,0,255, "75,25", "0,255,0,255");+_assertPixel(canvas, 84,25, 0,255,0,255, "84,25", "0,255,0,255");+_assertPixel(canvas, 85,25, 0,255,0,255, "85,25", "0,255,0,255");+_assertPixel(canvas, 86,25, 0,255,0,255, "86,25", "0,255,0,255"); t.done(); });
After analyzing the provided code diff, I can identify that this is a simple variable renaming change with no security implications. Here's the analysis: Vulnerability Existed: no Variable Renaming [File] [Lines 13-14, 35-48] Old Code: ```javascript var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); ... ``` Fixed Code: ```javascript var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 14,25, 0,255,0,255, "14,25", "0,255,0,255"); ... ``` This change simply renames the variable `offscreenCanvas` to `canvas` throughout the file. There are no security vulnerabilities being fixed here - it's purely a code style/readability improvement. The functionality remains exactly the same. No security-related patterns or vulnerabilities are being addressed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/fill-and-stroke-styles/2d.gradient.empty.html@@ -17,15 +17,15 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); var g = ctx.createLinearGradient(0, 0, 0, 50); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50);-_assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2);+_assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); t.done(); });
Based on the provided diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely cosmetic/refactoring (variable name change from `offscreenCanvas` to `canvas` and corresponding updates to references). Here's the analysis: Vulnerability Existed: no No security vulnerability [File] [Lines 17-25] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixelApprox(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixelApprox(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 2); The changes don't affect any security-related functionality or introduce/fix any security issues. It's simply a variable renaming for better clarity or consistency.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/third_party/rust/neqo-qpack/src/encoder.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/third_party/rust/neqo-qpack/src/encoder.rs@@ -124,7 +124,7 @@ loop { let mut recv = ReceiverConnWrapper::new(conn, stream_id); match self.instruction_reader.read_instructions(&mut recv) {- Ok(instruction) => self.call_instruction(instruction, &mut conn.qlog_mut())?,+ Ok(instruction) => self.call_instruction(instruction, conn.qlog_mut())?, Err(Error::NeedMoreData) => break Ok(()), Err(e) => break Err(e), }
Let me analyze the code diff for potential security vulnerabilities. Vulnerability Existed: not sure [Potential Mutable Reference Issue] [third_party/rust/neqo-qpack/src/encoder.rs] [Lines 124] [Old Code] `Ok(instruction) => self.call_instruction(instruction, &mut conn.qlog_mut())?` [Fixed Code] `Ok(instruction) => self.call_instruction(instruction, conn.qlog_mut())?` Additional Details: The change removes an unnecessary mutable reference (`&mut`) when passing the qlog parameter to `call_instruction`. While this doesn't appear to be fixing a known vulnerability, it could potentially be related to: 1. Preventing unintended mutable access 2. Fixing potential race conditions in concurrent contexts 3. Aligning with Rust's borrowing rules more strictly However, without more context about the `qlog_mut()` implementation and how it's used, I can't definitively say this was a security fix. It might simply be a code quality improvement. No other obvious vulnerabilities are apparent in this small diff. The change is quite minimal and focused on reference handling.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/browser/components/extensions/test/browser/browser_ext_menus_incognito.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/browser/components/extensions/test/browser/browser_ext_menus_incognito.js@@ -118,7 +118,7 @@ }); // Open and close a menu on the private window.- let menu = await openContextMenu("body", privateWindow);+ let menu = await openContextMenu("body div", privateWindow); // We should not see the "not_allowed" extension here. ok( !privateWindow.document.getElementById(extMenuId),
Based on the provided code diff, here's the analysis: Vulnerability Existed: not sure [Potential XSS or Context Menu Injection] [browser/components/extensions/test/browser/browser_ext_menus_incognito.js] [Lines 118] [Old Code] let menu = await openContextMenu("body", privateWindow); [Fixed Code] let menu = await openContextMenu("body div", privateWindow); Additional Details: The change modifies the context menu opening selector from "body" to "body div". While this appears to be a test file modification, the change could potentially relate to: 1. More precise context menu targeting (security improvement) 2. Preventing unintended context menu triggers 3. Better isolation of test cases However, without more context about the test scenario and the surrounding code, it's difficult to determine if this was fixing an actual security vulnerability or just improving test reliability. The change could potentially relate to preventing context menu injection attacks by being more specific about the target element.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/js/src/shell/fuzz-flags.txt+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/js/src/shell/fuzz-flags.txt@@ -53,6 +53,7 @@ --no-warp-generator --no-warp-async --large-arraybuffers+--no-jit-backend # GC-related # These 2 flags can cause the shell to slow down
Based on the provided diff, I'll analyze it for potential security fixes: 1. Vulnerability Existed: not sure [No specific vulnerability name] [js/src/shell/fuzz-flags.txt] [Lines 53-54] [Old Code] --no-warp-generator --no-warp-async --large-arraybuffers [Fixed Code] --no-warp-generator --no-warp-async --large-arraybuffers --no-jit-backend Additional Details: - The change adds a new flag `--no-jit-backend` to the fuzzing configuration - While this could potentially relate to security (as JIT compilers have been sources of vulnerabilities in the past), there's no direct evidence this was fixing a specific known vulnerability - The change might be preventive rather than corrective, as it disables the JIT backend during fuzzing which could help uncover more stability issues - Without more context about why this flag was added, we can't definitively say it was fixing a security vulnerability
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/accessible/atk/AccessibleWrap.cpp+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/accessible/atk/AccessibleWrap.cpp@@ -1276,7 +1276,9 @@ } break; case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE:- g_signal_emit_by_name(atkObj, "load_complete");+ if (accessible->IsDoc()) {+ g_signal_emit_by_name(atkObj, "load_complete");+ } // XXX - Handle native dialog accessibles. if (!accessible->IsRoot() && accessible->HasARIARole() && accessible->ARIARole() == roles::DIALOG) {@@ -1286,11 +1288,15 @@ break; case nsIAccessibleEvent::EVENT_DOCUMENT_RELOAD:- g_signal_emit_by_name(atkObj, "reload");+ if (accessible->IsDoc()) {+ g_signal_emit_by_name(atkObj, "reload");+ } break; case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_STOPPED:- g_signal_emit_by_name(atkObj, "load_stopped");+ if (accessible->IsDoc()) {+ g_signal_emit_by_name(atkObj, "load_stopped");+ } break; case nsIAccessibleEvent::EVENT_MENUPOPUP_START:@@ -1317,13 +1323,19 @@ atk_object_notify_state_change(wrapper, ATK_STATE_FOCUSED, true); break; case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE:- g_signal_emit_by_name(wrapper, "load_complete");+ if (aTarget->IsDoc()) {+ g_signal_emit_by_name(wrapper, "load_complete");+ } break; case nsIAccessibleEvent::EVENT_DOCUMENT_RELOAD:- g_signal_emit_by_name(wrapper, "reload");+ if (aTarget->IsDoc()) {+ g_signal_emit_by_name(wrapper, "reload");+ } break; case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_STOPPED:- g_signal_emit_by_name(wrapper, "load_stopped");+ if (aTarget->IsDoc()) {+ g_signal_emit_by_name(wrapper, "load_stopped");+ } break; case nsIAccessibleEvent::EVENT_MENUPOPUP_START: atk_focus_tracker_notify(wrapper); // fire extra focus event
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Signal Emission on Non-Document Objects] [accessible/atk/AccessibleWrap.cpp] [Lines 1276, 1286, 1291, 1317, 1323, 1329] [Old Code] g_signal_emit_by_name(atkObj, "load_complete"); g_signal_emit_by_name(atkObj, "reload"); g_signal_emit_by_name(atkObj, "load_stopped"); g_signal_emit_by_name(wrapper, "load_complete"); g_signal_emit_by_name(wrapper, "reload"); g_signal_emit_by_name(wrapper, "load_stopped"); [Fixed Code] if (accessible->IsDoc()) { g_signal_emit_by_name(atkObj, "load_complete"); } if (accessible->IsDoc()) { g_signal_emit_by_name(atkObj, "reload"); } if (accessible->IsDoc()) { g_signal_emit_by_name(atkObj, "load_stopped"); } if (aTarget->IsDoc()) { g_signal_emit_by_name(wrapper, "load_complete"); } if (aTarget->IsDoc()) { g_signal_emit_by_name(wrapper, "reload"); } if (aTarget->IsDoc()) { g_signal_emit_by_name(wrapper, "load_stopped"); } The changes add checks to ensure document-related signals are only emitted for document objects. While this appears to be a logical improvement, it's not clear if the previous behavior constituted a security vulnerability or just a potential logical error. The fix prevents potentially incorrect signal emissions on non-document objects, which could have led to unexpected behavior in ATK (Accessibility Toolkit) clients.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/devtools/client/debugger/src/reducers/expressions.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/devtools/client/debugger/src/reducers/expressions.js@@ -7,9 +7,6 @@ * @module reducers/expressions */-import { omit } from "lodash";--import { createSelector } from "reselect"; import { prefs } from "../utils/prefs"; export const initialExpressionState = () => ({@@ -100,7 +97,11 @@ } function storeExpressions({ expressions }) {- prefs.expressions = expressions.map(expression => omit(expression, "value"));+ // Return the expressions without the `value` property+ prefs.expressions = expressions.map(({ input, updating }) => ({+ input,+ updating,+ })); } function appendExpressionToList(state, value) {@@ -129,32 +130,4 @@ return newState; }-const getExpressionsWrapper = state => state.expressions;--export const getExpressions = createSelector(- getExpressionsWrapper,- expressions => expressions.expressions-);--export const getAutocompleteMatches = createSelector(- getExpressionsWrapper,- expressions => expressions.autocompleteMatches-);--export function getExpression(state, input) {- return getExpressions(state).find(exp => exp.input == input);-}--export function getAutocompleteMatchset(state) {- const input = state.expressions.currentAutocompleteInput;- if (input) {- return getAutocompleteMatches(state)[input];- }-}--export const getExpressionError = createSelector(- getExpressionsWrapper,- expressions => expressions.expressionError-);- export default update;
Here's the analysis of the provided code diff for security fixes: 1. Vulnerability Existed: not sure [Potential Information Exposure] [devtools/client/debugger/src/reducers/expressions.js] [Lines 100-104] [Old Code] ```javascript prefs.expressions = expressions.map(expression => omit(expression, "value")); ``` [Fixed Code] ```javascript prefs.expressions = expressions.map(({ input, updating }) => ({ input, updating, })); ``` Additional Details: The change removes the use of lodash's `omit` and explicitly selects only `input` and `updating` properties, potentially preventing unintended data exposure. However, it's unclear if this was actually exploitable. 2. Vulnerability Existed: not sure [Potential Code Simplification/Reduction of Attack Surface] [devtools/client/debugger/src/reducers/expressions.js] [Lines 129-130] [Old Code] ```javascript export const getExpressionError = createSelector( getExpressionsWrapper, expressions => expressions.expressionError ); ``` [Fixed Code] ```javascript // (Entire selector and related functions removed) ``` Additional Details: The removal of several selector functions and the `createSelector` import reduces code complexity and potential attack surface, though it's unclear if these posed actual security risks. Note: The diff shows significant code simplification and removal of selector functions, but without more context about how these were used, it's difficult to determine if these were actual security fixes or just code cleanup. The most notable change is the more explicit handling of expression data in `storeExpressions`.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html@@ -17,8 +17,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50);@@ -30,7 +30,7 @@ ctx.strokeRect(0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 16, 16);-_assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255");+_assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); t.done(); });
Based on the provided code diff, I'll analyze it for security vulnerabilities: 1. Vulnerability Existed: no No security vulnerability found [File] testing/web-platform/tests/html/canvas/offscreen/drawing-rectangles-to-the-canvas/2d.strokeRect.clip.html [Lines 17-30] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); ... _assertPixel(offscreenCanvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); ... _assertPixel(canvas, 50,25, 0,255,0,255, "50,25", "0,255,0,255"); The changes appear to be purely variable renaming (from `offscreenCanvas` to `canvas`) with no security implications. The functionality remains exactly the same, just with a different variable name. There are no security vulnerabilities being fixed in this diff.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/gfx/wr/webrender/src/util.rs+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/gfx/wr/webrender/src/util.rs@@ -722,21 +722,21 @@ // In this section, we do the forward and backward transformation // to confirm that its bijective. // We also do the inverse projection path, and confirm it functions the same way.- println!("Points:");+ info!("Points:"); for p in points { let pp = m.transform_point2d_homogeneous(*p); let p3 = pp.to_point3d().unwrap(); let pi = mi.transform_point3d_homogeneous(p3); let px = pi.to_point2d().unwrap(); let py = m.inverse_project(&pp.to_point2d().unwrap()).unwrap();- println!("\t{:?} -> {:?} -> {:?} -> ({:?} -> {:?}, {:?})", p, pp, p3, pi, px, py);+ info!("\t{:?} -> {:?} -> {:?} -> ({:?} -> {:?}, {:?})", p, pp, p3, pi, px, py); assert!(px.approx_eq_eps(p, &Point2D::new(0.001, 0.001))); assert!(py.approx_eq_eps(p, &Point2D::new(0.001, 0.001))); } } // project let rp = project_rect(&m, &r, &Box2D::from_size(Size2D::new(1000.0, 1000.0))).unwrap();- println!("Projected {:?}", rp);+ info!("Projected {:?}", rp); // one of the points ends up in the negative hemisphere assert_eq!(m.inverse_project(&rp.min), None); // inverse
Based on the provided code diff, here's the analysis: Vulnerability Existed: no Information Leak via Debug Logging [gfx/wr/webrender/src/util.rs] [Lines 722-738] [Old Code] println!("Points:"); println!("\t{:?} -> {:?} -> {:?} -> ({:?} -> {:?}, {:?})", p, pp, p3, pi, px, py); println!("Projected {:?}", rp); [Fixed Code] info!("Points:"); info!("\t{:?} -> {:?} -> {:?} -> ({:?} -> {:?}, {:?})", p, pp, p3, pi, px, py); info!("Projected {:?}", rp); Additional Details: - The change replaces `println!` with `info!` macros, which is a logging level change rather than a security fix - This appears to be a code quality improvement to use proper logging levels rather than direct stdout printing - No actual vulnerability is being fixed here, just better logging practices - The content being logged remains the same, just the output mechanism changed No other vulnerabilities are apparent in this diff. The changes are purely related to logging functionality.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/toolkit/components/nimbus/FeatureManifest.yaml+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/toolkit/components/nimbus/FeatureManifest.yaml@@ -33,6 +33,10 @@ Exposure is sent once per browsing session after the first urlbar query is made. variables:+ bestMatchEnabled:+ type: boolean+ fallbackPref: browser.urlbar.bestMatch.enabled+ description: Whether best match results are enabled merinoClientVariants: type: string fallbackPref: browser.urlbar.merino.clientVariants@@ -174,6 +178,10 @@ prefsButtonIcon: type: string description: Icon url to use for the preferences button+ topSitesContileEnabled:+ type: boolean+ fallbackPref: browser.topsites.contile.enabled+ description: Enable the Contile integration for Sponsored Top Sites pocketNewtab: description: The Pocket section in newtab hasExposure: false@@ -187,6 +195,18 @@ type: boolean fallbackPref: browser.newtabpage.activity-stream.discoverystream.compactLayout.enabled description: Enable compact cards on newtab grid+ hybridLayout:+ type: boolean+ fallbackPref: browser.newtabpage.activity-stream.discoverystream.hybridLayout.enabled+ description: Enable compact cards on newtab grid only for specific breakpoints + hideCardBackground:+ type: boolean+ fallbackPref: browser.newtabpage.activity-stream.discoverystream.hideCardBackground.enabled+ description: Removes Pocket card background and borders.+ fourCardLayout:+ type: boolean+ fallbackPref: browser.newtabpage.activity-stream.discoverystream.fourCardLayout.enabled+ description: Enable four Pocket cards per row. loadMore: type: boolean fallbackPref: browser.newtabpage.activity-stream.discoverystream.loadMore.enabled@@ -273,6 +293,18 @@ browser.newtabpage.activity-stream.discoverystream.newSponsoredLabel.enabled description: >- Updates the sponsored label position to below the image for Pocket cards on newtab.+ recsPersonalized:+ type: boolean+ fallbackPref: >-+ browser.newtabpage.activity-stream.discoverystream.recs.personalized+ description: >-+ Enables Pocket stories personalization.+ spocsPersonalized:+ type: boolean+ fallbackPref: >-+ browser.newtabpage.activity-stream.discoverystream.spocs.personalized+ description: >-+ Enables Pocket sponsored content personalization. saveToPocket: description: The save to Pocket feature hasExposure: false@@ -444,3 +476,12 @@ schema: >- "browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/Spotlight.schema.json" variables: {}+pbNewtab:+ description: Message shown on the PB newtab for Messaging System+ hasExposure: true+ exposureDescription: >-+ Exposure is sent if the message is about to be shown after trigger and targeting conditions on the message matched.+ isEarlyStartup: false+ schema: >-+ browser/components/newtab/content-src/asrouter/templates/PBNewtab/NewtabPromoMessage.schema.json+ variables: {}
Based on the provided code diff, I don't see any clear security vulnerabilities being fixed. The changes appear to be feature additions and configuration updates rather than security patches. Here's the analysis: 1. Vulnerability Existed: no No security vulnerability found [File] [Lines 33-37, 174-178, 187-201, 273-284, 444-476] [Old Code] - Missing configuration options [Fixed Code] - Added new configuration options for various features 2. Vulnerability Existed: no No security vulnerability found [File] [Lines 476-484] [Old Code] - Missing PB newtab message configuration [Fixed Code] - Added configuration for PB newtab messaging system The changes primarily consist of: - Adding new feature flags and configuration options - Adding new variables with fallback preferences - Adding new schema references - Adding new feature descriptions These appear to be normal feature development changes rather than security fixes. No CVE or known vulnerability patterns are evident in these changes. The modifications are focused on expanding functionality rather than addressing security concerns.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js@@ -13,8 +13,8 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d'); var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')"); let fonts = (self.fonts ? self.fonts : document.fonts);
Analysis: 1. Vulnerability Existed: no Variable Renaming [testing/web-platform/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js] [Lines 13-14] Old Code: var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); Fixed Code: var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); Additional Details: - This appears to be a simple variable renaming from `offscreenCanvas` to `canvas` with no security implications. - The functionality remains exactly the same, just with a different variable name. - No known vulnerability is being fixed here, just code style/readability improvement.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/dom/streams/ReadableStreamBYOBReader.h+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/streams/ReadableStreamBYOBReader.h@@ -44,12 +44,10 @@ bool IsDefault() override { return false; }; bool IsBYOB() override { return true; } ReadableStreamDefaultReader* AsDefault() override {- MOZ_CRASH("Should have verified IsDefaultFirst");+ MOZ_CRASH("Should have verified IsDefault first"); return nullptr; } ReadableStreamBYOBReader* AsBYOB() override { return this; }-- nsIGlobalObject* GetParentObject() const { return nullptr; } JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;@@ -79,6 +77,14 @@ JSContext* aCx, ReadableStreamBYOBReader* aReader, JS::HandleObject aView, ReadIntoRequest* aReadIntoRequest, ErrorResult& aRv);+void ReadableStreamBYOBReaderErrorReadIntoRequests(+ JSContext* aCx, ReadableStreamBYOBReader* aReader,+ JS::Handle<JS::Value> aError, ErrorResult& aRv);++void ReadableStreamBYOBReaderRelease(JSContext* aCx,+ ReadableStreamBYOBReader* aReader,+ ErrorResult& aRv);+ } // namespace dom } // namespace mozilla
Here's the analysis of the provided code diff: 1. Vulnerability Existed: not sure Error Handling Improvement [File] [Lines 44-46] [Old Code] MOZ_CRASH("Should have verified IsDefaultFirst"); [Fixed Code] MOZ_CRASH("Should have verified IsDefault first"); Note: This is more of an error message improvement than a clear security fix. 2. Vulnerability Existed: not sure Potential Memory Management Issue [File] [Lines 79-85] [Old Code] (No equivalent functions present) [Fixed Code] void ReadableStreamBYOBReaderErrorReadIntoRequests( JSContext* aCx, ReadableStreamBYOBReader* aReader, JS::Handle<JS::Value> aError, ErrorResult& aRv); void ReadableStreamBYOBReaderRelease(JSContext* aCx, ReadableStreamBYOBReader* aReader, ErrorResult& aRv); Note: The addition of these functions suggests improved resource management, but it's unclear if they're fixing a specific vulnerability. 3. Vulnerability Existed: not sure Potential Parent Object Access Issue [File] [Lines 48-49] [Old Code] nsIGlobalObject* GetParentObject() const { return nullptr; } [Fixed Code] (Removed entirely) Note: The removal of this method might indicate a security concern with parent object access, but this is speculative. The diff shows several changes that appear to be improvements, but without more context about the specific vulnerabilities being addressed, it's difficult to definitively identify security fixes. The changes seem to focus on error handling and resource management, which could potentially address security issues, but we can't be certain without additional information.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/dom/indexedDB/test/unit/test_storage_manager_estimate.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/dom/indexedDB/test/unit/test_storage_manager_estimate.js@@ -62,7 +62,20 @@ finishTest(); }-function setup() {+async function setup(isXOrigin) {+ // Bug 1746646: Make mochitests work with TCP enabled (cookieBehavior = 5)+ // Acquire storage access permission here so that the iframe has+ // first-party access to the storage estimate. Without this, it is+ // isolated and this test will always fail+ if (isXOrigin) {+ SpecialPowers.wrap(document).notifyUserGestureActivation();+ await SpecialPowers.addPermission(+ "storageAccessAPI",+ true,+ window.location.href+ );+ await SpecialPowers.wrap(document).requestStorageAccess();+ } SpecialPowers.pushPrefEnv( { set: [["dom.storageManager.enabled", true]],
Based on the provided diff, here's the analysis: Vulnerability Existed: not sure [Potential Cross-Origin Storage Access Issue] [dom/indexedDB/test/unit/test_storage_manager_estimate.js] [Lines 62-76] [Old Code] function setup() { [Fixed Code] async function setup(isXOrigin) { // Bug 1746646: Make mochitests work with TCP enabled (cookieBehavior = 5) // Acquire storage access permission here so that the iframe has // first-party access to the storage estimate. Without this, it is // isolated and this test will always fail if (isXOrigin) { SpecialPowers.wrap(document).notifyUserGestureActivation(); await SpecialPowers.addPermission( "storageAccessAPI", true, window.location.href ); await SpecialPowers.wrap(document).requestStorageAccess(); } Additional Details: 1. The change appears to be related to fixing test cases when Total Cookie Protection (TCP) is enabled (cookieBehavior = 5) 2. The fix adds proper storage access handling for cross-origin cases 3. While this is a test file change, it suggests there might have been cross-origin storage access issues in the actual implementation 4. The change ensures proper permission handling and user gesture requirements for storage access Note: Since this is a test file change, it's not directly indicating a security vulnerability in the product code, but rather fixing test cases to properly handle security-related features. The actual vulnerability (if any) would be in the implementation code that these tests verify.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/security/nss/lib/ssl/tls13hashstate.c+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/security/nss/lib/ssl/tls13hashstate.c@@ -63,7 +63,7 @@ } if (ss->xtnData.ech) {- /* Record that we received ECH. */+ /* Record that we received ECH. See sslEchCookieData */ rv = sslBuffer_AppendNumber(&cookieBuf, PR_TRUE, 1); if (rv != SECSuccess) { return SECFailure;@@ -80,6 +80,16 @@ return SECFailure; } rv = sslBuffer_AppendNumber(&cookieBuf, ss->xtnData.ech->aeadId, 2);+ if (rv != SECSuccess) {+ return SECFailure;+ }+ /* We need to send a ECH HRR Extension containing a signal for the client,+ * we must store the signal in the cookie so we can reconstruct the transcript+ * later. To avoid leaking whether ECH was accepted in the length of the cookie+ * we include the empty signal in the cookie regardless.+ */+ PR_ASSERT(SSL_BUFFER_LEN(&ss->ssl3.hs.greaseEchBuf) == TLS13_ECH_SIGNAL_LEN);+ rv = sslBuffer_AppendBuffer(&cookieBuf, &ss->ssl3.hs.greaseEchBuf); if (rv != SECSuccess) { return SECFailure; }@@ -143,11 +153,8 @@ unsigned char *cookie, unsigned int cookieLen, ssl3CipherSuite *previousCipherSuite, const sslNamedGroupDef **previousGroup,- PRBool *previousEchOffered,- HpkeKdfId *previousEchKdfId,- HpkeAeadId *previousEchAeadId,- PRUint8 *previousEchConfigId,- HpkeContext **previousEchHpkeCtx,+ PRBool *previousOfferedEch,+ sslEchCookieData *echData, PRBool recoverState) { SECStatus rv;@@ -156,20 +163,20 @@ sslBuffer messageBuf = SSL_BUFFER_EMPTY; sslReadBuffer echHpkeBuf = { 0 }; PRBool receivedEch;- PRUint8 echConfigId = 0; PRUint64 sentinel; PRUint64 cipherSuite;- HpkeContext *hpkeContext = NULL;- HpkeKdfId echKdfId = 0;- HpkeAeadId echAeadId = 0;+ sslEchCookieData parsedEchData = { 0 };+ sslReadBuffer greaseReadBuf = { 0 }; PRUint64 group; PRUint64 tmp64; const sslNamedGroupDef *selectedGroup; PRUint64 appTokenLen;+ sslBuffer greaseBuf = SSL_BUFFER_EMPTY; rv = ssl_SelfEncryptUnprotect(ss, cookie, cookieLen, plaintext, &plaintextLen, sizeof(plaintext)); if (rv != SECSuccess) {+ SSL_TRC(100, ("Error decrypting cookie.")); return SECFailure; }@@ -203,7 +210,7 @@ return SECFailure; } receivedEch = tmp64 == PR_TRUE;-+ *previousOfferedEch = receivedEch; if (receivedEch) { /* ECH config ID */ rv = sslRead_ReadNumber(&reader, 1, &tmp64);@@ -211,7 +218,7 @@ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CLIENT_HELLO, illegal_parameter); return SECFailure; }- echConfigId = tmp64;+ parsedEchData.configId = (PRUint8)tmp64; /* ECH Ciphersuite */ rv = sslRead_ReadNumber(&reader, 2, &tmp64);@@ -219,14 +226,29 @@ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CLIENT_HELLO, illegal_parameter); return SECFailure; }- echKdfId = (HpkeKdfId)tmp64;+ parsedEchData.kdfId = (HpkeKdfId)tmp64; rv = sslRead_ReadNumber(&reader, 2, &tmp64); if (rv != SECSuccess) { FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CLIENT_HELLO, illegal_parameter); return SECFailure; }- echAeadId = (HpkeAeadId)tmp64;+ parsedEchData.aeadId = (HpkeAeadId)tmp64;++ rv = sslRead_Read(&reader, TLS13_ECH_SIGNAL_LEN, &greaseReadBuf);+ if (rv != SECSuccess) {+ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CLIENT_HELLO, illegal_parameter);+ return SECFailure;+ }++ if (echData) {+ rv = sslBuffer_Append(&greaseBuf, greaseReadBuf.buf, greaseReadBuf.len);+ if (rv != SECSuccess) {+ FATAL_ERROR(ss, SSL_ERROR_INTERNAL_ERROR_ALERT, internal_error);+ return SECFailure;+ }+ parsedEchData.signal = greaseBuf;+ } /* ECH HPKE context may be empty. */ rv = sslRead_ReadVariable(&reader, 2, &echHpkeBuf);@@ -234,12 +256,11 @@ FATAL_ERROR(ss, SSL_ERROR_RX_MALFORMED_CLIENT_HELLO, illegal_parameter); return SECFailure; }-- if (previousEchHpkeCtx && echHpkeBuf.len) {+ if (echData && echHpkeBuf.len) { const SECItem hpkeItem = { siBuffer, CONST_CAST(unsigned char, echHpkeBuf.buf), echHpkeBuf.len };- hpkeContext = PK11_HPKE_ImportContext(&hpkeItem, NULL);- if (!hpkeContext) {+ parsedEchData.hpkeCtx = PK11_HPKE_ImportContext(&hpkeItem, NULL);+ if (!parsedEchData.hpkeCtx) { FATAL_ERROR(ss, PORT_GetError(), illegal_parameter); return SECFailure; }@@ -311,22 +332,8 @@ if (previousGroup) { *previousGroup = selectedGroup; }- if (previousEchOffered) {- *previousEchOffered = receivedEch;- }- if (receivedEch) {- if (previousEchConfigId) {- *previousEchConfigId = echConfigId;- }- if (previousEchKdfId) {- *previousEchKdfId = echKdfId;- }- if (previousEchAeadId) {- *previousEchAeadId = echAeadId;- }- if (previousEchHpkeCtx) {- *previousEchHpkeCtx = hpkeContext;- }+ if (echData) {+ PORT_Memcpy(echData, &parsedEchData, sizeof(parsedEchData)); } return SECSuccess; }
Here's the analysis of the provided code diff: 1. Vulnerability Existed: yes Information Leak via Cookie Length [File] security/nss/lib/ssl/tls13hashstate.c [Lines 63-80] Old Code: if (ss->xtnData.ech) { /* Record that we received ECH. */ rv = sslBuffer_AppendNumber(&cookieBuf, PR_TRUE, 1); Fixed Code: if (ss->xtnData.ech) { /* Record that we received ECH. See sslEchCookieData */ rv = sslBuffer_AppendNumber(&cookieBuf, PR_TRUE, 1); ... /* We need to send a ECH HRR Extension containing a signal for the client, * we must store the signal in the cookie so we can reconstruct the transcript * later. To avoid leaking whether ECH was accepted in the length of the cookie * we include the empty signal in the cookie regardless. */ PR_ASSERT(SSL_BUFFER_LEN(&ss->ssl3.hs.greaseEchBuf) == TLS13_ECH_SIGNAL_LEN); rv = sslBuffer_AppendBuffer(&cookieBuf, &ss->ssl3.hs.greaseEchBuf); 2. Vulnerability Existed: yes Insecure Parameter Handling [File] security/nss/lib/ssl/tls13hashstate.c [Lines 143-153] Old Code: PRBool *previousEchOffered, HpkeKdfId *previousEchKdfId, HpkeAeadId *previousEchAeadId, PRUint8 *previousEchConfigId, HpkeContext **previousEchHpkeCtx, Fixed Code: PRBool *previousOfferedEch, sslEchCookieData *echData, 3. Vulnerability Existed: yes Insufficient Error Logging [File] security/nss/lib/ssl/tls13hashstate.c [Lines 175-178] Old Code: if (rv != SECSuccess) { return SECFailure; } Fixed Code: if (rv != SECSuccess) { SSL_TRC(100, ("Error decrypting cookie.")); return SECFailure; } The changes indicate: 1. A fix for an information leak where the cookie length could reveal whether ECH was accepted 2. A restructuring of ECH parameter handling to use a consolidated structure instead of individual pointers 3. Added error logging for better debugging of cookie decryption failures The most significant security fix appears to be the first one, which prevents information leakage through cookie length variations. The other changes improve code organization and error handling.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.
--- /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_97_END/firefox-FIREFOX_RELEASE_97_END/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js+++ /root/PatchLeaks-main/products/firefox_downloads/FIREFOX_RELEASE_98_END/firefox-FIREFOX_RELEASE_98_END/testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js@@ -13,13 +13,13 @@ }); t.step(function() {-var offscreenCanvas = new OffscreenCanvas(100, 50);-var ctx = offscreenCanvas.getContext('2d');+var canvas = new OffscreenCanvas(100, 50);+var ctx = canvas.getContext('2d');-offscreenCanvas.width = ' 100';-offscreenCanvas.height = ' 100';-_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100");-_assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100");+canvas.width = ' 100';+canvas.height = ' 100';+_assertSame(canvas.width, 100, "canvas.width", "100");+_assertSame(canvas.height, 100, "canvas.height", "100"); t.done(); });
Based on the provided diff, I don't see any security vulnerabilities being fixed. The changes appear to be purely cosmetic/refactoring changes (variable renaming) and don't affect security. Here's the analysis: Vulnerability Existed: no No security vulnerability found [testing/web-platform/tests/html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.space.worker.js] [Lines 13-21] [Old Code] var offscreenCanvas = new OffscreenCanvas(100, 50); var ctx = offscreenCanvas.getContext('2d'); offscreenCanvas.width = ' 100'; offscreenCanvas.height = ' 100'; _assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100"); _assertSame(offscreenCanvas.height, 100, "offscreenCanvas.height", "100"); [Fixed Code] var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); canvas.width = ' 100'; canvas.height = ' 100'; _assertSame(canvas.width, 100, "canvas.width", "100"); _assertSame(canvas.height, 100, "canvas.height", "100"); The changes only involve: 1. Renaming the variable from `offscreenCanvas` to `canvas` 2. Updating the variable name in all subsequent references 3. Updating the assertion messages to match the new variable name No security implications are apparent in this change.
If an attacker could control the contents of an iframe sandboxed with <code>allow-popups</code> but not <code>allow-scripts</code>, they were able to craft a link that, when clicked, would lead to JavaScript execution in violation of the sandbox. This vulnerability affects Firefox < 98, Firefox ESR < 91.7, and Thunderbird < 91.7.