web-dev-qa-db-fra.com

Qu'est-ce qui rend difficile d'avoir un antivirus matériel?

Les systèmes de publication sont vulnérables aux virus et aux vers et disposer d'un antivirus est presque nécessaire. Comment est-il possible que les antivirus matériels n'existent pas?

L'idée semble assez bonne, si l'antivirus réside sur des puces reprogrammables similaires à celle qui héberge le BIOS, alors il serait immunisé contre les attaques mais toujours évolutif. Il aurait également des privilèges plus élevés et résoudrait le problème de l'impossibilité de réparer les fichiers système en cours d'utilisation.

Y a-t-il quelque chose auquel je ne pense pas qui rend cela impossible à mettre en œuvre?

27
Ulkoma

Si la puce est accessible en écriture à partir du système d'exploitation, le logiciel malveillant peut également y écrire, de sorte qu'il n'y serait pas utile.

De plus, les logiciels anti-malware doivent gérer les menaces qui ne datent que de quelques heures. Devoir redémarrer votre ordinateur pour mettre à niveau le logiciel anti-malware qui s'exécute sur son propre matériel serait nul, nous devons donc pouvoir le mettre à niveau à partir du système d'exploitation. Si nous pouvons écrire sur la puce à partir du système d'exploitation, le logiciel malveillant le peut aussi.

Afin de rendre un anti-malware matériel sécurisé, vous devez d'abord changer la tâche principale du programme. Les logiciels anti-malware ont essentiellement une liste de logiciels malveillants. Si un programme figure dans cette liste, il est bloqué et supprimé. Sinon, nous le laissons courir. Chaque fois qu'un nouveau logiciel malveillant est écrit, nous devons l'ajouter à la liste. Ainsi, le logiciel ne peut être que réactif, avec la nécessité de mettre à jour la liste (énorme) tout le temps. Si, d'autre part, vous avez une liste de programmes autorisés à exécuter et à bloquer tout le reste, vous n'avez pas besoin de mettre à jour cette liste tout le temps; uniquement lorsque vous souhaitez exécuter un nouveau programme. Tout malware, inconnu ou bien connu, serait bloqué par ce refus implicite. Pour de nombreux environnements sensibles, vous n'installez pas de nouveau code tous les jours. Le besoin de l'ATM d'exécuter un logiciel. Rien d'autre. La liste ne changerait fondamentalement pas.

Le problème est qu'il n'y a pas de liste généralement réalisable de programmes OK. Vous devez soit avoir une liste relativement petite des programmes dont vous avez besoin pour pouvoir exécuter sur votre ordinateur, qui doit être faite spécifiquement pour vous, soit vous devez avoir une énorme liste de tous les programmes que n'importe qui jamais envie de courir.

Pour générer cette liste, le plus simple serait d'ajouter tous les programmes possibles et de supprimer tous les mauvais, ce qui équivaut à ce que fait le logiciel anti-malware aujourd'hui, plutôt que le refus implicite. Vous ne pouvez tout simplement pas obtenir une liste de tous les programmes non malveillants qui seront jamais écrits sans inclure ceux qui ne le seront pas.

Cela pourrait fonctionner, si vous le faites correctement. Mais ce n'est généralement pas faisable. En outre, ce serait vraiment une chose terrible de changer pour refuser implicitement aux sociétés anti-malware d'essayer de vendre des services d'abonnement.

Quant au niveau de privilège supplémentaire; parfois, vous devez augmenter les privilèges, et si vous le pouvez, les logiciels malveillants le feront. Et l'impossibilité de modifier les fichiers système, vous venez d'ajouter une autre couche. La couche supérieure aura toujours ce problème.

24
Filip Haglund

Il n'y a aucune difficulté avec les logiciels malveillants/virus basés sur le BIOS, ils existent déjà , tout comme les logiciels malveillants " mémoire uniquement ". Si je devais deviner pourquoi il n'est pas plus répandu que les virus/programmes malveillants normaux, je dirais que c'est parce que le logiciel du BIOS est très différent d'un système d'exploitation normal. Il y a un coût associé à la création de logiciels malveillants, et les auteurs ciblent probablement les logiciels où ils peuvent en avoir le plus pour leur argent.

Faisons semblant d'être des développeurs de logiciels pendant un moment. Nous concevons notre logiciel pour qu'il soit compatible avec autant d'appareils sur toute la ligne. Voici nos choix avec une valeur générique pour le nombre d'utilisateurs que nous aimerions voir exécuter notre logiciel:

Windows Users - 10
OSX Users - 4
Linux Users - 4
Others - 1

Où le BIOS s'inscrit-il ici? Prenons quelques exemples de fabricants de BIOS

