Γεια σας, πριν λίγες μέρεςLinuxΑνακαλύφθηκε μια ευπάθεια υπερχείλισης buffer στη συνάρτηση gethostbyname της τυπικής βιβλιοθήκης GNU glibc και ο αριθμός ευπάθειας είναι CVE-2015-0235. Οι χάκερ μπορούν να χρησιμοποιήσουν τη σειρά λειτουργιών gethostbyname για να εκτελέσουν απομακρυσμένο κώδικα και να τον αποκτήσουνΔιακομιστήςΑυτή η ευπάθεια έχει πολλές διαδρομές ενεργοποίησης και μεγάλο εύρος επιπτώσεων, δώστε προσοχή και διορθώστε την προσωρινά εγκαίρως και θα την ενημερώσουμε το συντομότερο δυνατόΚατοπτρισμόςΔιορθώστε. Παρακαλώ να ξέρετε.
1. Ημερομηνία κυκλοφορίας ευπάθειας
201527 Ιανουαρίου, 2019
2. Λογισμικό και συστήματα που έχουν επιβεβαιωθεί ότι χρησιμοποιούνται με επιτυχία
Glibc 2.2Έως 2.17 (περιλαμβάνει τις εκδόσεις 2.2 και 2.17)
3. Περιγραφή των τρωτών σημείων
GNU glibcΜια ευπάθεια υπερχείλισης buffer εκτέθηκε στη συνάρτηση gethostbyname της τυπικής βιβλιοθήκης και ο αριθμός ευπάθειας είναι CVE-2015-0235. Το Glibc είναι μια βιβλιοθήκη C που παρέχει κλήσεις συστήματος και βασικές λειτουργίες, όπως open, malloc, printf κ.λπ. Όλα τα δυναμικά συνδεδεμένα προγράμματα χρησιμοποιούν το Glibc. Ένας απομακρυσμένος εισβολέας θα μπορούσε να εκμεταλλευτεί αυτήν την ευπάθεια για να εκτελέσει αυθαίρετο κώδικα και να κλιμακώσει τα δικαιώματα του χρήστη που εκτελεί την εφαρμογή.
4. Μέθοδοι ανίχνευσης ευπάθειας
Ακολουθήστε τις οδηγίεςΛειτουργίαΜπορώ. #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define ΚΑΝΑΡΊΝΙ"in_the_coal_mine" δομή { ρυθμιστικό διάλυμα char[1024]; κάρβουνο καναρίνι[μέγεθοςτου(ΚΑΝΑΡΙ)]; } temp = { "buffer", CANARY }; int main(void) { δομή hostent resbuf? struct hostent *αποτέλεσμα; int herrno; int retval; /*** strlen (όνομα) = size_needed -sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/ size_t len = sizeof(temp.buffer) -16*sizeof(unsigned char) - 2*sizeof(char *) - 1; όνομα char[sizeof(temp.buffer)]; memset(όνομα, '0', len); όνομα[len] = '\0'; retval = gethostbyname_r(όνομα,&resbuf, temp.buffer, sizeof(temp.buffer), &αποτέλεσμα, &herrno); αν (strcmp(temp.canary, CANARY) !=0) { puts("ευάλωτο"); έξοδος(EXIT_SUCCESS); } αν (retval == ERANGE) { βάζει("μη ευάλωτο"); έξοδος(EXIT_SUCCESS); } βάζει("δεν πρέπει να συμβεί"); έξοδος(EXIT_FAILURE);
}
Αποθήκευση ως GHOST.c Εκτελέστε το gcc GHOST.c -o GHOST
$./ΦΆΝΤΑΣΜΑ Ευάλωτη Αντιπροσωπεύει μια επιτυχημένη επισκευή.
5. Προτείνετε σχέδια επισκευής
Ειδική σημείωση: Δεδομένου ότι το glibc είναι ένα βασικό στοιχείο του συστήματος Linux, για να αποφύγετε τον αντίκτυπο της ενημέρωσης κώδικα στον διακομιστή σας, συνιστάται να επιλέξετε την κατάλληλη στιγμή για επισκευή και να βεβαιωθείτε ότι έχετε δημιουργήσει αντίγραφα ασφαλείας μέσω της λειτουργίας στιγμιότυπου πριν από την επισκευή.
Centos 5/6/7:
yum ενημέρωση glibc
Ubuntu 12/14
apt-get ενημέρωση
apt-get εγκαταστήστε το libc6
Το Debian 6
wget -O /etc/apt/sources.list.d/debian6-lts.listhttp://mirrors.aliyun.com/repo/debian6-lts.list apt-get ενημέρωση apt-get εγκαταστήστε το libc6
Το Debian 7
apt-get ενημέρωση
apt-get εγκαταστήστε το libc6
Opensuse 13
Ανανέωση zypper
zypper ενημέρωση glibc*
Aliyun linux 5u7
wget -O /etc/yum.repos.d/aliyun-5.repohttp://mirrors.aliyun.com/repo/aliyun-5.repo yum ενημέρωση glibc
|