IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le framework PyTorch ciblé par une attaque de confusion de dépendance
L'individu derrière la dépendance contrefaite "torchtriton" prétend être un hacker éthique malgré le vol de fichiers sensibles

Le , par Stéphane le calme

288PARTAGES

6  0 
PyTorch a identifié une dépendance malveillante portant le même nom que la bibliothèque "torchtriton" du framework. Cela a conduit à une compromission réussie via le vecteur d'attaque de confusion de dépendance. Les administrateurs de PyTorch ont prévenu les utilisateurs qui ont installé PyTorch-nightly pendant les vacances de désinstaller le framework et la dépendance "torchtriton" contrefaite. L'individu derrière cette bibliothèque prétend être un hacker éthique.

PyTorch est l'une des boîtes à outils d'apprentissage automatique les plus populaires et les plus utilisées. Initialement développé et publié en tant que projet open source par Facebook (qui s'appelle désormais Meta), PyTorch a été remis à la Fondation Linux fin 2022, qui le gère désormais sous l'égide de la Fondation PyTorch.

PyTorch permet d'effectuer les calculs tensoriels nécessaires notamment pour l'apprentissage profond (deep learning). Ces calculs sont optimisés et effectués soit par le processeur (CPU) soit, lorsque c'est possible, par un processeur graphique (GPU) supportant CUDA. PyTorch se présente sous les traits d'un dérivé d'un logiciel antérieur, Torch, dont l'utilisation nécessitait la maîtrise du langage Lua. PyTorch est désormais indépendant de Lua et se programme en Python.

Le programme suivant montre la fonctionnalité de la bibliothèque avec un exemple simple :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import torch 
dtype = torch.float 
device = torch.device("cpu") # Tous les calculs seront exécutés sur le processeur 
# device = torch.device("cuda:0") # Tous les calculs seront exécutés sur la carte graphique 
  
# Création d'un tenseur rempli avec des nombres aléatoires 
a = torch.randn(2, 3, device=device, dtype=dtype) 
print(a) # Affichage du tenseur a 
# Output: tensor([[-1.1884,  0.8498, -1.7129], 
#                  [-0.8816,  0.1944,  0.5847]]) 
  
# Création d'un tenseur rempli avec des nombres aléatoires 
b = torch.randn(2, 3, device=device, dtype=dtype) 
print(b) # Affichage du tenseur b 
# Output: tensor([[ 0.7178, -0.8453, -1.3403], 
#                  [ 1.3262,  1.1512, -1.7070]]) 
  
print(a*b) # Affichage du produit (terme à terme) des deux tenseurs 
# Output: tensor([[-0.8530, -0.7183,  2.58], 
#                  [-1.1692,  0.2238, -0.9981]]) 
  
print(a.sum()) # Affichage de la somme de tous les éléments du tenseur a 
# Output: tensor(-2.1540) 
  
print(a[1,2]) # Affichage de l'élément de la 2e rangée et de la 3e colonne de a 
# Output: tensor(0.5847) 
  
print(a.min()) # Affichage de la valeur minimale du tenseur a 
# Output: tensor(-1.7129)

De la vision par ordinateur au traitement du langage naturel, le framework d'apprentissage automatique open source PyTorch a gagné en importance dans les domaines commerciaux et universitaires.

Une bibliothèque malveillante cible les utilisateurs nocturnes de PyTorch

Vendredi dernier, les développeurs de PyTorch ont identifié une faille de sécurité. La violation n'a pas affecté la base de code PyTorch, mais plutôt un service appelé PyPI qui héberge des extensions tierces de l'outil de développement d'IA. Un hacker a téléchargé une extension malveillante sur PyPI qui aurait été téléchargée plus de 2 300 fois par les utilisateurs.

La dépendance malveillante "torchtriton" sur PyPI partage son nom avec la bibliothèque officielle publiée sur le dépôt de PyTorch-nightly. Mais, lors de la récupération des dépendances dans l'écosystème Python, PyPI a normalement la priorité, provoquant l'extraction du package malveillant sur votre machine au lieu de celui légitime de PyTorch.

« Étant donné que l'index PyPI a priorité, ce package malveillant a été installé à la place de la version de notre référentiel officiel. Cette conception permet à quelqu'un d'enregistrer un package du même nom que celui qui existe dans un index tiers, et pip installera sa version par défaut », a expliqué l'équipe PyTorch.

Pour empêcher des téléchargements supplémentaires, les développeurs de PyTorch ont renommé l'extension légitime imitée par le programme malveillant.

« Ce package malveillant a été installé à la place de la version de notre référentiel officiel », ont expliqué les développeurs dans un billet de blog. « Ce paquet malveillant porte le même nom torchtriton mais ajouté dans le code qui télécharge les données sensibles de la machine ». Il est d'ailleurs recommandé de désinstaller PyTorch-nightly si le téléchargement a été fait via pip entre le 25 et 30 décembre 2022 sur Linux :

Citation Envoyé par équipe PyTorch
Si vous avez installé PyTorch-nightly sur Linux via pip entre le 25 décembre 2022 et le 30 décembre 2022, veuillez le désinstaller ainsi que torchtriton immédiatement, et utilisez les derniers binaires nightly (plus récents que le 30 décembre 2022).


Ce type d'attaque de la chaîne d'approvisionnement est connu sous le nom de « confusion de dépendance » et ce vecteur d'attaque a été popularisé par le hacker éthique Alex Birsan. PyTorch déclare que les utilisateurs des packages stables PyTorch ne sont pas affectés par ce problème.

Un hacker vole des fichiers sensibles, et prétend être un hacker éthique

L'équipe de PyTorch explique que non seulement le "torchtriton" malveillant surveille votre système pour obtenir des informations de fingerprinting de base (telles que l'adresse IP, le nom d'utilisateur et le répertoire de travail actuel), mais il vole en outre des données sensibles :

  • Obtient des informations système :
    • le nom des serveurs de /etc/resolv.conf
    • le nom de l'hôte de gethostname()
    • le nom de l'utilisateur actuel de getlogin()
    • le nom du répertoire de travail actuel de getcwd()
    • les variables d'environnement
  • Peut lire les fichiers suivants :
    • /etc/hosts
    • /etc/passwd
    • les 1000 premiers fichiers dans $HOME/*
    • $HOME/.gitconfig
    • $HOME/.ssh/*


Il télécharge ensuite toutes ces données, y compris le contenu des fichiers, sur le domaine h4ck.cfd via des requêtes DNS chiffrées à l'aide du serveur DNS wheezy.io. PyTorch explique que le binaire « triton » malveillant contenu dans le « torchtriton » contrefait n'est exécuté que lorsque l'utilisateur importe le package « triton » de leur build. Cela nécessiterait un code explicite et n'est pas le comportement par défaut de PyTorch.

L'avis sur le domaine h4ck.cfd implique que toute l'opération est une recherche éthique, même si l'analyse indique le contraire.

Citation Envoyé par Avis
Bonjour, si vous êtes tombé dessus dans vos journaux, c'est probablement parce que votre Python était mal configuré et était vulnérable à une attaque de confusion de dépendance. Pour identifier les entreprises vulnérables, le script envoie les métadonnées sur l'hôte (telles que son nom d'hôte et...

La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !