Comprendre les logiciels malveillants

Auteur: Roger Costello

Récemment, j’ai commencé à en apprendre davantage sur les logiciels malveillants. Pour organiser mes pensées, j’ai créé un modèle des concepts pertinents. Les logiciels malveillants impliquent des programmes logiciels. J’ai donc eu besoin de modéliser des programmes – leurs entrées et leurs sorties. J’ai appris que les logiciels malveillants impliquent une intention de causer des dommages. J’ai donc dû modéliser les personnes créant des programmes avec une intention (malveillante ou bénigne) et modéliser la notion de préjudice. J’ai appris qu’il n’existait pas de définition commune du malware. Certaines personnes définissent les logiciels malveillants comme des logiciels créés avec une intention malveillante; d’autres le définissent comme un logiciel nuisible. J’ai adopté la définition selon laquelle un logiciel malveillant est un logiciel créé avec une intention malveillante et, lorsqu’il est exécuté, ses résultats sont dommageables.

Vous trouverez ci-dessous les déclarations des entités et relations que j’ai exprimées dans mon modèle. Veuillez noter que j’utilise le mot programme plutôt que logiciel. Je fais la distinction entre les programmes et les entrées dans les programmes. Les entrées peuvent être de type logiciel, code, texte ou binaire. Les programmes traitent (exécutent / interprètent) les entrées. L’objectif est de déterminer quelles entrées sont des logiciels malveillants.

  1. Les programmes sont créés par des personnes.
  2. Les entrées dans les programmes sont créées par des personnes.
  3. Chaque entrée dans un programme produit une sortie.
  4. Avec la même entrée, un programme produit toujours la même sortie.
  5. Un programme est créé pour traiter un certain ensemble d’entrées et produire un certain ensemble de sorties. L’ensemble réel d’intrants dans un programme et les extrants produits par un programme peuvent être plus volumineux. C’est-à-dire que les E / S attendues sont un sous-ensemble des E / S réelles.
  6. Lorsqu’une personne crée une entrée dans un programme, elle a des intentions bénignes ou malveillantes.
  7. Certaines sorties causent des dommages.
  8. Les entrées qu’un programme est créé pour traiter sont bénignes. Les sorties pour lesquelles un programme est créé ne causent pas de dommages.
  9. Si les déclarations ci-dessus sont satisfaites, les conclusions suivantes suivent logiquement:
    – Les entrées qu’un programme a été créé pour traiter ne sont pas des logiciels malveillants; seules les entrées pour lesquelles un programme n’a pas été créé peuvent être des logiciels malveillants.
    – Les logiciels conçus avec une intention bénigne peuvent être des logiciels malveillants. Il peut y avoir des entrées bénignes qui, lorsqu’elles sont exécutées par un programme, produisent des sorties nuisibles.

La modélisation consiste à résumer les aspects non pertinents et à simplifier certains aspects pertinents. J’ai montré les déclarations ci-dessus à un ami et il a identifié des choses que mon modèle avait omises et simplifiées. Ci-dessous, les commentaires de mes amis, en rouge.

1.Les programmes sont créés par des personnes.

Certains programmes sont créés par d’autres programmes. Par exemple, Lex reçoit une grammaire en entrée et un analyseur syntaxique (un programme). Ainsi, un programme a créé un programme.

2. Les entrées dans les programmes sont créées par des personnes.

La plupart des logiciels actuels sont des logiciels intégrés. Ces programmes sont alimentés par des capteurs et des actionneurs. Donc, la plupart des contributions proviennent de non-humains.
 

3. Chaque entrée dans un programme produit une sortie.

Si un programme échoue, il risque de ne produire aucune sortie, ou de produire une sortie incorrecte, ou de produire la sortie correcte au mauvais moment (ce qui revient essentiellement à la même chose qu’une sortie erronée).

4. Avec la même entrée, un programme produit toujours la même sortie.

Cela n’est presque jamais vrai dans les programmes en temps réel intégrés. Par exemple, l’entrée du programme est une vanne de cafetière qui contrôle le débit d’eau dans la machine à café et la sortie correspond au niveau d’eau. Donnez au programme la même entrée (vanne) et presque toujours la sortie (niveau d’eau) sera différente.

5. Un programme est créé pour traiter un certain ensemble d’entrées et produire un certain ensemble de sorties. L’ensemble réel d’intrants dans un programme et les extrants produits par un programme peuvent être plus volumineux. C’est-à-dire que les E / S attendues sont un sous-ensemble des E / S réelles.

Un programme doit toujours vérifier les entrées avant de les traiter. Ainsi, l’ensemble des entrées traitées doit être égal à l’ensemble des entrées pour lesquelles le programme a été créé.
 

6. Lorsqu’une personne crée une entrée dans un programme, elle a des intentions bénignes ou malveillantes.

Comme indiqué précédemment, les personnes ne sont pas les seules entités à créer des entrées. Les capteurs et les actionneurs ont-ils des intentions?

7. Certaines sorties causent des dommages.

D’accord.

8. Les entrées qu’un programme est créé pour traiter sont bénignes. Les sorties pour lesquelles un programme est créé ne causent pas de dommages.

Considérons un programme qui contrôle une aile. L’entrée provient d’un tube de Pitot. Supposons qu’il y ait de la glace sur le tube de Pitot, ce qui entraîne une entrée dans le programme qui produit une sortie (configuration de l’aile) qui provoque le décrochage de l’avion. L’entrée est dans la plage attendue par le programme et a des intentions bienveillantes (en supposant qu’un tube de Pitot ait des intentions) mais la sortie produit un préjudice.

9. Si les déclarations ci-dessus sont satisfaites, les conclusions suivantes suivent logiquement:

  • Les entrées qu’un programme a été créé pour traiter ne sont pas des logiciels malveillants; seules les entrées pour lesquelles un programme n’a pas été créé peuvent être des logiciels malveillants.

  Soigné.

  • Les logiciels conçus avec une intention bénigne peuvent être des logiciels malveillants. Il peut y avoir des entrées bénignes qui, lorsqu’elles sont exécutées par un programme, produisent des sorties nuisibles.
Oui, certains intrants sont bénins mais entraînent des dommages. Personne ne voulait que le système de radiation cause des dommages, mais à cause d’erreurs dans le système, quelqu’un a été tué.

Rappelez-vous que j’ai adopté la définition voulant que le malware soit un logiciel créé avec une intention malveillante et lorsqu’il est exécuté provoque des dommages. Voici ce que mon ami avait à dire à ce sujet:

Supposons qu’il existe une faille dans la conception d’un programme, qui expose une vulnérabilité exploitée par quelqu’un; Ce programme est-il malveillant? Un logiciel malveillant d’implémentation est-il juste parce qu’il peut être exploité? Je pense que SSH avait un bogue depuis environ 10 ans, jusqu’à ce que quelqu’un l’exploite. Le programme malveillant SSH était-il malveillant pendant les 10 années où le bogue n’a pas été détecté? Que se passe-t-il s’il y a une faille dans la conception d’un programme qui pourrait causer des dommages, par exemple une faille dans le logiciel de l’avion qui pourrait provoquer son crash? Est-ce que ce malware?


Source de la page: http://xfront.com/malware/index.html
Traduit par Mathilde Guibert

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *