Έχουν εντοπιστεί 2 ευπάθειες DoS σε διάφορες υλοποιήσεις του πρωτοκόλλου HTTP/8

Ερευνητές από το Netflix και την Google αποκάλυψε Υπάρχουν οκτώ τρωτά σημεία σε διάφορες υλοποιήσεις του πρωτοκόλλου HTTP/2 που μπορούν να προκαλέσουν άρνηση υπηρεσίας στέλνοντας μια ροή αιτημάτων δικτύου με συγκεκριμένο τρόπο. Το πρόβλημα επηρεάζει τους περισσότερους διακομιστές HTTP με υποστήριξη HTTP/2 σε κάποιο βαθμό και έχει ως αποτέλεσμα την εξάντληση της μνήμης του εργαζόμενου ή τη δημιουργία υπερβολικού φορτίου CPU. Οι ενημερώσεις που εξαλείφουν τις ευπάθειες παρουσιάζονται ήδη στο nginx 1.16.1/1.17.3 и H2O 2.2.6, αλλά για τώρα Μη διαθέσιμο για το Apache httpd και άλλα προϊόντα.

Τα προβλήματα προέκυψαν από επιπλοκές που εισήχθησαν στο πρωτόκολλο HTTP/2 που σχετίζονται με τη χρήση δυαδικών δομών, ένα σύστημα για τον περιορισμό των ροών δεδομένων εντός των συνδέσεων, έναν μηχανισμό ιεράρχησης ροής και την παρουσία μηνυμάτων ελέγχου τύπου ICMP που λειτουργούν στη σύνδεση HTTP/2 επίπεδο (για παράδειγμα, ping, επαναφορά και ρυθμίσεις ροής). Πολλές υλοποιήσεις δεν περιόρισαν σωστά τη ροή των μηνυμάτων ελέγχου, δεν διαχειρίστηκαν αποτελεσματικά την ουρά προτεραιότητας κατά την επεξεργασία αιτημάτων ή χρησιμοποιούσαν μη βέλτιστες υλοποιήσεις αλγορίθμων ελέγχου ροής.

Οι περισσότερες από τις προσδιορισμένες μεθόδους επίθεσης καταλήγουν στην αποστολή συγκεκριμένων αιτημάτων στον διακομιστή, οδηγώντας στη δημιουργία μεγάλου αριθμού απαντήσεων. Εάν ο πελάτης δεν διαβάζει δεδομένα από την υποδοχή και δεν κλείσει τη σύνδεση, η ουρά προσωρινής αποθήκευσης απόκρισης στην πλευρά του διακομιστή γεμίζει συνεχώς. Αυτή η συμπεριφορά δημιουργεί ένα φορτίο στο σύστημα διαχείρισης ουράς για την επεξεργασία των συνδέσεων δικτύου και, ανάλογα με τις δυνατότητες υλοποίησης, οδηγεί στην εξάντληση της διαθέσιμης μνήμης ή πόρων της CPU.

Εντοπίστηκαν τρωτά σημεία:

  • CVE-2019-9511 (Data Dribble) - ένας εισβολέας ζητά μεγάλο όγκο δεδομένων σε πολλαπλά νήματα, χειραγωγώντας το μέγεθος του συρόμενου παραθύρου και την προτεραιότητα νήματος, αναγκάζοντας τον διακομιστή να βάλει τα δεδομένα σε ουρά σε μπλοκ 1 byte.
  • CVE-2019-9512 (Ping Flood) - ένας εισβολέας δηλητηριάζει συνεχώς τα μηνύματα ping μέσω μιας σύνδεσης HTTP/2, προκαλώντας την εσωτερική ουρά των απεσταλμένων απαντήσεων να πλημμυρίσει από την άλλη πλευρά.
  • CVE-2019-9513 (Βρόχος πόρων) - ένας εισβολέας δημιουργεί πολλαπλά νήματα αιτημάτων και αλλάζει συνεχώς την προτεραιότητα των νημάτων, προκαλώντας ανακάτεμα του δέντρου προτεραιότητας.
  • CVE-2019-9514 (Επαναφορά πλημμύρας) - ένας εισβολέας δημιουργεί πολλαπλά νήματα
    και στέλνει ένα μη έγκυρο αίτημα μέσω κάθε νήματος, με αποτέλεσμα ο διακομιστής να στέλνει πλαίσια RST_STREAM, αλλά δεν τα δέχεται για να γεμίσει την ουρά απόκρισης.

  • CVE-2019-9515 (Ρυθμίσεις πλημμύρας) - ο εισβολέας στέλνει μια ροή κενών πλαισίων "SETTINGS", σε απάντηση στα οποία ο διακομιστής πρέπει να επιβεβαιώσει τη λήψη κάθε αιτήματος.
  • CVE-2019-9516 (Διαρροή κεφαλίδων 0-μήκους) – ένας εισβολέας στέλνει μια ροή κεφαλίδων με ένα μηδενικό όνομα και μια τιμή null και ο διακομιστής εκχωρεί ένα buffer στη μνήμη για την αποθήκευση κάθε κεφαλίδας και δεν την αποδεσμεύει μέχρι να τελειώσει η περίοδος λειτουργίας ;
  • CVE-2019-9517 (Εσωτερική προσωρινή αποθήκευση δεδομένων) - ανοίγει ο εισβολέας
    Το συρόμενο παράθυρο HTTP/2 για τον διακομιστή να στέλνει δεδομένα χωρίς περιορισμούς, αλλά διατηρεί το παράθυρο TCP κλειστό, αποτρέποντας την πραγματική εγγραφή δεδομένων στην υποδοχή. Στη συνέχεια, ο εισβολέας στέλνει αιτήματα που απαιτούν μεγάλη απόκριση.

  • CVE-2019-9518 (Empty Frames Flood) - Ένας εισβολέας στέλνει μια ροή πλαισίων τύπου DATA, HEADERS, CONTINUATION ή PUSH_PROMISE, αλλά με κενό ωφέλιμο φορτίο και χωρίς σημαία τερματισμού ροής. Ο διακομιστής ξοδεύει χρόνο για την επεξεργασία κάθε καρέ, δυσανάλογο με το εύρος ζώνης που καταναλώνει ο εισβολέας.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο