Question:
Est-il judicieux de considérer un crash logiciel serveur déclenchable comme une attaque DOS?
Matías
2019-01-30 04:28:54 UTC
view on stackexchange narkive permalink

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

Cela 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 d'un manque de gestion des erreurs - Il plante (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 un DOS ( Denial Of Service ) car il fait du 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 inondant le serveur d'une certaine manière (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 doit-il être appelé ?

Si une application est bien écrite, elle n'aura pas de bogues DOS de type crash et un attaquant devra recourir à un DDOS complet (qui fonctionnera toujours si l'attaquant a un plus gros firehose que la cible).Cependant, si l'application cible a un plantage facile à déclencher, je suis sûr que tout attaquant préfère envoyer le paquet unique conçu et se sauver le $$ de l'exécution d'un réseau DDOS.
Tant qu'il empêche les utilisateurs d'utiliser le service, il s'agit d'un DOS.J'ai travaillé sur un site Web qui a été attaqué par DOS par Google et Bing simplement parce que Drupal ne peut pas gérer la charge (je voulais dire ** ne pouvait ** pas mais je pense que cela ne peut toujours pas).
Ce serait une attaque DoS, en particulier j'ai déjà vu de telles attaques appelées attaques de «pilule empoisonnée» ... mais je ne peux pas trouver de référence pour le moment
Je changerais votre titre en un crash logiciel «déclenché».Le crash aléatoire n'est pas vraiment DoS, mais le fait que vous puissiez le provoquer sur commande est l'élément clé.
@zero298 Je ne suis pas du tout d'accord: le titre n'a pas besoin de contenir tout le contexte et la nuance de la question, c'est à cela que sert le corps de la question.Je serais d'accord avec un titre encore plus court, comme "Un crash logiciel est-il une attaque DoS?"La réponse au * titre * serait «parfois», mais si quelqu'un postait cela, il serait clair qu'il était trop paresseux pour lire la question réelle.
Je pense qu'un peu plus de détails sur ce point sont importants: «Il plante (jusqu'à ce que quelqu'un l'exécute à nouveau).» Qu'arrivera-t-il exactement aux futures demandes?Si le serveur plante pour vous, mais continue de fonctionner normalement pour tous les autres utilisateurs, alors je dirais que vous avez plus d'un bogue qu'une attaque DOS, car le service est toujours disponible pour d'autres personnes.Techniquement, vous avez DOS vous-même, il y a donc un bogue à corriger, mais si le seul utilisateur concerné est vous-même, vous n'avez pas beaucoup d'attaque (généralement).
Vous entendez parler d'attaques DoS basées sur les inondations parce qu'elles sont très simples à faire: l'attaquant a juste besoin de plus de bande passante que la cible.Cela en fait de loin la forme d'attaque la plus courante.
@ConorManconeI a lu que lorsque le service se bloque jusqu'au redémarrage, par exemple."exécuter à nouveau (sur le serveur)" par exemple, démarrer un processus `node` dans une session` screen`: s'il y a une exception non interceptée, le processus serveur NodeJS meurt jusqu'à ce qu'il soit redémarré.De toute évidence, une atténuation ici est que les services critiques seraient redémarrés automatiquement en cas de panne par quelque chose comme systemd ou un logiciel de surveillance, mais cela n'atténue pas un flot d'attaques de pilules empoisonnées.
@Josh Merci Josh.J'ai fini par ajouter une réponse pour parler de cette distinction de toute façon, car l'ensemble de la technologie compte.Je n'ai jamais fait d'hébergement de nœuds (juste PHP et Python) et sa terminologie n'était pas claire de ce qu'il décrivait exactement.Cela me semble un peu fou, ce qui explique probablement pourquoi j'étais confus au départ.Je suis habitué à ce que l'application et le serveur soient séparés, auquel cas aucune quantité d'exceptions non gérées ne peut causer des problèmes pour le service lui-même - juste pour la seule demande qui a généré l'erreur d'application.
Ce n'est pas très différent d'un Ping of Death, et ceux-ci sont considérés comme des attaques DoS.
Sept réponses:
DarkMatter
2019-01-30 04:32:48 UTC
view on stackexchange narkive permalink

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

schroeder
2019-01-30 04:58:46 UTC
view on stackexchange narkive permalink

DDoS (Distributed DoS) est caractérisé par des inondations créant un DoS (dans toutes les définitions disponibles). Un seul nœud causant avec succès une inondation est assez rare.

Mais DoS peut être causé par un large éventail 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 gestion des commandes RPC , il est possible de manipuler des pointeurs de données dans le 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 d'exécuter potentiellement du code sur l'hôte. [empasis mine]

Et du Wiki:

