Fragen? Antworten! Siehe auch: Alternativlos
(size_t)(uint1+uint2)Selbe Annahme, genau so falsch. Der Cast nach size_t findet nach der Addition und dem arithmetischen Überlauf statt.
Mozilla verteilt die Updates über http aber ein Manifest über https, wo Hash-Werte der Dateien drinstehen. Das ist ein etabliertes Muster, das man früher häufig angewendet hat, weil die Mirrors oder das CDN nicht https konnten. Die Zeiten sind vorbei, aber es ist nicht per se unsicherer. Ich hätte das nicht angekreidet. Der Report argumentiert, dass man sehen kann, für welche Plattform jemand Updates zieht. Ja, aber das kann man auch bei https anhand der Menge der übertragenen Bytes sehen. Die Installer oder Updater für verschiedene Pattformen sind ja nicht alle gleich groß.
Die meisten Probleme waren in der Management-Oberfläche. Das ist nicht überraschend, so sieht das häufig aus in der Praxis. Im Updatemechanismus selbst haben sie keine schlimmen Dinge gefunden, und der Bericht sieht ordentlich gemacht aus. Das sind also gute Nachrichten für alle Firefox-Benutzer.
Ich muss ja sagen, dass ich das einen sehr erfreulichen Trend finde, dass Open Source-Projekte nicht nur Audits machen sondern dann die Berichte veröffentichen.
Update: Mir hat einer der Autoren des Reports geschrieben und erklärt das Missverständnis mit dem Overflow. Und zwar gibt es da einen anderen Check, bei dem in der Tat ein sizeof() Teil der Addition ist. Insofern haben die sich in ihrem Finding nicht geirrt (das wollte ich auch nicht unterstellen), aber die Formulierung war missverständlich. Es gibt da aber übrigens immer noch Komplikationen:
printf("%lu %lu",1+15+0xfffffff0u+(size_t)10,(size_t)10+0xfffffff0u+1+15);
Das ergibt mit gcc 8.2 auf x86_64-linux:
10 4294967306