घोस्ट वल्नरेबिलिटी - CVE-2015-0235


13

क्या भूत वल्नरेबिलिटी को प्रश्न में प्रभावित ओएस में एक्सेस (उपयोगकर्ता में लॉग इन होने के रूप में) की आवश्यकता होती है? क्या कोई attack रिमोट हमलावर जो एक एप्लिकेशन कॉल करने में सक्षम है ’को स्पष्ट कर सकता है? मैं केवल स्थानीय सिस्टम पर सीधे चलाने के लिए परीक्षण खोजने लगता हूं, लेकिन दूरस्थ होस्ट से नहीं।

सभी सूचनाएँ जो मैंने अब तक कई स्रोतों से घोस्ट वल्नरेबिलिटी (उन स्रोतों के लिए क्रेडिट) के बारे में इकट्ठा की हैं, जो किसी अन्य के उत्सुक होने पर मैंने उत्तर में नीचे पोस्ट किया है।

संपादित करें, मुझे अपना उत्तर मिला :

एक कोड ऑडिट के दौरान क्वालिस शोधकर्ताओं ने glibc के __nss_hostname_digits_dots () फ़ंक्शन में एक बफर अतिप्रवाह की खोज की। यह बग स्थानीय रूप से और दूरस्थ रूप से सभी gethostbyname * () फ़ंक्शन के माध्यम से चालू किया जा सकता है। अनुप्रयोग मुख्य रूप से gethostbyname * () कार्यों के सेट के माध्यम से DNS रिज़ॉल्वर तक पहुंचते हैं। ये फ़ंक्शन होस्टनाम को IP पते में परिवर्तित करते हैं।


शायद सुरक्षा SE साइट में कुछ लिंक जोड़ें, जैसे कि security.stackexchange.com/q/80210/1341 और अन्य पोस्ट भी?
मैटबियनको

मुरू, मैंने सामग्री को एक उत्तर में स्थानांतरित कर दिया। सलाह के लिये धन्यवाद। MattBianco, मैंने उस लिंक को भी जोड़ा, धन्यवाद।
devnull

मैंने किसी भी अस्पष्टता को दूर करने के लिए प्रश्न को अद्यतन किया।
देवनुल २ dev

जवाबों:


20

मेरे प्रश्न का उत्तर, क्वालिस से :

हमारे परीक्षण के दौरान, हमने एक प्रूफ-ऑफ-कॉन्सेप्ट विकसित किया, जिसमें हम एक मेल सर्वर को विशेष रूप से निर्मित ई-मेल भेजते हैं और लिनक्स मशीन को एक रिमोट शेल प्राप्त कर सकते हैं। यह 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

स्रोत (और अधिक जानकारी):

  1. https://access.redhat.com/articles/1332213
  2. http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux/
  3. http://www.openwall.com/lists/oss-security/2015/01/27/9
  4. /security/80210/ghost-bug-is-there-a-simple-way-to-test-if-my-system-is-secure
  5. http://bobcares.com/blog/ghost-hunting-resolving-glibc-remote-code-execution-vulnerability-cve-2015-0235-in-centos-red-hat-ubuntu-debian-and-suse-linux- सर्वर
  6. https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability
  7. https://security-tracker.debian.org/tracker/CVE-2015-0235

1
नाइटपिक: भेद्यता परीक्षण कोड क्वालिस से है, ओपनवॉल से नहीं। से जुड़ा ओपनवॉल पोस्ट केवल क्वालिस एडवाइज़री है जो उनकी मेलिंग सूची में पोस्ट किया गया है।
मुरू

"ग्लिबक पर निर्भर अनुप्रयोगों / सिस्टम उपयोगिताओं की बड़ी संख्या के कारण" -> आप उस सामान को बाहर ले जा सकते हैं या इस तथ्य पर जोर दे सकते हैं कि 100% बिल्कुल सब कुछ सीधे तौर पर libc पर निर्भर करता है सिवाय बहुत ही विषम चीजों के, जिन्हें संकलित किया गया है एक विशाल स्थिर गांठ। BTW के लिए यह धन्यवाद!
गोल्डीलॉक्स

@goldilocks, सुझाव के लिए धन्यवाद। मैंने इसे कुछ अन्य चीजों के साथ संपादित किया। खुशी है कि यह मदद करता है!
devnull
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.