Les attaques par déni de service sont caractérisées par une tentative explicite des attaquants pour 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 sérieuses sont distribuées.

Donc, oui, un simple crash est un DoS.

DDoS se caractérise par une attaque * distribuée *, mais pas nécessairement par une inondation.Lorsque vous envoyez une seule charge utile de panne chaque fois que le serveur revient en ligne et que vous utilisez toujours un zombie de botnet différent pour le faire afin d'éviter la liste noire d'adresses IP, ce serait également une forme d'attaque DDoS.
@Philipp Je ne suis pas sûr de cela.Cela ressemble à un DoS en série.Chaque référence que je peux trouver pour décrire DDoS a été de caractériser l'événement comme une inondation provenant de plusieurs sources créant un DoS, et non un DoS provenant de plusieurs sources.Pouvez-vous fournir quelque chose pour soutenir votre exemple?
@schroeder Je pense que c'est parce que de nombreuses attaques DoS (ou, du moins, les plus faciles à réaliser) impliquent des inondations, et les inondations provenant de plusieurs sources sont plus susceptibles de submerger une cible.Ainsi _la plupart_ les attaques DDoS _do_ impliquent une inondation à plusieurs sources, mais - je dirais - une "inondation" qui n'est pas le _definer_ des attaques DDoS, alors que "plusieurs sources" l'est.Une attaque soigneusement conçue, comme le demande l'OP, provenant de plusieurs sources (pour entraver la liste noire des adresses IP) serait légitimement une DDoS.
@TripeHound bien sûr, je comprends la supposition, et je pourrais être d'accord, si j'avais quelque chose pour soutenir l'hypothèse.Je ne trouve aucun soutien.
D'un point de vue logique, il me semble logique que la caractéristique déterminante d'un DDOS est que la distribution de l'attaque empêche le défenseur d'atténuer l'attaque.Le défenseur a vraiment besoin d'être spécifié pour que cela ait un sens.Je n'envisagerais pas d'envoyer des charges utiles de crash uniques à une application serveur chaque fois qu'elle est en ligne un DDoS contre l'application serveur, mais cela pourrait être considéré comme un DDoS du point de vue d'un défenseur de niveau inférieur (peut-être un pare-feu) qui pourrait ne pas être en mesurepour bloquer cette attaque car elle continue à provenir d'adresses IP différentes à chaque fois.
Oui, tout le monde, je suis tout à fait d'accord que DDoS *** pourrait *** peut-être, logiquement, signifier une attaque distribuée de toute nature.Mais, je ne peux trouver *** aucune référence *** à cette signification utilisée dans la pratique et même l'exemple proposé me semble être une série d'attaques, et non une seule attaque (bien que distribuée).Si *** quelqu'un *** peut aider avec un exemple concret, je vous en serais reconnaissant.[En fait, sortez et comptez les dents du cheval] (https://bedejournal.blogspot.com/2008/02/francis-bacon-and-horses-teeth.html).
DDoS peut absolument inclure des attaques qui utilisent un mécanisme différent en plus d'une simple inondation.Je dis cela en tant que personne qui était récemment développeur de logiciels dans une équipe anti-DDoS pour une entreprise mondiale bien connue.
https://www.paloaltonetworks.com/cyberpedia/what-is-a-denial-of-service-attack-dos - mais merci de tenir le coup jusqu'à ce que quelqu'un fournisse une citation!Beaucoup trop de discussions sur Internet se terminent par un acte de foule.
sarnold
2019-01-30 10:17:35 UTC
view on stackexchange narkive permalink

La sécurité est souvent considérée comme offrant 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. En fonction de ce que le service fournit, cela peut être ennuyeux ou catastrophique.

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

De plus, les bons gestionnaires de services ne redémarrent pas les services sans limite.Il y a de fortes chances que quelque chose qui fasse planter le service puisse également être exploitable par d'autres moyens, et le redémarrage aveugle du service donne à l'attaquant une autre chance.
Conor Mancone
2019-01-30 20:00:10 UTC
view on stackexchange narkive permalink

Je voulais ajouter un autre détail important qui n'est pas explicitement indiqué dans les autres réponses. Vous avez dit ceci:

Cela 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 d'un manque de gestion des erreurs - Il plante ( jusqu'à ce que quelqu'un s'exécute à nouveau ).

