Bash Code Injection Vulnerability via Specially Crafted Environment Variables

Bash Code Injection Vulnerability via Specially Crafted Environment Variables (CVE-2014-6271 (aka Shellshock ), CVE-2014-7169). This is one the most vulnerable bug we have seen in Linux at current time. Due to this bug, we are seeing lots of business impact in entire world.

Details of CVE-2014-6271

A flaw was found in the way Bash evaluated certain specially crafted environment variables. An attacker could use this flaw to override or bypass environment restrictions to execute shell commands. Certain services and applications allow remote unauthenticated attackers to provide environment variables, allowing them to exploit this issue.

Details of CVE-2014-7169

It was found that the fix for CVE-2014-6271 was incomplete, and Bash still allowed certain characters to be injected into other environments via specially crafted environment variables. An attacker could potentially use this flaw to override or bypass environment restrictions to execute shell commands. Certain services and applications allow remote unauthenticated attackers to provide environment variables, allowing them to exploit this issue.

How to Diagnose the flaw

Diagnostic command : 1

Use the following command

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

If the output of the above command contains a line containing only the word vulnerable you are using a vulnerable version of Bash.

See the below given screenshot
bash-bug-1

Diagnostic command : 2
Run the below command for bash vulnerability check.

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

The given below output suggested the system is vulnerable.
bash bug

Diagnostic Command : 3

Run the below command for further diagnosis.

cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>' bash -c "echo date"; cat /tmp/echo

In vulnerable system, date and time information will be output and /tmp/echo file will be created.

Recommended measures to fix bash vulnerability

Although the there is no permanent fix has been declared till the time of writing this post.
It is recommended to update or upgrade to new bash version. All the major distro and crucial repositories has already been updated with bash package with patch for this issue.

In RHEL 5,6,7 /CentOS 5,6,7 / Amazon Linux AMI
Use the below given command

# yum clean all
# yum update bash

OR 

# yum clean all
# yum upgrade bash

In Ubuntu 10.x/12.x/14.x
Use the below given command

sudo apt-get update && sudo apt-get install --upgrade-only bash

OR

sudo apt-get update && sudo apt-get install bash

Recheck with diagnostic command

As we have already written the diagnostic command. After updating/upgrading the bash in servers, re-run the diagnostic command.

We have also run the diagnostic command after updating/upgarding the bash and found below given satisfied result. The outputs are favourable.

Note: Output has been taken from two different servers. Respectively both screenshot belongs to each server.

shellshock

bash-bug-fix-2

How I installed in production server in which internet was not available

I will give some brief idea, how I worked in this case. We have CentOS and RHEL servers in network. Whereas I also use Virtual box for testing. With the help of yum’s downloadonly plugin, I downloaded the updated bash rpm and scp to server. Where I used the rpm -Uvh command to update the bash package in server.

Suggest you to read about How to download RPM by using yum with installing in system

If you are facing issue with downloading the package or updating/upgrading the bash package. Drop your comments, I will be very glad to help you on this regard.

IMPORTANT : SELINUX guru, Dan Walsh blog on “What does SELinux do to contain the the bash exploit?”

Reference :

https://access.redhat.com/security/cve/CVE-2014-7169
https://access.redhat.com/security/cve/CVE-2014-6271
https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/
http://lists.centos.org/pipermail/centos/2014-September/146099.html