icon_firefox[CVE-2017-5451] Addressbar spoofing with onblur event


Addressbar spoofing with onblur event

https://www.mozilla.org/en-US/security/advisories/mfsa2017-10/#CVE-2017-5451


Announced: April 19, 2017
Reporter: Jordi Chancel
Impact: Moderate
Products: Firefox
Fixed in: Firefox 53


  • Description :

A mechanism to spoof the addressbar through the user interaction on the addressbar and the onblur event. The event could be used by script to affect text display to make the loaded site appear to be different from the one actually loaded within the addressbar.


  • Explication :

1. Le fait de cliquer sur la barre d’adresse de Mozilla Firefox permet la sélection instantanée de l’adresse URL contenue dans celle-ci.

2. Lors d’un test utilisant cette interaction utilisateur, il apparait que si le clique dans la barre d’adresse est effectué en coordination avec l’événement onblur dont celui-ci détermine qu’en cas de clique extérieur a la page Web celui-ci augmentera la taille de l’adresse URL, cette action va alors permettre la disparition de la visibilité du nom de domaine correspondant à la page web qui devrait normalement toujours se trouver visible au début de la barre d’adresse et va au contraire être placer de telle façon à ce que la fin de l’adresse URL va se trouver visible et prendre la place de la réelle adresse URL de la page Web contenant la Preuve de Concept (menant ainsi au Spoofing d’adresse URL et d’indicateur SSL désiré).

  • Exemple :
1. https://yyy.com/poc.html (Type d’adresse URL avant le clique dans la Barre d’Adresse de Firefox)

2. Clique de l’utilisateur dans la Barre d’Adresse de Firefox

3. https://yyy.com/poc.html######https://www.google.com (Nouveau Schéma de l’adresse URL après le clique dans la Barre d’Adresse de Firefox)

4. https://www.google.com (Adresse URL falsifiée désormais visible dans la Barre d’Adresse de Firefox)

  • Concept en Image :





Démonstration vidéo de la vulnérabilité:


icon_firefox[CVE-2017-5452] Addressbar spoofing during scrolling with editable content on Firefox for Android


Addressbar spoofing during scrolling with editable content on Firefox for Android

https://www.mozilla.org/en-US/security/advisories/mfsa2017-10/#CVE-2017-5452


Announced: April 19, 2017
Reporter: Jordi Chancel
Impact: Low
Products: Firefox
Fixed in: Firefox 53


  • Description :

Malicious sites can display a spoofed addressbar on a page when the existing location bar on the new page is scrolled out of view if an HTML editable page element is user selected.


Note: This attack only affects Firefox for Android. Other operating systems are not affected.


Vulnerability demonstration (video):


[CVE-2017-5041] Google Chrome Location Bar URL & SSL Spoofing in Omnibox


Address spoofing in Omnibox (URL & SSL Spoofing)


Announced: March 9, 2017
Reporter: Jordi Chancel
Impact: Moderate
Products: Google Chrome
Fixed in: Google Chrome 57.0.2987.98


  • Description :

Google Chrome before 57.0.2987.98 does not properly handle ********, which allows remote attackers to spoof the Location Bar (URL and SSL indicator) via unspecified vectors.


Note: This issue also affects Google Chrome for iOS.


Vulnerability demonstration (video):


icon_firefox[CVE-2017-5394] Android location bar spoofing using fullscreen and JavaScript events


Android location bar spoofing using fullscreen and JavaScript events


Announced: January 24, 2017
Reporter: Jordi Chancel
Impact: Moderate
Products: Firefox
Fixed in: Firefox 51


  • Description :

A location bar spoofing attack where the location bar of loaded page will be shown over the content of another tab due to a series of JavaScript events combined with fullscreen mode.


Note: This issue only affects Firefox for Android. Other operating systems are not affected.


Vulnerability demonstration (video):


icon_firefox[CVE-2017-5395] Android location bar spoofing during scrolling


Android location bar spoofing during scrolling


Announced: January 24, 2017
Reporter: Jordi Chancel
Impact: Low
Products: Firefox
Fixed in: Firefox 51


  • Description :

