Halo, beberapa hari yang laluLinuxKerentanan buffer overflow telah ditemukan dalam fungsi gethostbyname dari pustaka standar GNU glibc, dan nomor kerentanan adalah CVE-2015-0235. Peretas dapat menggunakan serangkaian fungsi gethostbyname untuk mengeksekusi kode jarak jauh dan mendapatkannyaserverKerentanan ini memiliki banyak jalur pemicu dan cakupan dampak yang besar, harap perhatikan dan perbaiki sementara tepat waktu, dan kami akan memperbaruinya sesegera mungkinPencerminanPerbaiki. Harap tahu.
1. Tanggal rilis kerentanan
2015Januari 27, 2019
2. Perangkat lunak dan sistem yang telah dikonfirmasi berhasil digunakan
Glibc 2.2Hingga 2.17 (termasuk versi 2.2 dan 2.17)
3. Deskripsi kerentanan
GNU glibcKerentanan buffer overflow diekspos dalam fungsi gethostbyname dari pustaka standar, dan nomor kerentanan adalah CVE-2015-0235. Glibc adalah library C yang menyediakan panggilan sistem dan fungsi dasar, seperti open, malloc, printf, dll. Semua program yang terhubung secara dinamis menggunakan Glibc. Penyerang jarak jauh dapat mengeksploitasi kerentanan ini untuk mengeksekusi kode arbitrer dan meningkatkan hak istimewa pengguna yang menjalankan aplikasi.
4. Metode deteksi kerentanan
Ikuti instruksinyaOperasiBisa. #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANARY"in_the_coal_mine" struct { penyangga char[1024]; kenari char[ukurandari(CANARY)]; } temp = { "buffer", CANARY }; int main(void) { strukturkan resbuf hostent; struct hostent *hasil; int herrno; int retval; /*** strlen (nama) = size_needed -ukurandari (*host_addr) - ukurandari (*h_addr_ptrs) - 1; ***/ size_t len = sizeof(temp.buffer) -16*sizeof(unsigned char) - 2*sizeof(char *) - 1; nama char[sizeof(temp.buffer)]; memset(nama, '0', len); name[len] = '\0'; retval = gethostbyname_r(nama,&resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); if (strcmp(temp.canary, CANARY) !=0) { puts("rentan"); keluar(EXIT_SUCCESS); } if (retval == ERANGE) { meletakkan("tidak rentan"); keluar(EXIT_SUCCESS); } puts("seharusnya tidak terjadi"); keluar(EXIT_FAILURE);
}
Simpan sebagai GHOST.c Jalankan gcc GHOST.c -o GHOST
$./GHOST tidak rentan Mewakili perbaikan yang berhasil.
5. Sarankan rencana perbaikan
Catatan Khusus: Karena glibc adalah komponen dasar dari sistem Linux, untuk menghindari dampak patching pada server Anda, disarankan agar Anda memilih waktu yang tepat untuk memperbaiki, dan pastikan untuk mencadangkan melalui operasi snapshot sebelum memperbaiki.
Centos 5/6/7:
yum update glibc
Ubuntu 12/14
apt-get update
apt-get install libc6
Debian 6
wget -O /etc/apt/sources.list.d/debian6-lts.listhttp://mirrors.aliyun.com/repo/debian6-lts.list apt-get update apt-get install libc6
Debian 7
apt-get update
apt-get install libc6
Buka 13
Penyegaran Zypper
Pembaruan Zypper Glibc*
Aliyun linux 5u7
wget -O /etc/yum.repos.d/aliyun-5.repohttp://mirrors.aliyun.com/repo/aliyun-5.repo yum update glibc
|