Phoenix
Asus
Acer
AOPEN
Dell
Fujitsu
Gateway
IBM
Intel

Et cette liste s'allonge et s'allonge. En tant que développeur de logiciels, pourquoi voudrais-je me concentrer sur la création de quelque chose de ciblé alors que je n'ai aucune idée initiale du logiciel BIOS que mon client exécuterait. Ce n'est pas rentable. Maintenant, remplaçons l'instance ci-dessus par un "développeur de logiciels malveillants". Quelle incitation devraient-ils se concentrer sur, disons, plus de 30 fabricants de BIOS, contre 2 systèmes d'exploitation qui sont largement utilisés.

Il n'y a jamais eu de moment où il a été difficile de créer un BIOS "sur puce" comme des virus. Ce n'est pas rentable. La plupart des développeurs de logiciels malveillants créent leurs exécutables à l'échelle, cela a du sens. Normalement, lorsque j'ai analysé des choses basées sur le BIOS/démarrage, il semble que ce soit une attaque très ciblée. Le développement de ces types d'exploits prend du temps, beaucoup de reconnaissance pour s'assurer que vous envoyez le bon exploit à la bonne cible (vous ne perdriez pas de temps à créer des logiciels malveillants basés sur ASUS, seulement pour découvrir que votre cible utilise un firmware BIOS basé sur Intel.)

Des auteurs malveillants affirment que le niveau de l'État varie différemment des groupes de cybercriminalité. Certains de ces types (acteurs étatiques) disparaissent dans certains pays. Pourquoi risquer de dépenser autant de temps, d'efforts et d'argent pour cibler le logiciel du BIOS alors que vous pouvez vous concentrer sur le système d'exploitation, puis passer à la mémoire.

13
munkeyoto

Les systèmes d'exploitation modernes ont déjà une isolation des privilèges, et les programmes antivirus modernes utilisent déjà ce mécanisme pour essayer d'éviter les interférences de logiciels malveillants moins privilégiés.

Il n'y a aucune raison de principe pour laquelle vous ne pouvez pas encore introduire un niveau de privilège plus élevé (ce qui semble être l'objectif de votre question) - de nombreuses personnes utilisent des machines virtuelles pour faire exactement cela. (Il n'y a cependant aucune raison pour qu'il s'agisse d'un "antivirus matériel".)

Toute interface entre les contextes d'exécution de privilège inférieur et de privilège supérieur est, bien sûr, une possibilité de vulnérabilités d'élévation de privilège, qui se produisent à la fois dans le système d'exploitation lui-même et, avec une rareté un peu plus grande, au-delà des limites de virtualisation (par exemple http: // menacepost.com/virtual-machine-escape-exploit-targets-xen-090612/76979 , http://www.kb.cert.org/vuls/id/MAPG-8TVPQL ) , ce n'est donc pas une panacée.

