मेरे प्रश्न का उत्तर, क्वालिस से :
हमारे परीक्षण के दौरान, हमने एक प्रूफ-ऑफ-कॉन्सेप्ट विकसित किया, जिसमें हम एक मेल सर्वर को विशेष रूप से निर्मित ई-मेल भेजते हैं और लिनक्स मशीन को एक रिमोट शेल प्राप्त कर सकते हैं। यह 32-बिट और 64-बिट सिस्टम दोनों पर सभी मौजूदा सुरक्षा (जैसे एएसएलआर, पीआईई और एनएक्स) को बायपास करता है ।
किसी और की तलाश में नीचे मेरा संकलित शोध:
अस्वीकरण
बहुत सारे अन्य धागे / ब्लॉग आपको क्या बता सकते हैं, इसके बावजूद, मेरा सुझाव है कि इन अपडेट्स को पूरी तरह से परखने के बिना आपके द्वारा आँख बंद करके किए गए हर एक ओएस को तुरंत अपडेट नglibc
करें। यह बताया गया है कि glibc अपडेट ने बड़े पैमाने पर एप्लिकेशन सेगफुल्स के कारण लोगों को अपने पिछले संस्करण में अपने glibc अपडेट को वापस रोल करने के लिए मजबूर किया है।
एक परीक्षण के बिना उत्पादन वातावरण को केवल बड़े पैमाने पर अद्यतन नहीं करता है।
पृष्ठभूमि की जानकारी
GHOST एक 'बफर ओवरफ्लो' बग है, जो ग्लोबेक लाइब्रेरी में gethostbyname () और gethostbyname2 () फ़ंक्शन कॉल को प्रभावित करता है। यह भेद्यता एक दूरस्थ हमलावर को अनुमति देती है जो एप्लिकेशन चलाने वाले उपयोगकर्ता की अनुमति के साथ मनमाने कोड को निष्पादित करने के लिए इन कार्यों में से किसी एक को कॉल करने में सक्षम है।
प्रभाव
Gethostbyname () फंक्शन कॉल का उपयोग DNS रिज़ॉल्यूशन के लिए किया जाता है, जो एक बहुत ही सामान्य घटना है। इस भेद्यता का फायदा उठाने के लिए, हमलावर को DNS रिज़ॉल्यूशन करने वाले एप्लिकेशन को अमान्य होस्टनाम तर्क की आपूर्ति करके बफर ओवरफ़्लो को ट्रिगर करना होगा।
प्रभावित लिनक्स डिस्ट्रो की वर्तमान सूची
RHEL (Red Hat Enterprise Linux) संस्करण 5.x, 6.x और 7.x
RHEL 4 ELS fix available ---> glibc-2.3.4-2.57.el4.2
Desktop (v. 5) fix available ---> glibc-2.5-123.el5_11.1
Desktop (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
Desktop (v. 7) fix available ---> glibc-2.17-55.el7_0.5
HPC Node (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
HPC Node (v. 7) fix available ---> glibc-2.17-55.el7_0.5
Server (v. 5) fix available ---> glibc-2.5-123.el5_11.1
Server (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
Server (v. 7) fix available ---> glibc-2.17-55.el7_0.5
Server EUS (v. 6.6.z) fix available ---> glibc-2.12-1.149.el6_6.5
Workstation (v. 6) fix available ---> glibc-2.12-1.149.el6_6.5
Workstation (v. 7) fix available ---> glibc-2.17-55.el7_0.5
CentOS लिनक्स संस्करण 5.x, 6.x और 7.x
CentOS-5 fix available ---> glibc-2.5-123.el5_11
CentOS-6 fix available ---> glibc-2.12-1.149.el6_6.5
CentOS-7 fix available ---> glibc-2.17-55.el7_0.5
उबंटू लिनक्स संस्करण 10.04, 12.04 एलटीएस
10.04 LTS fix available ---> libc6-2.11.1-0ubuntu7.20
12.04 LTS fix available ---> libc6-2.15-0ubuntu10.10
डेबियन लिनक्स संस्करण 6.x, 7.x
6.x squeeze vulnerable
6.x squeeze (LTS) fix available ---> eglibc-2.11.3-4+deb6u4
7.x wheezy vulnerable
7.x wheezy (security) fix available ---> glib-2.13-38+deb7u7
लिनक्स मिंट संस्करण 13.0
Mint 13 fix available ---> libc6-2.15-0ubuntu10.10
फेडोरा लिनक्स संस्करण 19 (या पुराने को अपग्रेड करना चाहिए)
Fedora 19 - vulnerable - EOL on Jan 6, 2014 (upgrade to Fedora 20/21 for patch)
SUSE लाइनेक्स एंटरप्राइज
Server 10 SP4 LTSS for x86 fix available ---> glibc-2.4-31.113.3
Server 10 SP4 LTSS for AMD64 and Intel EM64T fix available ---> glibc-2.4-31.113.3
Server 10 SP4 LTSS for IBM zSeries 64bit fix available ---> glibc-2.4-31.113.3
Software Development Kit 11 SP3 fix available ---> glibc-2.11.3-17.74.13
Server 11 SP1 LTSS fix available ---> glibc-2.11.1-0.60.1
Server 11 SP2 LTSS fix available ---> glibc-2.11.3-17.45.55.5
Server 11 SP3 (VMware) fix available ---> glibc-2.11.3-17.74.13
Server 11 SP3 fix available ---> glibc-2.11.3-17.74.13
Desktop 11 SP3 fix available ---> glibc-2.11.3-17.74.13
OpenSUSE (11 वर्ष से अधिक पुराने संस्करणों को अपग्रेड करना चाहिए)
11.4 Evergreen fix available ---> glibc-2.11.3-12.66.1
12.3 fix available ---> glibc-2.17-4.17.1
अभी भी हटाए गए ग्लिबक का उपयोग क्या पैकेज / अनुप्रयोग कर रहे हैं?
( गाइल्स को क्रेडिट )
CentOS / RHEL / फेडोरा / वैज्ञानिक लिनक्स के लिए:
lsof -o / | awk '
BEGIN {
while (("rpm -ql glibc | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
Ubuntu / डेबियन लिनक्स के लिए:
lsof -o / | awk '
BEGIN {
while (("dpkg -L libc6:amd64 | grep \\\\.so\\$" | getline) > 0)
libs[$0] = 1
}
$4 == "DEL" && $8 in libs {print $1, $2}'
मेरे लिनक्स सिस्टम का उपयोग सी लाइब्रेरी (ग्लिबक) संस्करण क्या करता है?
संस्करण संख्या की जांच करने का सबसे आसान तरीका निम्नलिखित कमांड चलाना है:
ldd --version
RHEL / CentOS Linux v6.6 से नमूना आउटपुट:
ldd (GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
उबंटू लिनक्स से नमूना आउटपुट 12.04.5 LTS:
ldd (Ubuntu EGLIBC 2.15-0ubuntu10.9) 2.15
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
डेबियन लिनक्स v7.8 से नमूना आउटपुट:
ldd (Debian EGLIBC 2.13-38+deb7u6) 2.13
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
GHOST भेद्यता जाँच
शिकागो विश्वविद्यालय आसान डाउनलोडिंग के लिए नीचे स्क्रिप्ट की मेजबानी कर रहा है:
$ wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
[OR]
$ curl -O https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
$ gcc GHOST.c -o GHOST
$ ./GHOST
[responds vulnerable OR not vulnerable ]
/* ghosttest.c: GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define CANARY "in_the_coal_mine"
struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;
/*** strlen (name) = 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 name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}
इस प्रकार संकलित करें और चलाएं:
$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]
Red Hat Access Lab: GHOST टूल इस उपकरण का उपयोग नहीं करते हैं, इसकी रिपोर्टिंग गलत है, क्वालिस से भेद्यता परीक्षक सही है।
पैच
CentOS / आरएचईएल / फेडोरा / वैज्ञानिक लिनक्स
sudo yum clean all
sudo yum update
अब प्रभावित करने के लिए पुनः आरंभ करें:
sudo reboot
वैकल्पिक रूप से, यदि आपके दर्पण में नवीनतम पैकेज नहीं हैं, तो बस उन्हें मैन्युअल रूप से डाउनलोड करें। * नोट: अधिक उन्नत उपयोगकर्ताओं के लिए
सेंटोस 5
http://mirror.centos.org/centos/5.11/updates/x86_64/RPMS/
सेंटोस 6
mkdir ~/ghostupdate
cd ~/ghostupdate
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-devel-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-common-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/nscd-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-static-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-headers-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-utils-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-static-2.12-1.149.el6_6.5.i686.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-devel-2.12-1.149.el6_6.5.i686.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-2.12-1.149.el6_6.5.i686.rpm
yum localupdate *.rpm [OR] rpm -Uvh *.rpm
उबंटू / डेबियन लिनक्स
sudo apt-get clean
sudo apt-get update
sudo apt-get dist-upgrade
पुनर्प्रारंभ करें:
sudo reboot
SUSE लाइनेक्स एंटरप्राइज
इस SUSE सुरक्षा अद्यतन को स्थापित करने के लिए YaST online_update का उपयोग करें। या अपने संस्करण के अनुसार निम्नलिखित कमांड का उपयोग करें:
SUSE लाइनेक्स एंटरप्राइज सॉफ्टवेयर डेवलपमेंट किट 11 SP3
zypper in -t patch sdksp3-glibc-10206
VMware के लिए SUSE लाइनेक्स एंटरप्राइज सर्वर 11 SP3
zypper in -t patch slessp3-glibc-10206
SUSE लाइनेक्स एंटरप्राइज़ सर्वर 11 SP3
zypper in -t patch slessp3-glibc-10206
SUSE लाइनेक्स एंटरप्राइज सर्वर 11 SP2 LTSS
zypper in -t patch slessp2-glibc-10204
SUSE लाइनेक्स एंटरप्राइज सर्वर 11 SP1 LTSS
zypper in -t patch slessp1-glibc-10202
SUSE लाइनेक्स एंटरप्राइज डेस्कटॉप 11 SP3
zypper in -t patch sledsp3-glibc-10206
अंत में अपने सिस्टम को अप-टू-डेट लाने के लिए सभी SUSE लिनक्स संस्करण के लिए दौड़ें:
zypper patch
OpenSUSE लिनक्स
किसी खुले Linux पर glibc सहित उपलब्ध अद्यतनों की सूची देखने के लिए, दर्ज करें:
zypper lu
बस अपने नए उपलब्ध संस्करणों के साथ स्थापित glibc संकुल को अद्यतन करने के लिए, चलाएँ:
zypper up
आपकी मशीन पर चलने वाले लगभग हर प्रोग्राम में ग्लिबैक का इस्तेमाल होता है। पैच को प्रभावी बनाने के लिए आपको हर सेवा या ऐप को पुनः आरंभ करने की आवश्यकता है जो glibc का उपयोग करता है। इसलिए, एक रिबूट की सिफारिश की जाती है।
सिस्टम को पुनरारंभ या प्रभावित किए बिना init कैसे पुनरारंभ करें?
telinit u
'आदमी टेलिनिट' - यू या यू से अनुरोध है कि इनिट (8) डेमन खुद को फिर से निष्पादित करें। यह अनुशंसित नहीं है क्योंकि उपस्टार्ट वर्तमान में अपने राज्य की पूर्व-सेवा करने में असमर्थ है, लेकिन सिस्टम लाइब्रेरी को अपग्रेड करते समय आवश्यक है।
सीमित तरीके से खतरे को कम करने के लिए अपने सभी सार्वजनिक सामना करने वाली सेवाओं में रिवर्स DNS चेक को अक्षम करना है। उदाहरण के लिए, आप एसएसएच में रिवर्स डीएनएस चेक UseDNS
को no
अपनी सेटिंग में अक्षम कर सकते हैं /etc/ssh/sshd_config
।
स्रोत (और अधिक जानकारी):
- https://access.redhat.com/articles/1332213
- http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux/
- http://www.openwall.com/lists/oss-security/2015/01/27/9
- /security/80210/ghost-bug-is-there-a-simple-way-to-test-if-my-system-is-secure
- http://bobcares.com/blog/ghost-hunting-resolving-glibc-remote-code-execution-vulnerability-cve-2015-0235-in-centos-red-hat-ubuntu-debian-and-suse-linux- सर्वर
- https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
- https://security-tracker.debian.org/tracker/CVE-2015-0235