Analyse d'une extension Chrome malveillante se faisant passer pour une barre latérale YouTube
Une extension Chrome nommée « Youside — YouTube Sidebar » a été découverte dans le Chrome Web Store. Elle n'a rien à voir avec les fonctionnalités de YouTube. Au lieu des fonctions promises — un lecteur intégré, la gestion des abonnements et un accès rapide —, elle implémente un client léger pour un backend tiers, avec contrôle d'interface à distance, collecte de données utilisateur et monétisation cachée.
Architecture : Client sans logique
L'extension portant l'ID mmecpiobcdbjkaijljohghhpfgngpjmk illustre l'architecture typique des logiciels malveillants : une logique locale minimale et une forte dépendance à un serveur externe. Au lancement, elle génère ou récupère un user_id persistant depuis localStorage, puis interroge l'API à l'adresse https://mines.cloudapi.stream/user_info. La réponse du serveur détermine entièrement le comportement de l'interface utilisateur — de la visibilité des éléments au contenu des blocs HTML.
Fonctionnalités clés :
- Pas d'appels à l'API YouTube ou au domaine
youtube.com - Pas d'implémentation de l'IFrame Player API
- Pas de logique pour la gestion des abonnements, la recherche de vidéos ou le streaming vidéo
- Toutes les actions contrôlées via les réponses du serveur externe
Cette configuration permet aux attaquants de modifier dynamiquement le comportement de l'extension sans avoir à mettre à jour son code dans le store.
Contrôle d'interface à distance
Le serveur renvoie un objet JSON avec des champs tels que success, is_valid, rating et protxt. Le client applique ces données directement au DOM sans aucune validation :
if (result.is_valid) {
proplansID.classList.add('h_');
playBtn.classList.remove('h_');
} else {
playBtn.classList.add('h_');
}
Cette approche imite les feature flags mais manque de protection contre les injections. L'insertion directe de HTML est particulièrement risquée :
if (result.protxt) {
proplansID.innerHTML = result.protxt;
}
Le contenu n'étant ni filtré ni sanitizé, le serveur peut injecter du JavaScript arbitraire via innerHTML, permettant des attaques XSS même dans le contexte isolé de l'extension.
Monétisation et suivi cachés
Tous les boutons portant la classe .buyBtn sont interceptés et redirigés vers un domaine externe :
document.querySelectorAll('.buyBtn').forEach(btn => {
btn.setAttribute(
'href',
`https://topup.cloudapi.stream/?user_id=${encodeURIComponent(localStorage.getItem("user_id"))}&type=game`
);
});
Tout clic sur ces éléments transmet l'ID unique de l'utilisateur via un paramètre d'URL. Cela relie les actions de l'utilisateur à son profil pour la monétisation ou un profilage ultérieur.
Pour un suivi fiable, elle combine :
user_iddepuislocalStorage(identifiant persistant)chrome.runtime.id(ID unique de l'extension dans le navigateur)navigator.language(code de langue de l'utilisateur)
Cette combinaison garantit une identification précise même si l'adresse IP change ou que les cookies sont supprimés.
Absence de fonctionnalités promises
Malgré la description du store, l'extension ne contient aucun code lié à YouTube :
- Pas d'appels à l'YouTube Data API
- Pas de lecteur vidéo intégré via iframe
- Pas de gestion des événements de lecture
- Pas de logique pour les playlists ou les chaînes
Sa seule interaction avec YouTube est une redirection au clic sur le bouton Play :
playBtn.addEventListener("click", () => {
window.location = "https://youtube.com/";
});
Cela confirme que l'extension n'est qu'une façade pour un outil utile, son véritable objectif étant la collecte de données et la monétisation du trafic.
Points clés
- L'extension ne fournit pas les fonctionnalités YouTube promises.
- L'interface est entièrement contrôlée par un serveur externe via des API non sécurisées.
- L'injection de HTML arbitraire est possible, avec des risques XSS potentiels.
- Suivi utilisateur caché via des identifiants combinés.
- Tous les liens de monétisation redirigent vers des domaines tiers en transmettant
user_id.
— Editorial Team
Aucun commentaire pour le moment.