(c'est moi qui souligne). Cette mise en garde est importante car la manière dont ces services répondent à un crash peut varier énormément entre les ensembles de technologies.

Pas un DoS

Par exemple en PHP ou la plupart cgi implémentations, une seule requête plantée n'a absolument aucun impact sur les autres requêtes. Le serveur ne parvient pas à envoyer une réponse appropriée pour la demande en panne, mais les autres demandes provenant d'utilisateurs légitimes continuent d'être traitées correctement par le serveur. Dans ce cas, le crash ne concerne que vous-même - pas les autres - et il serait donc difficile de qualifier cela d'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 en cours.

A DoS

Si, cependant, votre charge utile provoque l'arrêt du service réel et qu'aucune demande ne peut être reçue par le serveur jusqu'à ce qu'une action soit entreprise pour restaurer les services (que ce soit par un administrateur ou par une restauration automatique après un court laps de temps), vous avez définitivement 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 pourrait éventuellement être promue en attaque DoS réelle si vous pouvez "tromper" un utilisateur légitime pour qu'il visite une URL contenant votre charge malveillante. La plupart du temps, ces attaques n'ont pas beaucoup d'impact pratique, car le service continuera à fonctionner normalement lorsqu'ils l'utiliseront plus tard normalement. Cependant, il peut y avoir de rares circonstances où la charge utile est conservée dans la session et verrouille donc définitivement l'utilisateur (j'ai déjà vu des gens déclencher accidentellement de telles circonstances dans la vie réelle).

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

DoS peut également s'appliquer si vous incitez un utilisateur valide à exécuter la charge utile.Le DoS est localisé, mais il compte toujours comme un DoS.
@schroeder Oui, c'est vrai, bien qu'il soit difficile de faire en sorte que de telles attaques aient un impact substantiel, c'est pourquoi je l'ai laissé de côté (je vais ajouter un commentaire à ce sujet).En règle générale, ce type d'attaque peut amener l'utilisateur affecté à échouer le chargement de la page, mais s'il retourne à la page en utilisation normale, tout fonctionne comme d'habitude.Il est possible d'avoir un cas où la mauvaise charge utile est persistée dans la session d'une manière ou d'une autre, ce qui peut finir par faire effectivement du DoS à un seul utilisateur - cela peut être une attaque DoS très efficace.
Dans le nœud, vous avez un petit nombre de serveurs à thread unique.donc une panne du serveur affecte tous les utilisateurs actifs (bien sûr, le redémarrage automatique est une bonne idée, mais le blocage continu du processus nuira gravement au service).Cependant, ce qui devrait être plus préoccupant, c'est le type de plantage qui ... pourrait être exploitable (les abandons de traitement logique ne termineraient pas le binaire du nœud).
PHP FastCGI ou FPM utilise un processus de travail PHP par requête et une erreur fatale ne ferait que tuer votre processus de travail, et le démon FastCGI en couvrirait un autre.Mais que se passe-t-il si votre erreur est si grave qu'elle tue _apache_ (ou tout autre serveur Web que vous utilisez) - alors c'est une attaque DOS.J'ai déjà vu cela (où le bogue était dans un module Apache) et le résultat était que rien n'écoutait plus sur le port 80 et une perte totale de service
Merci @eckes, Je ne suis pas un gars du nœud, donc je ne sais pas grand-chose sur la façon dont il gère les exceptions non gérées.
@Josh Oui et non.En effet, si vous avez réussi à tuer Apache, vous êtes de retour à un DoS.Cependant, cela nécessite généralement un bogue dans apache.Cependant, déclencher une erreur fatale dans une application PHP ne provoque pas la mort du processus de travail sous-jacent.Pour faire mourir le worker, vous devez trouver un bogue dans PHP * lui-même *, ce qui est beaucoup plus difficile que de trouver un bogue dans l'application PHP.Idem avec apache - pour tuer apache, vous devez déclencher un bogue dans apache (notez que la réponse des trognanders inclut un exemple d'un tel incident).Ceux-ci font des attaques DoS, mais sont beaucoup plus difficiles.
@ConorMancone, ... trouver une attaque d'exécution de code arbitraire sur une application PHP, en revanche, a tendance à être une occurrence fréquente, et tirer parti de * cela * dans un déni de service qui affecte Apache dans son ensemble est simple.
@CharlesDuffy Sauf si je vous ai mal compris, j'ai l'impression que c'est un peu une généralisation hâtive.Une attaque d'exécution de code à distance est le type d'attaque le plus dangereux.Il existe certainement des sites vulnérables (ils apparaissent ici pour poser des questions sur les fichiers aléatoires qu'ils ont trouvés sur leur serveur), mais cela ne veut pas dire que c'est fréquent ou qu'il est facile de trouver une telle vulnérabilité sur un site aléatoire.De plus, si vous aviez obtenu des privilèges d'exécution sur un serveur, je ne vois pas pourquoi vous iriez donc faire un DoS sur le site - il y a probablement des attaques plus juteuses à avoir, et un DoS est fort.
trognanders
2019-01-30 23:25:18 UTC
view on stackexchange narkive permalink

