Categories: Security

CVE-2015-0235 – How to secure against Glibc Ghost Vulnerability

CVE-2015-0235 Ghost (glibc gethostbyname buffer overflow) Vulnerability is serious cause for all Linux servers. This vulnerability leveraged to execute remote and  code execution on the victim Linux server. The vulnerability found By Qualys Researcher and patched in GNU.

 

What is the cause ?

The bug is in __nss_hostname_digits_dots() function of function of the GNU C Library (glibc), and location of the path is file for  non-reentrant version is nss/getXXbyYY.c , which is used by the gethostbyname().  The vulnerability can be exploited both via locally and remotely.  In order to trigger this vulnerability attacker needs to be able to feed specially crafted ‘host name’ to the service. And service needs to process it without validating it first.

 

Following are the potentially exploitable services

  1. procmail
  2. Exim
  3. pppd
  4. clockdiff

 

You can find the list of services which are rely on the GNU C libraries by executing following command
lsof | grep libc | awk ‘{print $1}’ | sort | uni

Fix for Centos/RHEL/Fedora 5,6,7

yum update glibc
sudo restart

Fix for Ubuntu

sudo apt-get update
sudo apt-get dist-upgrade
sudo restart

For Quick test , you can run this code



/* 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);
}

Vishwajit Kale
Vishwajit Kale blazed onto the digital marketing scene back in 2015 and is the digital marketing strategist of Hostripples, a company that aims to provide affordable web hosting solutions. Vishwajit is experienced in digital and content marketing along with SEO. He's fond of writing technology blogs, traveling and reading.

Recent Posts

WP-Content Uploads Folder Explained (With Step-by-Step Upload Methods)

The wp-content/uploads folder is the core storage location for media files in WordPress. Every image, PDF, video, or document uploaded…

1 week ago

WordPress User Roles Explained: A Complete Guide to Permissions

Managing access correctly is one of the most important aspects of running a secure and scalable WordPress website. Managing access…

2 weeks ago

How to Get More Customer Reviews That Build Trust and Sales?

Customer reviews have become one of the most influential factors in modern buying decisions. Before choosing a product, service, or…

3 weeks ago

Why Micro-Influencers Matter: How Small Creators Drive Higher Engagement and ROI

In today’s digital landscape, consumers trust people more than brands. Traditional ads are often ignored, celebrity endorsements feel scripted, and…

1 month ago

2026 SEO Roadmap: Skills Every Digital Marketer Must Have

Introduction: SEO in 2026 Is No Longer Optional—It’s Strategic Search Engine Optimization in 2026 has evolved far beyond keywords and…

1 month ago