Malicious sites can display a spoofed location bar on a subsequently loaded page when the existing location bar on the new page is scrolled out of view if navigations between pages can be timed correctly.


Note: This issue only affects Firefox for Android. Other operating systems are not affected.


Vulnerability demonstration (video):


icon_firefox[CVE-2016-5298] SSL indicator can mislead the user about the real URL visited


SSL indicator can mislead the user about the real URL visited


Announced: November 15, 2016
Reporter: Jordi Chancel
Impact: Moderate
Products: Firefox
Fixed in: Firefox 50


  • Description :

Security researcher Jordi Chancel reported a mechanism where disruption of the loading of a new web page can cause the previous page’s favicon and SSL indicator to not be reset when the new page is loaded.


Note: this issue only affects Firefox for Android. Desktop Firefox is unaffected.


Vulnerability demonstration (video):


icon_firefox[CVE-2016-2822] Addressbar spoofing though the SELECT element


Addressbar spoofing though the SELECT element


Announced: June 7, 2016
Reporter: Jordi Chancel
Impact: Moderate
Products: Firefox, Firefox ESR
Fixed in: Firefox 47, Firefox ESR 45.2

  • Description :

Security researcher Jordi Chancel reported a method to spoof the contents of the addressbar. This uses a persistent menu within a <select> element, which acts as a container for HTML content and can be placed in an arbitrary location.
When placed over the addressbar, this can mask the true site URL, allowing for spoofing by a malicious site.


  • Introduction :

Voici encore une vulnérabilité mélangeant ClickJacking et Location Bar Spoofing.
Dans mes recherches visant a vérifier la correction exhaustive d’une plus ancienne vulnérabilité que j’avais reportée sur le navigateur Web Mozilla Firefox (MFSA-2013-94), j’ai premièrement vérifié si cette vulnérabilité n’avait pas été malencontreusement réactivée, j’ai alors donc déterminé que le code source de la précédente preuve de concept ne permettait plus l’exploitation désiré qui avait donnée lieu cette précédente vulnérabilité, cependant la modification de l’élément <select> de l’encienne preuve de concept permettait une vulnérabilité tout à fait similaire.
Les modifications nécessaires à la mise en œuvre d’une nouvelle preuve de concept étaient d’utiliser plusieurs éléments <option> et d’y insérer l’image d’un indicateur de connexion sécurisé et l’URL d’un site ciblé permettant ainsi le Spoofing d’URL et d’indicateur SSL.

Cette nouvelle vulnérabilité tout comme la précédente sitée ci-dessus permet également de mener a bien des attaques de type ClickJacking sur l’affichage de multiple boites de dialogue, exemple: GeoLocation ; WebRTC (…) , permettant ainsi le vole de donnée concernant la géolocalisation de la personne piégée , prendre le contrôle de la webcam et du microphone de la personne piégée (et bien d’autres actions malveillantes) en incitant l’utilisateur a éffectuer un double-clique sur un bouton factice placé dans l’un des éléments <option> situé dans la même zone que le bouton de validation de la boite de dialogue q’un pirate informatique souhaiterait que l’utilisateur préalablement piégé par l’attaque d’usurpation d’URL et d’indicateur de certificat sécurisé presse sans s’en rendre compte (via le double-clique devant être effectué).

  • Explication :

1. Dans Mozilla Firefox, l’élément <select> peut contenir du code HTML et par conséquent contenir une image. il suffit donc de mettre en place l’image d’une fausse barre de location dans cet élément et définir que l’affichage de celui-ci se placera au dessus de la barre de location réelle.

concept en image :

 

2. Maintenant, voici quelques brèves explications supplémentaires portant sur la possibilité d’effectuer des attaques de type ClickJacking.
Comme démontré ci-dessus, l’élément <select> surplombe la réelle barre de location, il est donc aussi possible de couvrir l’affichage d’une demande d’activation de la webcam et du microphone ou encore la demande de géolocalisation et donc faire en sorte que celles-ci s’affiche de manière totalement invisible. Il ne reste plus qu’a inciter l’utilisateur a double cliquer sur l’élément <select> a l’emplacement ou se trouve le bouton de confirmation de la boite de dialogue caché. Pour être unpeu plus précis, le premier clique aura pour effet d’enlever l’affichage de l’élément <select> et par la suite cliquer sur le bouton de confirmation via le 2ème clique.