Mais en réalité, les problèmes d'antivirus sont plus profonds et plus fondamentaux que la question de l'isolement des privilèges. Les moteurs antivirus sont d'une valeur douteuse (étant donné la nature heuristique de leur détection) et sont souvent eux-mêmes une source de vulnérabilités - la construction d'un grand sac d'analyseurs de fichiers qui essaient d'analyser chaque fichier sur le disque (souvent avec des privilèges élevés!) N'est qu'un recette en cas de catastrophe (par exemple http://www.blackhat.com/presentations/bh-europe-08/Feng-Xue/Whitepaper/bh-eu-08-xue-WP.pdf , - http://mincore.c9x.org/breaking_av_software.pdf ).

9
D__

Démarrage sécurisé

Qu'est-ce qui vous fait penser que cela n'existe pas? Son assez basique en principe, en raison du manque de mémoire dans UEFI et de la portée limitée pour corriger les vulnérabilités, au lieu de détecter le code malveillant, il vérifie plutôt votre image de démarrage avec une signature. Cependant, le principal problème avec le démarrage sécurisé est que tout le monde ne peut pas signer une image de démarrage avec une signature autorisée (par conception).

Cela signifie que pour les personnes qui compilent leurs propres systèmes d'exploitation, ils ne pourront pas exécuter leur propre système d'exploitation. De plus, si l'utilisateur était en mesure de signer son propre système d'exploitation, un virus pourrait se signer lors de l'installation.

6
Aron

Outre ce qui a déjà été dit, je pense qu'il y a un problème plus fondamental: le niveau matériel est déjà trop bas pour comprendre ce qui se passe.

Il y a eu des protections matérielles pour les choses de bas niveau (par exemple, la modification du secteur de démarrage), mais prenons quelques actions courantes de malware/PUP actuelles:

  • changer la page d'accueil/les paramètres de l'utilisateur en sites douteux;
  • ajouter des programmes qui s'exécutent automatiquement et tentent de frauder l'utilisateur en payant de l'argent;
  • enregistrer des touches pour voler des mots de passe;
  • envoyer du spam/faire des demandes Web finalisées au DDoS;
  • crypter des fichiers et demander une rançon;
  • se connecter à n'importe quel partage réseau possible pour infecter les exécutables/documents Office;
  • demander à un botnet-master des commandes et les exécuter.

Tout cela est trop haut pour un crochet matériel; en ce qui concerne le matériel, toute la logique de haut niveau (appels système, fichiers/clés de registre, requêtes DNS, connexions HTTP, ...) est déjà partie, c'est tout "écrire sur le disque à cet emplacement", "déplacer ceux octets en mémoire "," envoyer ces paquets Ethernet "et similaires, donc la reconnaissance des modèles dangereux de haut niveau est beaucoup plus compliquée.

6
Matteo Italia

Le principal problème avec un logiciel antivirus n'est pas vraiment qu'il est vulnérable aux attaques ou qu'il manque de privilèges suffisants. Le problème est plutôt plus fondamental, et il s'applique à tous les ordinateurs à usage général (machines de Turing universelles): dans la plupart des cas, étant donné un morceau de code, la seule façon de dire ce qu'il fera est de l'exécuter. De plus, le code dépend généralement de l'entrée, et savoir ce qu'il fait sur la plupart de ses entrées n'est pas une garantie de ce qu'il fera sur le reste. C'est en partie pourquoi l'écriture de code sans bogue est si difficile, mais cela signifie également que le traitement de texte que vous venez d'installer peut fonctionner correctement pendant des mois, puis décidez un jour d'effacer votre disque dur car vous avez également tapé une lettre plusieurs fois - et la seule façon de savoir que cela se produira pourrait être d'essayer toutes les séquences d'entrée possibles.

S'il est difficile de croire que le but d'un code peut être difficile à comprendre, voir quelques exemples de obfuscation . Je suis un bon programmeur C, mais comprendre l'entrée d'Ian Phillipps me prendrait au moins une demi-heure de concentration intense - et c'est le code C; imaginez si c'était l'Assemblée. Imaginez maintenant essayer de passer par un logiciel de la taille de Microsoft Word en essayant de comprendre ce qu'il fait avec suffisamment de détails pour vous assurer qu'il ne nuira pas à l'ordinateur. C'est à peu près aussi littéralement impossible que possible.

En raison de ce problème fondamental, la seule chose que les logiciels antivirus peuvent faire est de conserver une liste des "signatures" de virus et d'essayer de les trouver dans les programmes que vous installez. Étant donné que de nouveaux virus apparaissent quotidiennement, c'est évidemment une chose difficile à faire et cela nécessite des mises à jour constantes. Le faire dans le matériel ne le rendrait pas plus facile. Une alternative intéressante pourrait être de limiter la quantité de choses que les programmes sont autorisés à faire. Cela se fait dans une certaine mesure - les systèmes d'exploitation modernes interdisent déjà aux programmes de se modifier, par exemple, et il y a toujours des limites à ce que chaque programme peut faire. Ces limites peuvent cependant toujours être contournées (souvent en trompant l'utilisateur ou en exploitant un bug), et ce sera probablement toujours le cas: trop de contraintes rendraient votre ordinateur inutile.

3
Legendre17

Des techniques de détection de virus matériel (micrologiciel) sont possibles, mais devraient être différentes pour chaque matériel et chaque variation de micrologiciel. Par exemple, comme indiqué ci-dessus, le code BIOS est écrit par différents fabricants (PHOENIX, Dell, etc.), et chacun aurait besoin de ses propres routines de détection antivirus. Étant donné que le firmware ne change pas souvent, il serait plus simple d'implémenter une technique de somme de contrôle pour déterminer si tout changements ont été effectués, au lieu de se tenir au courant de chaque nouvelle variante de chaque nouveau virus qui pourrait éventuellement exister.

1
Ryan Griggs

Un logiciel malveillant qui infecte le BIOS ou le contrôleur de disque dur existe déjà. Ainsi, votre antivirus HW ne pourra pas être mis à jour (et deviendra obsolète avant même d'être expédié aux consommateurs) ou pourra être mis à jour, et souffrira d'infections similaires que votre système d'exploitation connaît actuellement.

Ce serait juste un autre ordinateur sous le capot de votre ordinateur actuel. Avec tous vos problèmes actuels - juste à deux niveaux.

1
Agent_L