[ advisories | exploits | discussions | news | conventions | security tools | texts & papers ]
 main menu
- feedback
- advertising
- privacy
- FightAIDS
- newsletter
- news
- read forum
- new topic
- search

- meetings list
- recent additions
- add your info
 top 100 sites
- visit top sites
- sign up now
- members

- add your url
- add domain
- search box
- link to us

- our projects
- free email
 m4d network
- security software
- secureroot
- m4d.com
Home : Advisories : Vulnerabilities in bash

Title: Vulnerabilities in bash
Released by: CERT
Date: 8th October 1996
Printable version: Click here

Hash: SHA1


CERT(*) Advisory CA-96.22

Original issue date: October 8, 1996

Last Revised: September 24, 1997

              Updated copyright statement

              A complete revision history is at the end of this file.

Topic: Vulnerabilities in bash

- ------------------------------------------------------------------------------

                The original technical content for this advisory

                was published by the IBM-ERS response team and

                is used here with their permission.

This advisory describes two problems with the GNU Project's Bourne Again

SHell (bash): one in yy_string_get() and one in yy_readline_get().

The vulnerability in yy_string_get() allows the character with value 255

decimal to be used as a command separator. When used in environments where

users provide strings to be used as commands or arguments to commands, bash

can be tricked into executing arbitrary commands.

When the advisory was first published, was not clear whether the problem with

yy_readline_get() resulted in an exploitable vulnerability. As of November

1996, it appears that the problem is not exploitable in yy_readline_get.

The problems affect bash versions 1.14.6 and earlier.

The CERT/CC team recommends that you upgrade to bash 1.14.7 as soon as

possible, as discussed in Section III.A below. Section III.B contains a

patch for 1.14.7, which we recommend using to address the yy_readline_get()


We will update this advisory as we receive additional information.

Please check advisory files regularly for updates that relate to your site.

- ----------------------------------------------------------------------------

I. Description

   A. Introduction

      The GNU Project's Bourne Again SHell (bash) is a drop-in replacement

      for the UNIX Bourne shell (/bin/sh). It offers the same syntax as the

      standard shell, and it also includes additional functionality such as

      job control, command line editing, and history.

      Although bash can be compiled and installed on almost any UNIX

      platform, its most prevalent use is on "free" versions of UNIX such as

      Linux, where it has been installed as "/bin/sh" (the default shell for

      most uses).

      The bash source code is freely available from many sites on the


   B. Vulnerability Details

      1. Vulnerability in yy_string_get()

         There is a variable declaration error in the "yy_string_get()"

         function in the "parse.y" module of the "bash" source code. This

         function is responsible for parsing the user-provided command line

         into separate tokens (commands, special characters, arguments, etc.).

         The error involves the variable "string", which has been declared to

         be of type "char *".

         The "string" variable is used to traverse the character string

         containing the command line to be parsed. As characters are

         retrieved from this pointer, they are stored in a variable of type

         "int". On systems/compilers where the "char" type defaults to

         "signed char" this value will be sign-extended when it is assigned

         to the  "int" variable. For character code 255 decimal (-1 in two's

         complement form), this sign extension results in the value (-1)

         being assigned to the integer.

         However, (-1) is used in other parts of the parser to indicate the

         end of a command. Thus, the character code 255 decimal (377 octal)

         will serve as an unintended command separator for commands given to

         bash via the "-c" option. For example,

         bash -c 'ls\377who'

         (where "\377" represents the single character with value 255 decimal)

         will execute two commands, "ls" and "who".

    Note about yy_readline_get()

         A similar problem exists with the "yy_readline_get()" function, which

         is also in the file "parse.y" and which is used to read commands in

         interactive shells (ones that print a prompt and read from the

         keyboard, a shell script, or a pipe).

         However, it appears that this problem does not produce an exploitable


