home *** CD-ROM | disk | FTP | other *** search
/ Chaos Computer Club 1997 February / cccd_beta_feb_97.iso / contrib / cert / ca9622 < prev    next >
PGP Signed Message  |  1997-02-28  |  11KB  |  271 lines

  1. -----BEGIN PGP SIGNED MESSAGE-----
  2.  
  3. =============================================================================
  4. CERT(sm) Advisory CA-96.22
  5. Original issue date: October 8, 1996
  6. Last revised: November 13, 1996
  7.               Noted that yy_readline_get does not require the patch included
  8.               in the original advisory. Removed the patch from Sec. III.
  9.  
  10.               A complete revision history is at the end of this file.
  11.  
  12. Topic: Vulnerabilities in bash
  13. - ------------------------------------------------------------------------------
  14.                 The original technical content for this advisory
  15.                 was published by the IBM-ERS response team and
  16.                 is used here with their permission.
  17.  
  18. This advisory describes two problems with the GNU Project's Bourne Again
  19. SHell (bash): one in yy_string_get() and one in yy_readline_get().
  20.  
  21. The vulnerability in yy_string_get() allows the character with value 255
  22. decimal to be used as a command separator. When used in environments where
  23. users provide strings to be used as commands or arguments to commands, bash
  24. can be tricked into executing arbitrary commands.
  25.  
  26. When the advisory was first published, was not clear whether the problem with
  27. yy_readline_get() resulted in an exploitable vulnerability. As of November
  28. 1996, it appears that the problem is not exploitable in yy_readline_get.
  29.  
  30. The problems affect bash versions 1.14.6 and earlier.
  31.  
  32. The CERT/CC team recommends that you upgrade to bash 1.14.7 as soon as
  33. possible, as discussed in Section III.A below. Section III.B contains a
  34. patch for 1.14.7, which we recommend using to address the yy_readline_get()
  35. problem.
  36.  
  37. We will update this advisory as we receive additional information.
  38. Please check advisory files regularly for updates that relate to your site.
  39.  
  40. - ----------------------------------------------------------------------------
  41.  
  42. I. Description
  43.  
  44.    A. Introduction
  45.  
  46.       The GNU Project's Bourne Again SHell (bash) is a drop-in replacement
  47.       for the UNIX Bourne shell (/bin/sh). It offers the same syntax as the
  48.       standard shell, and it also includes additional functionality such as
  49.       job control, command line editing, and history.
  50.  
  51.       Although bash can be compiled and installed on almost any UNIX
  52.       platform, its most prevalent use is on "free" versions of UNIX such as
  53.       Linux, where it has been installed as "/bin/sh" (the default shell for
  54.       most uses).
  55.  
  56.       The bash source code is freely available from many sites on the
  57.       Internet.
  58.  
  59.    B. Vulnerability Details
  60.  
  61.       1. Vulnerability in yy_string_get()
  62.  
  63.          There is a variable declaration error in the "yy_string_get()"
  64.          function in the "parse.y" module of the "bash" source code. This
  65.          function is responsible for parsing the user-provided command line
  66.          into separate tokens (commands, special characters, arguments, etc.).
  67.          The error involves the variable "string", which has been declared to
  68.          be of type "char *".
  69.  
  70.          The "string" variable is used to traverse the character string
  71.          containing the command line to be parsed. As characters are
  72.          retrieved from this pointer, they are stored in a variable of type
  73.          "int". On systems/compilers where the "char" type defaults to
  74.          "signed char" this value will be sign-extended when it is assigned
  75.          to the  "int" variable. For character code 255 decimal (-1 in two's
  76.          complement form), this sign extension results in the value (-1)
  77.          being assigned to the integer.
  78.  
  79.          However, (-1) is used in other parts of the parser to indicate the
  80.          end of a command. Thus, the character code 255 decimal (377 octal)
  81.          will serve as an unintended command separator for commands given to
  82.          bash via the "-c" option. For example,
  83.  
  84.          bash -c 'ls\377who'
  85.  
  86.          (where "\377" represents the single character with value 255 decimal)
  87.          will execute two commands, "ls" and "who".
  88.  
  89.     Note about yy_readline_get()
  90.          A similar problem exists with the "yy_readline_get()" function, which
  91.          is also in the file "parse.y" and which is used to read commands in
  92.          interactive shells (ones that print a prompt and read from the
  93.          keyboard, a shell script, or a pipe).
  94.  
  95.          However, it appears that this problem does not produce an exploitable
  96.          vulnerability.
  97.  
  98. II.  Impact
  99.  
  100.      This unexpected command separator can be dangerous, especially on systems
  101.      such as Linux where bash has been installed as "/bin/sh," when a program
  102.      executes a command with a string provided by a user as an argument using
  103.      the "system()" or "popen()" functions (or by calling "/bin/sh -c string"
  104.      directly).
  105.  
  106.      This is especially true for the CGI programming interface in World Wide
  107.      Web servers, many of which do not strip out characters with value 255
  108.      decimal. If a user sending data to the server can specify the character
  109.      code 255 in a string that is passed to a shell, and that shell is bash,
  110.      the user can execute any arbitrary command with the user-id and
  111.      permissions of the user running the server (frequently "root").
  112.  
  113.      The bash built-in commands "eval," "source," and "fc" are also
  114.      potentially vulnerable to this problem.
  115.  
  116. III. Solution
  117.  
  118.      Install the most current version of bash. On 27 August 1996, Version
  119.      1.14.7 of bash was released;  It is available from
  120.  
  121.         ftp://slc2.ins.cwru.edu/pub/dist/bash-1.14.7.tar.gz
  122.  
  123.      This version addresses the vulnerability in yy_string_get.
  124.        
  125.      When this advisory was first released, we included a patch for 
  126.      yy_readline_get. It now appears that the patch is unnecessary as the
  127.      problem is not exploitable in yy_readline_get. Upgrading to the current
  128.      version of bash is sufficient.  
  129.  
  130. ..............................................................................
  131. Appendix A
  132.  
  133. The following is vendor-supplied information.
  134. For the most up-to-date information, contact your vendor.
  135.  
  136. IBM Corporation
  137. ===============
  138. AIX does not ship with the bash shell.
  139.  
  140. IBM and AIX are registered trademarks of International
  141. Business Machines Corporation.
  142.  
  143.  
  144. Silicon Graphics, Inc.
  145. ======================
  146. SGI has distributed bash (version 1.14.6) as part of the Freeware 1.0
  147. CDROM.  This collection of software has been compiled for IRIX as a
  148. service to our customers, but is furnished without formal SGI support.
  149.  
  150. The problem identified by IBM in bash is present in the version of bash
  151. on the Freeware 1.0 CDROM.  This CDROM included both the source code
  152. for bash an compiled versions of it.
  153.  
  154. SGI urges customers to recompile bash after making the changes in
  155. parse.y suggested by IBM.
  156.  
  157. As a service similar to that of the original Freeware 1.0 CDROM, SGI
  158. intends to make available a compiled version of bash and its source in
  159. the near future.  This action does not necessarily imply a commitment to any
  160. future support actions for the programs found on the Freeware 1.0
  161. CDROM.
  162.  
  163.  
  164. Linux
  165. =====        
  166. Patches for the following Linux versions are available.
  167.  
  168. SuSE 4.2
  169.     ftp://ftp.suse.de/suse_update/suse42/a1/bash.tgz
  170.  
  171. Red Hat 3.0.3
  172.     ftp://ftp.redhat.com/pub/redhat/updates/3.0.3/{architecture}/bash-1.14.6.8.{architecture}.rpm
  173.  
  174.  
  175. Yggdrasil
  176.     Patched bash source and binary tar files are now  FTPable from
  177.  
  178.         ftp://ftp.yggdrasil.com/pub/support/fall95
  179.  
  180. WGS Linux Pro
  181.     ftp://ftp.wgs.com/pub/linux/redhat/updates/3.0.3/i386/bash-1.14.6-8.i386.rpm
  182.  
  183. Caldera - Have built the new bash-1.14.7 code from prep.ai.mit.edu
  184.     -/pub/gnu. Tested only insofar as to ascertain that the security bug
  185.     is fixed.  Binary and source RPMs live in ftp -
  186.  
  187.     ftp://ftp.caldera.com/pub/cnd-1.0/updates/bash-1.14.7-1.i386.rpm
  188.     ftp://ftp.caldera.com/pub/cnd-1.0/updates/bash-1.14.7-1.src.rpm
  189.  
  190. - ----------------------------------------------------------------------------
  191. The CERT Coordination Center thanks IBM-ERS for permission to reproduce the
  192. technical content in their IBM Emergency Response Service Security
  193. Vulnerability Alerts ERS-SVA-E01-1006:004.1 and ERS-SVA-E01-1006:004.2.
  194. These alerts are copyrighted 1996 International Business Machines Corporation.
  195. - ----------------------------------------------------------------------------
  196.  
  197. If you believe that your system has been compromised, contact the CERT
  198. Coordination Center or your representative in the Forum of Incident Response
  199. and Security Teams (see ftp://info.cert.org/pub/FIRST/first-contacts).
  200.  
  201.  
  202. CERT/CC Contact Information
  203. - ---------------------------
  204. Email    cert@cert.org
  205.  
  206. Phone    +1 412-268-7090 (24-hour hotline)
  207.                 CERT personnel answer 8:30-5:00 p.m. EST(GMT-5) / EDT(GMT-4)
  208.                 and are on call for emergencies during other hours.
  209.  
  210. Fax      +1 412-268-6989
  211.  
  212. Postal address
  213.          CERT Coordination Center
  214.          Software Engineering Institute
  215.          Carnegie Mellon University
  216.          Pittsburgh PA 15213-3890
  217.          USA
  218.  
  219. Using encryption
  220.    We strongly urge you to encrypt sensitive information sent by email. We can
  221.    support a shared DES key or PGP. Contact the CERT/CC for more information.
  222.    Location of CERT PGP key
  223.          ftp://info.cert.org/pub/CERT_PGP.key
  224.  
  225. Getting security information
  226.    CERT publications and other security information are available from
  227.         http://www.cert.org/
  228.         ftp://info.cert.org/pub/
  229.  
  230.    CERT advisories and bulletins are also posted on the USENET newsgroup
  231.         comp.security.announce
  232.  
  233.    To be added to our mailing list for advisories and bulletins, send your
  234.    email address to
  235.         cert-advisory-request@cert.org
  236.  
  237. - -----------------------------------------------------------------------------
  238. Copyright 1996 Carnegie Mellon University
  239. This material may be reproduced and distributed without permission provided
  240. it is used for noncommercial purposes and the copyright statement is
  241. included.
  242.  
  243. CERT is a service mark of Carnegie Mellon University.
  244. - -----------------------------------------------------------------------------
  245.  
  246. This file: ftp://info.cert.org/pub/cert_advisories/CA-96.22.bash_vuls
  247.            http://www.cert.org
  248.                click on "CERT Advisories"
  249.  
  250.  
  251. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  252. Revision history
  253.  
  254. Nov. 13, 1996   Noted that yy_readline_get does not require the patch included
  255.                 in the original advisory. Removed the patch from Sec. III.
  256.  
  257. Oct. 14, 1996    Added Appendix A - vendor information.
  258.  
  259.  
  260.  
  261.  
  262. -----BEGIN PGP SIGNATURE-----
  263. Version: 2.6.2
  264.  
  265. iQCVAwUBMook5nVP+x0t4w7BAQHqXAQAmZvYO3Yq57sCh7zPU98YXEnTAnIr2pta
  266. RkyNfjSBkDlMhdiHD/nyNL0Hn1kCQK0oCXv6o27rgEb+B9ZfLvXj0O5DiNhaMB1Q
  267. d+6b0H6o8iQ6WdEbU/3774LgFD1CpTp0MiZTwwMoNAfZ4/DD+zWGI4lO/5l2dU49
  268. MGMkjqFgHoc=
  269. =SbL0
  270. -----END PGP SIGNATURE-----
  271.