Publicado por usa el 2018-10-17
Traducción de vtamara
Con algunos formatos de Array#pack
y String#unpack
, las banderas de
contaminación (tainted) de los datos originales no se propagan a la
cadena/arreglo que se retorna.
A esta vulnerabilidad se le ha asignado el identificador CVS
CVE-2018-16396.
Detalles
El método Array#pack
convierte el arreglo que recibe en una cadena
con un formato especificado. Si el arreglo recibido contiene objetos
contaminados, la cadena retornada también debe marcarse como
contaminada.
El método String#unpack
que convierte una cadena en un arreglo
también debería propagar la bandera de contaminación a los objetos
del arreglo que se retorna.
Pero, con las directivas B
, b
, H
y h
, las banderas
de contaminación no se propagan.
Asi, que si un script procesa una entrada no confiable con Array#pack
y/o String#unpack
y chequea su confiabilidad con las banderas de
contaminación, el chequeo podría resultar errado.
Todos los usuarios que corran una versión afectada deberían actualizar de inmediato.
Versiones afectadas
- Serie Ruby 2.3: 2.3.7 y anteriores
- Serie Ruby 2.4: 2.4.4 y anteriores
- Serie Ruby 2.5: 2.5.1 y anteriores
- Serie Ruby 2.6: 2.6.0-preview2 y anteriores
- Anteriores la revisión r65125 del trunk
Credito
Agradecimientos a Chris Seaton por reportar este problema.
Historia
- Publicado originalmente el 2018-10-17 14:00:00 (UTC)