Heap-Überlauf beim Parsen von URI-Escape-Sequenzen in YAML (CVE-2014-2525)

Beim Parsen von URI-Escape-Sequenzen in YAML kann es in Ruby zu einem Überlauf kommen. Dieser Sicherheitslücke wurde die CVE-Nummer CVE-2014-2525 zugewiesen.

Details

Immer dann, wenn ein YAML-String mit Tags geparst wird, kann ein speziell angefertigter String einen Heap-Überlauf verursachen, der möglicherweise zur Ausführung beliebigen Codes führen kann.

Verwundbarer Code sieht zum Beispiel so aus:

YAML.load <code_from_unknown_source>

Betroffene Versionen

Seit Ruby 1.9.3-p0 wird standardmäßig psych als YAML-Parser verwendet. Betroffen sind alle Versionen von psych, die gegen libyaml <= 0.1.5 gelinkt sind.

Die verwendete Version von libyaml kann festgestellt werden mit:

$ ruby -rpsych -e 'p Psych.libyaml_version'
[0, 1, 5]

Lösungen

Nutzer, die libyaml systemweit installiert haben, sollten libyaml auf die Version 0.1.6 aktualisieren. Beim erneuten Kompilieren von Ruby muss der Pfad der aktualisierten Version angegeben werden:

$ ./configure --with-yaml-dir=/path/to/libyaml

Nutzer ohne eine systemweite Installation von libyaml verwenden die in psych eingebundene Version. Diesen Nutzern wird empfohlen, psych auf die Version 2.0.5 zu aktualisieren, die libyaml 0.1.6 ausliefert:

$ gem install psych

Verlauf

  • Erstveröffentlichung: 2014-03-29 01:49:25 UTC
  • Aktualisiert: 2014-03-29 09:37:00 UTC