{"id":196,"date":"2011-03-27T18:21:11","date_gmt":"2011-03-27T17:21:11","guid":{"rendered":"http:\/\/spatzentrauma.de\/blog\/?p=196"},"modified":"2011-03-27T18:39:21","modified_gmt":"2011-03-27T17:39:21","slug":"kaputter-flash-sound-und-was-das-mit-der-glibc-zu-tun-hat","status":"publish","type":"post","link":"http:\/\/spatzentrauma.de\/blog\/2011\/03\/kaputter-flash-sound-und-was-das-mit-der-glibc-zu-tun-hat\/","title":{"rendered":"kaputter flash-sound&#8230; und was das mit der glibc zu tun hat"},"content":{"rendered":"<p style=\"text-align: left;\">Manch einer wird das vermutlich schon bei fefe <a href=\"http:\/\/blog.fefe.de\/?ts=b370d910\">gelesen<\/a> haben, aus fedora-Kreisen gibt es <a href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=638477\">Beschwerden<\/a> \u00fcber defektes Audio beim Abspielen von youtube-Videos. Betrifft mich jetzt erstmal nicht direkt, hier funktioniert das gut und stabil. Aber den Bugreport sollte jeder, der wei\u00df, was memcpy und memmove sind, mal lesen.<\/p>\n<p style=\"text-align: left;\">Kurzabriss (aus meiner Sicht; alle Details versteh ich [noch] nicht): Von Intel-Leuten wird bei der glibc-Entwicklung ein <a href=\"http:\/\/thread.gmane.org\/gmane.comp.lib.glibc.alpha\/15278\">Patch<\/a> eingereicht, der die oben angesprochenen Speicherfunktionen f\u00fcr diverse Intel-CPUs (bei 64Bit-Systemen)\u00a0 beschleunigt, teilweise erheblich (fefe ist der Meinung, dass die erhebliche Beschleunigung auf einen m\u00f6glichen Fehler in der Atom-CPU zur\u00fcckzuf\u00fchren ist). Einzige Begr\u00fcndung ist eben diese Beschleunigung. Und diese \u00c4nderung krempelt die interne Arbeitsweise der Befehle um, was aber bedeutet, dass bestimmte Annahmen bei der Nutzung \u00fcber den Haufen geworfen werden. F\u00fcr memcpy(3) ist zB. eine Annahme, dass die Speicherbereiche von Quelle und Ziel nicht \u00fcberlappen d\u00fcrfen. Hat man diese Situation im Programm, ist memmove(3) zu nutzen. Bei Adobe wiederum hat man sich f\u00fcr diese Annahmen offensichtlich nicht interessiert, was bisher nicht negativ aufgefallen sein d\u00fcrfte. In neueren Linux-manpages von memcpy fehlt da ein interessanter Nebensatz, der den Spezialfall der \u00fcberlappenden Speicherbereiche als undefiniert bezeichnet. Und jetzt (tats\u00e4chlich wurde der Fehler schon im September\/Oktober letzten Jahres diskutiert) f\u00fchrt diese Situation eben dazu, dass der bestehende Code im flashplayer mit der alten glibc-Version (Fedora 13) funktioniert, aber in der neuen Fedora-Version 14 nicht mehr. Kein gro\u00dfes Ding, m\u00f6chte man meinen, es wurden auch verschiedene W\u00fcrgarounds gefunden &#8211; der Fehler in der glibc existiert aber eben weiter. Wenig \u00fcberraschend tauchen nach und nach weitere Programme auf, die pl\u00f6tzlich Probleme haben.<\/p>\n<p style=\"text-align: left;\">Was dann am st\u00e4rksten in dieser Situation nervt, ist die Tatsache, dass die Verantwortung gegenseitig hin- und hergeschoben wird. Die Fedora-Leute (die imo keine Schuld trifft) meinen, dass das nur upstream (also bei den glibc-Leuten) zu behandeln sei; die glibc-Entwickler sagen, dass Adobe schuld ist, weil sie eben den Code nicht so einsetzen, wie das zu machen ist; und Adobe kommt nicht aus dem Arsch, um einen Fix bereitzustellen. \u00d6hm, und was ist jetzt mit dem Fehler in der glibc? Die Entwickler meinen, dass Verhalten der Funktion ist ok und bedarf keiner \u00c4nderung. Linus Torvalds, der von dem Fehler eben auch betroffen ist, hat aber einige Argumente aufgez\u00e4hlt, warum es eben nicht ok ist (Stichwort: <a href=\"http:\/\/de.wikipedia.org\/wiki\/Prefetch\">prefetch<\/a>-Logik einer CPU). Es ist nicht das erste Mal, dass die glibc-Entwickler eine gewisse Sturheit an den Tag legen und sinnvolle Argumente vom Tisch wischen. Bis dato bleiben die \u00c4nderungen bestehen.<\/p>\n<p style=\"text-align: left;\">In einem Post, der in der weiter fortgeschrittenen Diskussion (in dem bug-report) auftaucht, macht ein Kommentator einen weiteren, imo schwerwiegenden Aspekt deutlich. Wenn das Verhalten vom memcpy zu falschen Speicherzugriffen f\u00fchrt und vielleicht auch Speicherbereiche \u00fcberschreibt, ist das ein Sicherheitsproblem. Da die glibc auch noch ein elementarer Bestandteil jedes Std-Linux-Systems ist, kann das auch als schwerwiegendes Problem bezeichnet werden, denn falls ein Malware-Schreiber einen Weg finden sollte, wie dieses Problem f\u00fcr ihn nutzbar ist, dann sind da recht schnell alle Distributionen betroffen, sprich die Wirkung w\u00e4re verheerend.<\/p>\n<p style=\"text-align: left;\"><em>update:<\/em> ich war gerade fertig mit schreiben und hab auf der glibc-Mailingliste nachgesehen, ob es nicht vielleicht Neuigkeiten in der Angelegenheit gibt. Entgegen meiner Bef\u00fcrchtung, dass nichts zu finden ist, war tats\u00e4chlich ein neuer Patch <a href=\"http:\/\/article.gmane.org\/gmane.comp.lib.glibc.alpha\/16014\">da<\/a>, der zumindest einen der vorgeschlagenen workarounds implementiert und sicheres Verhalten bewirkt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manch einer wird das vermutlich schon bei fefe gelesen haben, aus fedora-Kreisen gibt es Beschwerden \u00fcber defektes Audio beim Abspielen von youtube-Videos. Betrifft mich jetzt erstmal nicht direkt, hier funktioniert das gut und stabil. Aber den Bugreport sollte jeder, der &hellip; <a href=\"http:\/\/spatzentrauma.de\/blog\/2011\/03\/kaputter-flash-sound-und-was-das-mit-der-glibc-zu-tun-hat\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,4],"tags":[57,58,59],"_links":{"self":[{"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/posts\/196"}],"collection":[{"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/comments?post=196"}],"version-history":[{"count":6,"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/posts\/196\/revisions"}],"predecessor-version":[{"id":200,"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/posts\/196\/revisions\/200"}],"wp:attachment":[{"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/media?parent=196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/categories?post=196"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/spatzentrauma.de\/blog\/wp-json\/wp\/v2\/tags?post=196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}