Concept en image :


Vulnerability demonstration (video):


icon_firefox[CVE-2016-1967] Same-origin policy violation using perfomance.getEntries and history navigation with session restore


Same-origin policy violation using perfomance.getEntries and history navigation with session restore


Announced: March 8, 2016
Reporter: Jordi Chancel
Impact: High
Products: Firefox
Fixed in: Firefox 45


Description

Security researcher Jordi Chancel discovered a variant of Mozilla Foundation Security Advisory 2015-136 which was fixed in Firefox 43. In the original bug, it was possible to read cross-origin URLs following a redirect if perfomance.getEntries() was used along with an iframe to host a page. Navigating back in history through script, content was pulled from the browser cache for the redirected location instead of going to the original location.

In the newly reported variant issue, it was found that if a browser session was restored, history navigation would still allow for the same attack as content was restored from the browser cache. This is a same-origin policy violation and could allow for data theft.


Le Patch utilisé pour la précédente vulnérabilité MFSA 2015-136 (découverte par le chercheur en sécurité informatique portant le pseudonyme cgvwzq) avait ajouté des vérifications de sécurité permettant de neutraliser la violation des restrictions Same-Origin Policy par une analyse de sécurité ayant pour objectif la vérification de l’origine exacte de l’URL contenu dans la balise <iframe> qui utilise une redirection ciblant un nom de domaine différent que celle de l’adresse URL utilisée dans l’attribut « src= » contenu dans la balise <iframe> permettant cette redirection et de celle de la page Web contenant la Preuve de Concept.

  • Exemple concernant les différentes adresses URL utilisées :

1. Nom de Domaine contenant la page Web de la Preuve de Concept :
http://www.Malicious-Website.com/

2. Adresse URL ciblé par la redirection utilisant un Nom de Domaine différent :
http://www.cible.com/token.php

3. Adresse URL de redirection utilisée dans l’attribut « src= » de la balise <iframe> :
http://www.Malicious-Website.com/redir.php?url=http://www.cible.com/token.php

4. Adresse URL ciblé par la redirection générant un token de manière automatique :
http://www.cible.com/token.php?secret=90c16200e6c708c415f450c12a2995ae

Codes Modifiés Pour la correction de la vulnérabilité MFSA 2015-136:

« /docshell/base/nsDocShell.cpp »
« /docshell/base/nsDocShell.h »
« /docshell/base/nsDocShellLoadInfo.cpp »
« /docshell/base/nsDocShellLoadInfo.h »
« /docshell/base/nsIDocShell.idl »
« /docshell/base/nsIDocShellLoadInfo.idl »
« /docshell/shistory/nsISHEntry.idl »
« /docshell/shistory/nsSHEntry.cpp »
« /docshell/shistory/nsSHEntry.h »
« /docshell/shistory/nsSHistory.cpp »

Cependant en cas de fermeture de la page contenant la preuve de concept et de réouverture de celle-ci via le Menu Historique et l’option de réouverture d’onglets précédemment fermés ou via le redémarrage de Firefox en cas de crash et la réouverture de la précédente session permettant aussi la réouverture de l’onglet contenant la preuve de concept, les codes suivants utilisés par l’action de restauration de session et d’onglets précédemment fermés:

« /browser/components/sessionstore/SessionHistory.jsm »
« /mobile/android/components/SessionStore.js »

ne permettaient pas les vérifications de sécurité nécessaires pour neutraliser la violation des restrictions Same-Origin Policy mises en place dans le Patch de la vulnérabilité MFSA-2015-136. Ainsi dans le Patch corrigeant la vulnérabilité Mozilla Foundation Security Advisory 2016-29 découverte lors de mes recherches en vulnérabilité sur Mozilla Firefox (code du Patch visible ci-dessous), d’autre contrôles de sécurité ont été ajoutés dans le but de vérifier de l’origine exacte de l’URL contenu dans la balise <iframe> en cas de restauration d’une précédente session et de restauration d’onglets précédemment fermés.
(les codes de sécurité ajoutés permettant de neutraliser la violation des restrictions Same-Origin Policy en cas de restauration de session et d’onglets précédemment fermés sont surlignés en vert)