II.  Impact

     This unexpected command separator can be dangerous, especially on systems

     such as Linux where bash has been installed as "/bin/sh," when a program

     executes a command with a string provided by a user as an argument using

     the "system()" or "popen()" functions (or by calling "/bin/sh -c string"


     This is especially true for the CGI programming interface in World Wide

     Web servers, many of which do not strip out characters with value 255

     decimal. If a user sending data to the server can specify the character

     code 255 in a string that is passed to a shell, and that shell is bash,

     the user can execute any arbitrary command with the user-id and

     permissions of the user running the server (frequently "root").

     The bash built-in commands "eval," "source," and "fc" are also

     potentially vulnerable to this problem.

III. Solution

     Install the most current version of bash. On 27 August 1996, Version

     1.14.7 of bash was released;  It is available from


     This version addresses the vulnerability in yy_string_get.

     When this advisory was first released, we included a patch for

     yy_readline_get. It now appears that the patch is unnecessary as the

     problem is not exploitable in yy_readline_get. Upgrading to the current

     version of bash is sufficient.


Appendix A

The following is vendor-supplied information.

For the most up-to-date information, contact your vendor.

IBM Corporation


AIX does not ship with the bash shell.

IBM and AIX are registered trademarks of International

Business Machines Corporation.

Silicon Graphics, Inc.


SGI has distributed bash (version 1.14.6) as part of the Freeware 1.0

CDROM.  This collection of software has been compiled for IRIX as a

service to our customers, but is furnished without formal SGI support.

The problem identified by IBM in bash is present in the version of bash

on the Freeware 1.0 CDROM.  This CDROM included both the source code

for bash an compiled versions of it.

SGI urges customers to recompile bash after making the changes in

parse.y suggested by IBM.

As a service similar to that of the original Freeware 1.0 CDROM, SGI

intends to make available a compiled version of bash and its source in

the near future.  This action does not necessarily imply a commitment to any

future support actions for the programs found on the Freeware 1.0




Patches for the following Linux versions are available.

SuSE 4.2


Red Hat 3.0.3



        Patched bash source and binary tar files are now  FTPable from


WGS Linux Pro


Caldera - Have built the new bash-1.14.7 code from prep.ai.mit.edu

        -/pub/gnu. Tested only insofar as to ascertain that the security bug

        is fixed.  Binary and source RPMs live in ftp -



- ----------------------------------------------------------------------------

The CERT Coordination Center thanks IBM-ERS for permission to reproduce the

technical content in their IBM Emergency Response Service Security

Vulnerability Alerts ERS-SVA-E01-1006:004.1 and ERS-SVA-E01-1006:004.2.

These alerts are copyrighted 1996 International Business Machines Corporation.

- ----------------------------------------------------------------------------

If you believe that your system has been compromised, contact the CERT

Coordination Center or your representative in the Forum of Incident Response

and Security Teams (see http://info.cert.org/pub/FIRST/first-contacts).

CERT/CC Contact Information

- ---------------------------

Email    cert@cert.org

Phone    +1 412-268-7090 (24-hour hotline)

                CERT personnel answer 8:30-5:00 p.m. EST(GMT-5) / EDT(GMT-4)

                and are on call for emergencies during other hours.

Fax      +1 412-268-6989

Postal address

         CERT Coordination Center

         Software Engineering Institute

         Carnegie Mellon University

         Pittsburgh PA 15213-3890


Using encryption

   We strongly urge you to encrypt sensitive information sent by email. We can

   support a shared DES key or PGP. Contact the CERT/CC for more information.

   Location of CERT PGP key


Getting security information

   CERT publications and other security information are available from



   CERT advisories and bulletins are also posted on the USENET newsgroup


   To be added to our mailing list for advisories and bulletins, send your

   email address to


- ------------------------------------------------------------------------------

Copyright 1996 Carnegie Mellon University. Conditions for use, disclaimers,

and sponsorship information can be found in

http://www.cert.org/legal_stuff.html and http://ftp.cert.org/pub/legal_stuff .

If you do not have FTP or web access, send mail to cert@cert.org with

"copyright" in the subject line.

CERT is registered in the U.S. Patent and Trademark Office.

- -----------------------------------------------------------------------------

This file: http://info.cert.org/pub/cert_advisories/CA-96.22.bash_vuls


               click on "CERT Advisories"


Revision history

Sep.24, 1997  Updated copyright statement

Nov. 13, 1996   Noted that yy_readline_get does not require the patch included

                in the original advisory. Removed the patch from Sec. III.

Oct. 14, 1996   Added Appendix A - vendor information.


Version: PGP for Personal Privacy 5.0

Charset: noconv





(C) 1999-2000 All rights reserved.