Se ha detectado un problema de seguridad en Ruby que podría permitir a un atacante hacer que el programa cree inadvertidamente archivos no deseados en el sistema en el que funcione el código. Se trata de un típico caso de

… intrusión de carácter nulo en el nombre de archivo.

Ruby es un lenguaje de programación interpretado, orientado a objetos y presentado públicamente en 1995 por "Matz", su creador. Es una mezcla sintáctica inspirada en Python y Perl, y está publicado bajo una licencia de software compatible con la GPL, pero propia, llamada "Licencia Ruby".

En los lenguajes de programación, programas y sistemas operativos existen ciertos caracteres especiales, como NUL, SOH, STX, etc, que los programadores pueden usar a bajo nivel. Cada uno tiene un "significado".
Por ejemplo, NUL, en la "mayoría" de lenguajes de programación y sistemas operativos, significa un final de cadena (000 en octal, 0x0 en hexadecimal o 0 en decimal, en resumen, el cero).

La vulnerabilidad, detectada por Peter Bex y con CVE-2012-4522 reside en los métodos de la clase IO. Para abrir un archivo, al método open (IO#open), se le deben proporcionar varios parámetros, entre ellos el nombre del archivo a abrir, este método a su vez lo proporciona a capas inferiores del sistema operativo. En una situación normal se le proveerá de un nombre estándar como ‘file.txt’, pero un atacante podría proporcionar un nombre especialmente manipulado y que contuviera el caracter NUL, por ejemplo ‘file.txt’ ( es la representación de NUL).

En este último caso, el método IO#open los aceptaría como válido y se lo proporcionaría a una capa inferior del sistema operativo, crearía el archivo llamado ‘file’, ya que el para el sistema operativo representa el fin de cadena y lo toma como tal.

La publicación oficial de la vulnerabilidad de Ruby menciona el método open, aunque más métodos de la misma clase o de otras relacionadas pueden estar afectados.

Los intérpretes de Ruby afectados son los anteriores a la versión 1.9.3 (estables) y de la 2.0.0 en desarrollo.

El fallo ya está corregido y se puede actualizar a la última versión desde: http://www.ruby-lang.org/en/downloads/ 
 

Opina sobre esta noticia:
http://unaaldia.hispasec.com/2012/10/vulnerabilidad-en-la-creacion-de.html#comments

Más información:

Ruby file creation due in insertion of illegal NUL character – SECLISTS
http://seclists.org/oss-sec/2012/q4/72

Unintentional file creation caused by inserting a illegal NUL character – – – Ruby
http://preview.ruby-lang.org/en/news/2012/10/12/poisoned-NUL-byte-vulnerability/

Fuente:
Antonio Sánchez
asanchez@hispasec.com
Laboratorio Hispasec
www.hispasec.com

Imagen:
Fotos Digitales Gratis
www.fotosdigitalesgratis.com

Logotipos/Imágenes/Texto MR Respectiva/s Compañía/s mencionada/s en la noticia.
Portal de Seguridad Informática, Tecnología e Internet
Descargas Antivirus/Antimalware
www.antivirusgratis.com.ar