Projects
Eulaceura:Factory
epiphany
_service:obs_scm:CVE-2023-26081.patch
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:CVE-2023-26081.patch of Package epiphany
From 53363c3c8178bf9193dad9fa3516f4e10cff0ffd Mon Sep 17 00:00:00 2001 From: Michael Catanzaro <mcatanzaro@redhat.com> Date: Fri, 3 Feb 2023 13:07:15 -0600 Subject: [PATCH] Don't autofill passwords in sandboxed contexts If using the sandbox CSP or iframe tag, the web content is supposed to be not trusted by the main resource origin. Therefore, we'd better disable the password manager entirely so the untrusted web content cannot exfiltrate passwords. https://github.com/google/security-research/security/advisories/GHSA-mhhf-w9xw-pp9x Part-of: <https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1275> --- .../resources/js/ephy.js | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/embed/web-process-extension/resources/js/ephy.js b/embed/web-process-extension/resources/js/ephy.js index 6fccd3d94..d1c42adbc 100644 --- a/embed/web-process-extension/resources/js/ephy.js +++ b/embed/web-process-extension/resources/js/ephy.js @@ -354,6 +354,12 @@ Ephy.hasModifiedForms = function() } }; +Ephy.isSandboxedWebContent = function() +{ + // https://github.com/google/security-research/security/advisories/GHSA-mhhf-w9xw-pp9x + return self.origin === null || self.origin === 'null'; +}; + Ephy.PasswordManager = class PasswordManager { constructor(pageID, frameID) @@ -387,6 +393,11 @@ Ephy.PasswordManager = class PasswordManager query(origin, targetOrigin, username, usernameField, passwordField) { + if (Ephy.isSandboxedWebContent()) { + Ephy.log(`Not querying passwords for origin=${origin} because web content is sandboxed`); + return Promise.resolve(null); + } + Ephy.log(`Querying passwords for origin=${origin}, targetOrigin=${targetOrigin}, username=${username}, usernameField=${usernameField}, passwordField=${passwordField}`); return new Promise((resolver, reject) => { @@ -398,6 +409,11 @@ Ephy.PasswordManager = class PasswordManager save(origin, targetOrigin, username, password, usernameField, passwordField, isNew) { + if (Ephy.isSandboxedWebContent()) { + Ephy.log(`Not saving password for origin=${origin} because web content is sandboxed`); + return; + } + Ephy.log(`Saving password for origin=${origin}, targetOrigin=${targetOrigin}, username=${username}, usernameField=${usernameField}, passwordField=${passwordField}, isNew=${isNew}`); window.webkit.messageHandlers.passwordManagerSave.postMessage({ @@ -409,6 +425,11 @@ Ephy.PasswordManager = class PasswordManager // FIXME: Why is pageID a parameter here? requestSave(origin, targetOrigin, username, password, usernameField, passwordField, isNew, pageID) { + if (Ephy.isSandboxedWebContent()) { + Ephy.log(`Not requesting to save password for origin=${origin} because web content is sandboxed`); + return; + } + Ephy.log(`Requesting to save password for origin=${origin}, targetOrigin=${targetOrigin}, username=${username}, usernameField=${usernameField}, passwordField=${passwordField}, isNew=${isNew}`); window.webkit.messageHandlers.passwordManagerRequestSave.postMessage({ @@ -428,6 +449,11 @@ Ephy.PasswordManager = class PasswordManager queryUsernames(origin) { + if (Ephy.isSandboxedWebContent()) { + Ephy.log(`Not querying usernames for origin=${origin} because web content is sandboxed`); + return Promise.resolve(null); + } + Ephy.log(`Requesting usernames for origin=${origin}`); return new Promise((resolver, reject) => { -- GitLab
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2