--- a/browser/components/sessionstore/SessionHistory.jsm
+++ b/browser/components/sessionstore/SessionHistory.jsm
@@ -137,16 +137,20 @@ var SessionHistoryInternal = {

// We will include the property only if it's truthy to save a couple of
// bytes when the resulting object is stringified and saved to disk.
if (shEntry.referrerURI) {
entry.referrer = shEntry.referrerURI.spec;
entry.referrerPolicy = shEntry.referrerPolicy;
}


+ if (shEntry.originalURI) {
+ entry.originalURI = shEntry.originalURI.spec;
+ }
+

if (shEntry.srcdocData)
entry.srcdocData = shEntry.srcdocData;

if (shEntry.isSrcdocEntry)
entry.isSrcdocEntry = shEntry.isSrcdocEntry;

if (shEntry.baseURI)
entry.baseURI = shEntry.baseURI.spec;
@@ -297,16 +301,19 @@ var SessionHistoryInternal = {
shEntry.setIsSubFrame(entry.subframe || false);
shEntry.loadType = Ci.nsIDocShellLoadInfo.loadHistory;
if (entry.contentType)
shEntry.contentType = entry.contentType;
if (entry.referrer) {
shEntry.referrerURI = Utils.makeURI(entry.referrer);
shEntry.referrerPolicy = entry.referrerPolicy;
}

+ if (entry.originalURI) {
+ shEntry.originalURI = Utils.makeURI(entry.originalURI);
+ }

if (entry.isSrcdocEntry)
shEntry.srcdocData = entry.srcdocData;
if (entry.baseURI)
shEntry.baseURI = Utils.makeURI(entry.baseURI);

if (entry.cacheKey) {
var cacheKey = Cc["@mozilla.org/supports-PRUint32;1"].
createInstance(Ci.nsISupportsPRUint32);


--- a/mobile/android/components/SessionStore.js
+++ b/mobile/android/components/SessionStore.js
@@ -747,16 +747,20 @@ SessionStore.prototype = {

entry.ID = aEntry.ID;
entry.docshellID = aEntry.docshellID;

if (aEntry.referrerURI) {
entry.referrer = aEntry.referrerURI.spec;
}

+ if (aEntry.originalURI) {
+ entry.originalURI = aEntry.originalURI.spec;
+ }
+

if (aEntry.contentType) {
entry.contentType = aEntry.contentType;
}

let x = {}, y = {};
aEntry.getScrollPosition(x, y);
if (x.value != 0 || y.value != 0) {
entry.scroll = x.value + "," + y.value;
@@ -827,16 +831,20 @@ SessionStore.prototype = {
shEntry.loadType = Ci.nsIDocShellLoadInfo.loadHistory;
if (aEntry.contentType) {
shEntry.contentType = aEntry.contentType;
}
if (aEntry.referrer) {
shEntry.referrerURI = Services.io.newURI(aEntry.referrer, null, null);
}

+ if (aEntry.originalURI) {
+ shEntry.originalURI = Services.io.newURI(aEntry.originalURI, null, null);
+ }
+

if (aEntry.cacheKey) {
let cacheKey = Cc["@mozilla.org/supports-PRUint32;1"].createInstance(Ci.nsISupportsPRUint32);
cacheKey.data = aEntry.cacheKey;
shEntry.cacheKey = cacheKey;
}

if (aEntry.ID) {
// get a new unique ID for this frame (since the one from the last


Vulnerability demonstration (video):


icon_firefox[CVE-2016-1941] Delay following click events in file download dialog too short on OS X


Delay following click events in file download dialog too short on OS X


Announced: January 26, 2016
Reporter: Jordi Chancel
Impact: Moderate
Products: Firefox
Fixed in: Firefox 44


Description

Security researcher Jordi Chancel reported an issue on OS X where the delay between the download dialog getting focus and the button getting enabled was too short. If an attacker is able to induce the user to double-click in a specific location, they can then pass the second click through to the dialog below, leading to unintentional actions such as the running of downloaded software.


Vulnerability demonstration (video):


icon_firefox[CVE-2016-1943] Location Bar Spoofing Risk – scrollto leads to that the location bar is hidden


Location Bar Spoofing Risk – scrollto leads to that the location bar is hidden


Announced: January 26, 2016
Reporter: Jordi Chancel
Impact: High
Products: Firefox
Fixed in: Firefox 44


Description

Security researcher Jordi Chancel reported two issues involving addressbar spoofing.

The first of these is a « high » rated security issue on on Firefox for Android involving the scrollTo() method to scroll a page. In this attack, scrollTo() is used to scroll the addressbar out of view while replacing it with a fake addressbar created by the attacker when a new tab is opened.


  • Exploitation de la vulnérabilité :
1. Cette vulnérabilité permettant le Spoofing d’Adresse URL et d’indicateur SSL sur Firefox pour Android (avec la mise en place d’une fausse Barre de d’Adresse), utilise dans un premier temps la visite d’une page web contenant un lien hypertexte menant à une 2ème page web contrôlée par l’attaquant exploitant le Spoofing.

2. L’ouverture de la 2ème page web exploitant la vulnérabilité menant au Spoofing via le lien hypertexte doit être effectuée dans un nouvel onglet.

3. L’utilisateur doit alors choisir l’option permettant de basculer vers le nouvel onglet contenant la 2ème page web contrôlée par l’attaquant exploitant la vulnérabilité.

4. Une fois que l’utilisateur se trouve dans ce nouvel onglet, une Barre d’Adresse falsifiée est alors visible (prenant la place de la réelle Barre d’Adresse utilisée sur Firefox pour Android) rendant possible l’exploitation du Spoofing d’URL et d’indicateur SSL.


  • Explication et Schéma de Démonstration :
L’exploitation de ce Spoofing est rendu possible via un faille de sécurité utilisant la fonction JavaScript ScrollTo(**,**); qui permettait la disparition de la réelle Barre d’Adresse utilisée sur Firefox pour Android en cas d’exécution de cette fonction JavaScript pendant l’ouverture de la 2ème page web dans le nouvel onglet avant la visite de l’utilisateur sur celui-ci. (de manière similaire à celle de « l’événement utilisateur Scroll » faisant disparaitre la Barre d’adresse de Firefox pour Android quand l’utilisateur utilise cet évènement dans l’objectif d’aller vers le bas de la page web)


Vulnerability demonstration (video):


icon_firefox[CVE-2016-1942] Location bar continues displaying wyciwyg URI and resource URI if user tries to navigate to it manually


Location bar continues displaying wyciwyg URI and resource URI if user tries to navigate to it manually


Announced: January 26, 2016
Reporter: Jordi Chancel
Impact: Low
Products: Firefox
Fixed in: Firefox 44


Description

Security researcher Jordi Chancel reported two issues involving addressbar spoofing.
The second flaw is a « low » rated security issue affecting Desktop Firefox. In this attack, when a URL which is invalid for an internal protocol is pasted into the addressbar, the addressbar contents may be manipulated to show the location of an arbitrary website instead of the one currently loaded. This issue is mitigated by the protocol being prepended to the displayed URL, making the address less likely to be confused with the appended URL.


Vulnerability demonstration (video):


icon_firefox[CVE 2015-7186] Reading sensitive profile files through local HTML file on Android


Reading sensitive profile files through local HTML file on Android


Announced: November 3, 2015
Reporter: Jordi Chancel
Impact: Moderate
Products: Firefox
Fixed in: Firefox 42


Description

Security researcher Jordi Chancel reported an issue in Firefox for Android where
a locally saved HTML file could use file: URIs to trigger the download of
additional files or opening of cached profile data without user awareness.


This issue only affects Firefox for Android. Firefox on other operating systems is not affected.


Vulnerability demonstration (video):