Votre attaque est essentiellement 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 le seul.

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 des attaques DOS triviales et reçoivent également cette étiquette. Un bug d'exécution de code distant écrasant la pile sans un shellkit écrase toujours la pile avec des valeurs incorrectes provoquant un segfault.

DarcyThomas
2019-02-01 04:45:16 UTC
view on stackexchange narkive permalink

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

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 de 2 Go de zéro bits . Un très petit fichier zip qui utilise toute la mémoire disponible pour ouvrir et analyser.

Si vous refusez à un utilisateur légitime d'utiliser une ressource [CPU, RAM, disque, bande passante réseau (réinitialisation du mot de passe?] Alors vous pourriez l'appeler 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), alors je pourrais être enclin à simplement appeler cela une application (ou sécurité).

virolino
2019-01-30 18:38:05 UTC
view on stackexchange narkive permalink

Est-il judicieux de considérer un crash logiciel serveur, comme une attaque DOS?

Tout acteur agira dans au moins deux dimensions par rapport à toute activité: capacité et permission.

La capacité a 2 possibilités: capable et incapable .

L'autorisation a également 2 possibilités: autorisé ou denied.

Par conséquent, un bon acteur effectuera une action uniquement si capable et allowed.

De mon point de vue, crash logiciel = impossible et DOS = refusé . Puisque les deux sont des "valeurs" sur des dimensions différentes, elles ne peuvent pas être considérées comme similaires, même si les effets pour l'utilisateur final peuvent être similaires. Cependant, les effets vus par l'administrateur du réseau peuvent être totalement différents - les solutions pour eux sont généralement différentes.

De plus, une attaque DOS peut entraîner un crash logiciel, mais ils ne sont toujours pas similaires - ils sont uniquement lié - cause et effet.

Exemple: tout logiciel peut planter pour un nombre incalculable de raisons même en l'absence d'attaque.

Remarque: un crash logiciel signifie généralement que le processus est arrêté par le système d'exploitation en raison d'une opération défectueuse. DOS est possible généralement parce que le logiciel se comporte mal, mais ne plante pas.

DoS n'est pas un problème d'autorisations.Les définitions de base des termes contredisent votre prémisse.
Même ainsi, les termes ne sont pas similaires.Je suppose donc que ma réponse est correcte, même si la «métaphore» n'est pas parfaite.Le vote défavorable ne doit donc pas faire référence à la réponse entière.De plus, D sous DOS est "Denial" (exactement comme je l'ai écrit) - donc encore une fois, je ne comprends pas vraiment le vote négatif.
Vous êtes factuellement, linguistiquement et logiquement incorrect.Vous essayez d'appliquer des définitions de parties de termes hors contexte pour concevoir un sens et le résultat n'a aucun sens.Je pourrais passer en revue les erreurs de logique, mais le fait est que le terme «DoS» est * défini * par la perte intentionnelle de service pour les utilisateurs légitimes, et un crash est un exemple de base de cette classification d'attaque.
Si j'utilise vos termes, l'acteur malveillant est «capable» et «autorisé» (c'est-à-dire non refusé, compte tenu de vos définitions) à envoyer un paquet spécialement conçu pour arrêter le service.Votre conclusion est donc erronée dès le départ.Votre prochain point n'a aucun sens étant donné le contexte que vous avez donné aux termes que vous utilisez, donc votre argument est basé sur un changement de définitions.Le résultat est que votre logique n'a pas de flux.
Juste curieux: qui "autorise" quelque chose de malveillant?Comment les acteurs malveillants sont-ils autorisés?Oui, ils sont capables, oui, ils agissent, non, ils ne sont pas autorisés.Ils agissent simplement.Je pense que vos définitions ne sont pas non plus très valables.Et ma réponse est la seule à répondre à la question du titre, même si d'autres réponses sont techniquement plus correctes.Pouvez-vous expliquer - peut-être dans une réponse - «en quoi un crash logiciel est-il similaire à une attaque DoS»?S'il vous plaît.
La question est le * tout * post, pas seulement le titre.Le message entier fournit le contexte.J'utilise *** vos *** définitions quand je dis que les acteurs malveillants sont «autorisés», parce qu'ils ne sont pas «refusés».c'est *** votre *** dichotomie.Et, si vous cherchez par vous-même, vous constaterez que j'ai * fourni * une réponse.Autrement dit, j'ai fourni une réponse à la question, pas votre réinterprétation.
Une panne logicielle compte comme un déni de service car elle empêche les utilisateurs légitimes d'utiliser le service (c'est-à-dire leur refuse le service), car le service ne peut pas être utilisé lorsque le processus n'est pas en cours d'exécution.On pourrait se demander comment un DDoS réduit-il les privilèges des utilisateurs légitimes?


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...