web-dev-qa-db-fra.com

Est-il judicieux de considérer qu'un logiciel serveur déclenchable plante une attaque DOS?

J'ai trouvé une petite vulnérabilité dans une application Web fonctionnant sur le serveur Node.js.

Il fonctionne en envoyant une charge utile spécialement conçue au serveur d'applications, ce qui fait que le code du serveur d'applications génère une erreur et en raison du manque de gestion des erreurs - Il se bloque (jusqu'à ce que quelqu'un l'exécute à nouveau).

Je ne sais pas quel est le nom approprié pour ce type d'attaque. Je suppose que c'est une attaque DOS (Denial Of Service) car elle rend le serveur Deny Serving ses clients. D'un autre côté, jusqu'à présent, je n'ai entendu parler que des attaques DOS qui fonctionnent en flooding le serveur d'une manière ou d'une autre (ce qui n'est pas le cas ici).

Alors, est-il correct de le considérer comme une attaque DOS? Si la réponse est non, comment l'appeler?

57
Matías

Oui. Toute attaque qui a pour but de refuser l'utilisation normale d'un service par des utilisateurs légitimes est par définition un DoS (Denial of Service).

137
DarkMatter

DDoS (Distributed DoS) se caractérise par des inondations créant un DoS (dans toutes les définitions disponibles). Un seul nœud provoquant une inondation avec succès est plutôt rare.

Mais le DoS peut être provoqué par une large gamme de déclencheurs.

CVSS a même un exemple de crash logiciel classé comme DoS pour vous:

En raison d'une faille dans la fonction de gestionnaire des commandes RPC, il est possible de manipuler des pointeurs de données au sein du processus VMX (Virtual Machine Executable). Cette vulnérabilité peut permettre à un utilisateur d'une machine virtuelle invitée de planter le processus VMX entraînant un déni de service (DoS) sur l'hôte ou potentiellement exécuter du code sur l'hôte. [mine d'empasis]

Et à partir du wiki :

Les attaques par déni de service se caractérisent par une tentative explicite des attaquants d'empêcher l'utilisation légitime d'un service. Il existe deux formes générales d'attaques DoS: celles qui bloquent les services et celles qui inondent les services. Les attaques les plus graves sont distribuées.

Donc, oui, un simple crash est un DoS.

60
schroeder

Très souvent, la sécurité est considérée comme fournissant trois propriétés:

  • Disponibilité
  • Intégrité
  • Confidentialité

Dans votre cas, vous avez trouvé quelque chose qui permet à un utilisateur d'affecter la disponibilité du service. Selon ce que le service fournit, cela peut être ennuyeux ou catastrophique.

Les services qui échouent sont souvent redémarrés automatiquement. Ceux-ci peuvent atténuer les plantages occasionnels, mais le redémarrage d'un service est généralement beaucoup plus cher que le coût habituel de gestion d'une connexion. Dans ce cas, l'exécution de votre requête "planter le serveur" cinq ou six fois par seconde peut ne pas représenter beaucoup de bande passante mais reste probablement assez difficile sur le serveur moyen.

10
sarnold

Je voulais ajouter un autre détail important non explicitement mentionné dans les autres réponses. Vous avez dit ceci:

Il fonctionne en envoyant au serveur une charge utile spécialement conçue, ce qui fait que le code du serveur génère une erreur, et en raison du manque de gestion des erreurs - Il se bloque (jusqu'à ce que quelqu'un l'exécute à nouvea).

(c'est moi qui souligne). Cette mise en garde est importante car la façon dont ces services réagissent à un crash peut varier énormément entre les ensembles technologiques.

Pas un DoS

Par exemple, dans PHP ou la plupart des implémentations cgi, une seule demande bloquée n'a absolument aucun impact sur les autres demandes. Le serveur ne parvient pas à envoyer une réponse appropriée pour la demande bloquée, mais d'autres demandes provenant de légitimes les utilisateurs continuent d'être gérés correctement par le serveur. Dans ce cas, le plantage ne concerne que vous-même - pas les autres - et il serait donc difficile de qualifier cela comme une attaque DoS. Bien sûr, il y a un bogue, et vous vous refusez le service, mais si le serveur continue de fonctionner normalement pour tout le monde, il n'y a pas vraiment de déni de service.

A DoS

Si, cependant, votre charge utile entraîne la baisse du service réel et qu'aucune demande ne peut être reçue par le serveur jusqu'à ce que des mesures soient prises pour restaurer les services (que ce soit par un administrateur ou une restauration automatique après une courte période), alors vous avez certainement un déni de service car le crash que vous avez causé a empêché le service de répondre aux utilisateurs légitimes (comme indiqué dans d'autres réponses).

Dans certaines circonstances, l'attaque "Not a DoS" qui ne supprime pas le serveur peut éventuellement être promue en une attaque DoS réelle si vous pouvez "inciter" un utilisateur légitime à visiter une URL avec votre charge utile malveillante. La plupart du temps, ces attaques n'ont cependant pas beaucoup d'impact pratique, car le service continuera de fonctionner normalement lorsqu'ils utiliseront ensuite le service normalement. Cependant, il peut y avoir de rares circonstances où la charge utile persiste dans la session et verrouille donc l'utilisateur de manière permanente (j'ai déjà vu des gens déclencher accidentellement de telles circonstances dans la vie réelle auparavant).

D'après votre description, il est difficile de dire dans laquelle de ces catégories votre charge utile particulière appartient, mais il y a une distinction importante à faire.

9
Conor Mancone

Votre attaque est fondamentalement la définition de DOS, elle refuse littéralement le service et vous utilisez le terme correctement.

La consommation de bande passante est une approche naïve qui ne nécessite pas que le serveur ait une vulnérabilité spécifique, mais n'est certainement pas la seule.

Voici un vrai CVE sur Apache décrivant une attaque DOS similaire (se bloque avec segfault) en utilisant cette terminologie:

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8011

Des attaques encore plus compliquées sont parfois trivialement des attaques DOS et reçoivent également cette étiquette. Un bogue d'exécution de code à distance écrasant la pile sans shellkit écrase toujours la pile avec des valeurs incorrectes provoquant une erreur de segmentation.

4
trognanders

Oui, cela pourrait être appelé une vulnérabilité DOS. J'ai entendu cela appelé une "application DOS Attack".

Un autre exemple: un site qui exécute un antivirus sur les fichiers téléchargés, où quelqu'un télécharge un fichier Zip de 100 000 fichiers Zip contenant 100 000 fichiers 2 Go de zéro bit. Un très petit fichier Zip qui utilise toute la mémoire disponible pour ouvrir et numériser.

Si vous refusez à un utilisateur légitime d'utiliser une ressource [CPU, Ram, disque, bande passante réseau (réinitialisation du mot de passe?]), Vous pouvez appeler cela une attaque DOS.

Si toutefois l'attaque corrompt simplement l'état de l'application (par exemple, permet à un utilisateur non autorisé de mettre l'application en mode lecture seule), je pourrais être enclin à simplement appeler cela une vulnérabilité d'application (ou de sécurité).

1
DarcyThomas