1. Foren
  2. Kommentare
  3. Software-Entwicklung-Forum
  4. Alle Kommentare zum Artikel
  5. › Google: Chrome…

In Firefox hat Rust aber nicht viel geholfen

Neue Foren im Freiraum! Raumfahrt und freie Software haben jetzt einen Platz, die Games tummeln sich jetzt alle in einem Forum.
  1. Thema

Neues Thema Ansicht wechseln


  1. In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 22.09.21 - 11:44

    Zumindest nicht mit Speicherverwaltung oder mit Speicherfehlern.

    Quellen:
    https://www.openhub.net/p/firefox/analyses/latest/languages_summary
    https://www.cvedetails.com/product/3264/Mozilla-Firefox.html?vendor_id=452

    Mit anderen Worten, der Anteil von Rust zu C/C++ ist inzwischen bei 20% in Firefox, doch es gibt keine Änderung im relativen Anteil der Speicherfehlern (immer noch ~70% verglichen mit anderen Sicherheitslücken).

    Also da stimmt etwas nicht. Entweder sind die CVE-Statistiken, die zeigen sollten wie gross der Speicherfehleranteil vom C++-Kod ist, komplett falsch und unzuverlässig, oder die Welt in Rust umzuschreiben bringt doch keinen Erlös.



    2 mal bearbeitet, zuletzt am 22.09.21 11:55 durch ultim.

  2. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: FlowPX2 22.09.21 - 12:14

    Das ist so leider nicht ganz Aussagekräftig.
    1. Die ungefähr 70% der Fehler sind Speicherfehler ist keine genaue Zahl, sondern kann nur relativ betrachtet werden. Sind weniger Fehler gemeldet worden oder mehr Fehler, sind diese nur im C++ Teil oder auch im Rust Code zu finden.
    2. Rust mit einer großen Basis von C++ Code zu verbinden ist nicht die optimale Lösung, es ist eher ein Übergangsweg oder eine Möglichkeit um mit vorhandenen code kompatibel zu sein.
    Leider muss man, wenn man C++ mit Rust verbindet immer einen teil unsafe code verwenden und verlässt damit den Bereich wo Rust gerade punktet. Man versucht den unsafe Anteil daher immer wo gering wie möglich zuhalten, jedoch ist das sehr schwierig, wenn die Anwendung zu 80% C++ besteht.

    Es wäre daher eher interessant zu wissen, wieviele Fehler in Firefox sind, trotz der Verwendung von safe Rust code. Ich bin mir ziemlich sicher wäre Firefox zu 100% in Rust geschrieben, würde es deutlich weniger Speicherfehler gehen. Es ist schon sehr schwierig gewisse Speicher Probleme in Rust hervorzubringen unmöglich ist es nicht, wie ich feststellen musste, jedoch wirklich sehr schwer.

  3. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 22.09.21 - 12:27

    FlowPX2 schrieb:
    --------------------------------------------------------------------------------
    > Das ist so leider nicht ganz Aussagekräftig.
    > 1. Die ungefähr 70% der Fehler sind Speicherfehler ist keine genaue Zahl,
    > sondern kann nur relativ betrachtet werden. Sind weniger Fehler gemeldet
    > worden oder mehr Fehler, sind diese nur im C++ Teil oder auch im Rust Code
    > zu finden.
    > 2. Rust mit einer großen Basis von C++ Code zu verbinden ist nicht die
    > optimale Lösung, es ist eher ein Übergangsweg oder eine Möglichkeit um mit
    > vorhandenen code kompatibel zu sein.
    > Leider muss man, wenn man C++ mit Rust verbindet immer einen teil unsafe
    > code verwenden und verlässt damit den Bereich wo Rust gerade punktet. Man
    > versucht den unsafe Anteil daher immer wo gering wie möglich zuhalten,
    > jedoch ist das sehr schwierig, wenn die Anwendung zu 80% C++ besteht.
    >
    > Es wäre daher eher interessant zu wissen, wieviele Fehler in Firefox sind,
    > trotz der Verwendung von safe Rust code. Ich bin mir ziemlich sicher wäre
    > Firefox zu 100% in Rust geschrieben, würde es deutlich weniger
    > Speicherfehler gehen. Es ist schon sehr schwierig gewisse Speicher Probleme
    > in Rust hervorzubringen unmöglich ist es nicht, wie ich feststellen musste,
    > jedoch wirklich sehr schwer.

    Mit allen Punkten oben sagst du im Prinzip, "Die Fehler sind vlt. immer noch im C++-Teil. Hätte man alles in Rust geschrieben, hätten wir keine Speicherfehler mehr." Also du willst sagen, Mozilla hat über 2.4M Codelines in Rust umgeschrieben, und dabei gerade einen Teil von den C++-Codelines ersetzt, die keinen Fehler hatten?

    Gerade Mozilla hat Rust ursprünglich entwickelt, und eben die Hauptmotivation war, Speicherfehler zu vermeiden. Und dann gehen sie her und wählen Millionen von C++-Codelines für Ersetzen aus die keinen Fehler haben... ja sicher.

    Wie gesagt, wenn in Rust keine Speicherfehler mehr auftreten, dann kann die Alternativerklärung nur noch lauten, dass die Statistik "70% von Sicherheitslücken ist durch Speichermanagement in C++" ein totaler Quatsch ist.



    1 mal bearbeitet, zuletzt am 22.09.21 12:28 durch ultim.

  4. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: Steffo 22.09.21 - 20:39

    Das ist eine ziemlich oberflächliche Analyse. Wenn diese Sicherheitslücken nämlich hauptsächlich in C++ Code vorkommen, dann ändert das natürlich nichts am Verhältnis der Speicherfehler zu anderen Sicherheitslücken.

    Es gibt durchaus Vorher-Nachher-Vergleiche:

    https://hacks.mozilla.org/2016/07/shipping-rust-in-firefox/

  5. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 23.09.21 - 05:10

    Steffo schrieb:
    --------------------------------------------------------------------------------
    > Das ist eine ziemlich oberflächliche Analyse. Wenn diese Sicherheitslücken
    > nämlich hauptsächlich in C++ Code vorkommen, dann ändert das natürlich
    > nichts am Verhältnis der Speicherfehler zu anderen Sicherheitslücken.
    >

    Natürlich ändert das am Verhältnis. Rust hilft nämlich nur bei Speicherfehlern und Threadg-Fehlern. Alle andere Fehlerarten werden in Rust ca. so viele entstehen wie in C++. Wenn du also 2.4M Lines of Code in Rust umschreibst, dann entstehen dort viele neue Fehler auch, mit der Ausnahme von Speicher- und Threadingfehlern. Also das Verhältnis ändert sich.

    Steffo schrieb:
    --------------------------------------------------------------------------------
    > Das ist eine ziemlich oberflächliche Analyse. Wenn diese Sicherheitslücken
    > nämlich hauptsächlich in C++ Code vorkommen, dann ändert das natürlich
    > nichts am Verhältnis der Speicherfehler zu anderen Sicherheitslücken.
    >
    > Es gibt durchaus Vorher-Nachher-Vergleiche:
    >
    > https://hacks.mozilla.org/2016/07/shipping-rust-in-firefox/

    Im Artikel steht sogar explizit drinnen, "the Rust component performing beautifully and delivering **identical** results to the original C++ component". Also kein Unterschied. Wo siehst du im Artikel irgendeinen Hinweis darauf, dass nach dem Umschrieben weniger Fehler aufgetreten sind? Nirgendwo. Ausserdem, der Artikel entstand über einen mp4-Parser. Das Ding besteht gerademal aus ca. 5K Lines of Code. Das ist nichts verglichen mit dem Rest vom Firefox! Heute besteht der Rust-Anteil aus 2.4M Codelines wie gesagt (nicht aus 5K, LOL), da würde man denken, man würde zumindest irgendeinen Unterschied in den Statistiken sehen.

  6. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: Steffo 23.09.21 - 15:17

    ultim schrieb:
    --------------------------------------------------------------------------------
    > Steffo schrieb:
    > ---------------------------------------------------------------------------
    > -----
    > > Das ist eine ziemlich oberflächliche Analyse. Wenn diese
    > Sicherheitslücken
    > > nämlich hauptsächlich in C++ Code vorkommen, dann ändert das natürlich
    > > nichts am Verhältnis der Speicherfehler zu anderen Sicherheitslücken.
    > >
    >
    > Natürlich ändert das am Verhältnis. Rust hilft nämlich nur bei
    > Speicherfehlern und Threadg-Fehlern.

    Was weißt "nur"?! Das macht den größten Teil der Fehler aus und die sind auch am schwersten zu finden!
    Weiter stimmt das mit den "nur" nicht. Ich hatte das schon erwähnt, dass C++ ein großes Problem mit undefiniertem Verhalten hat.
    Rust hat auch noch andere Nettigkeiten, wie z. B., dass ein match (so etwas wie switch-case), alle
    Fälle abhandeln muss, sonst kommt es zu Compilefehlern.

    > Im Artikel steht sogar explizit drinnen, "the Rust component performing
    > beautifully and delivering **identical** results to the original C++
    > component".

    Das bezieht sich auf die Laufzeit!

    Da steht nämlich auch: "And as it turns out, media formats are known to have been used to trick decoders into exposing nasty security vulnerabilities that exploit memory management bugs in Web browsers’ implementation code."

  7. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 24.09.21 - 16:38

    Steffo schrieb:
    --------------------------------------------------------------------------------
    > Was weißt "nur"?! Das macht den größten Teil der Fehler aus und die sind
    > auch am schwersten zu finden!

    Das ist aber genau was durch die Statistiken möglicherweise bestritten wird! Du kannst bitte nicht ein Phänomen mit sich selbst begründen.

    > Weiter stimmt das mit den "nur" nicht. Ich hatte das schon erwähnt, dass
    > C++ ein großes Problem mit undefiniertem Verhalten hat.

    Wobei die UBs natürlich durch die einfachste static analyzers abgefangen werden.

    > Rust hat auch noch andere Nettigkeiten, wie z. B., dass ein match (so etwas
    > wie switch-case), alle
    > Fälle abhandeln muss, sonst kommt es zu Compilefehlern.

    Ja, ganz gleich wie praktisch alle C/C++ Compiler das auch machen unter der Verwendung von entsprechenden Compiler Switches.

    >> Im Artikel steht sogar explizit drinnen, "the Rust component performing
    >> beautifully and delivering **identical** results to the original C++
    >> component".
    >
    > Das bezieht sich auf die Laufzeit!

    Oh wirklich? Schöne Annahme. Wo siehst du das, dass hier vom Performance gesprochen wird? Im Gegenteil zu deiner Aussage, die Telemetriedaten im Diagramm, die die "identical Results" zeigen, reden eindeutig nicht vom Performance, sondern einfach über die Fähigkeit, MP4-Streams zu parsen. D.h. möglicherweise haben sie hier keine neue Bugs eingebaut.

    > Da steht nämlich auch: "And as it turns out, media formats are known to
    > have been used to trick decoders into exposing nasty security
    > vulnerabilities that exploit memory management bugs in Web browsers’
    > implementation code."

    Das ist ein generelles Statement und hat sich gar nicht auf das aktuell ersetzte Codestück bezogen.

    Kannst gerne selbst überprüfen: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=firefox+mp4
    Einserseits hatte Firefox nur ein paar CVEs in seinem MP4-Perser, alle in 2015, nix davor oder danach. Über die ganze 19-Jährige Geschichte von Firefox!
    Aber vlt noch wichtiger, wenn du nicht nur die Zusammenfassung von den CVEs anschaust, sondern die verlinkte genaue Bugbeschreibungen bei Mozilla durchliests, dann siehst du, dass die Hälfte davon lediglich eine potenzielle DoS-Attacke ist und nicht was ein Informatoin Leak oder Code Execution erlauben würde. D.h. durch Rust werden diese sogar verschlimmbessert, weil die potenzielle Crashes jetzt in sichere Crashes bei umgewandelt wurden.

  8. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 24.09.21 - 17:04

    Das oben ist aber fast schon off-topic.

    Zurück zum urpsrünglichen Topic, ich bin auf deine Erklärung neugierig:
    1. Wenn die CVE-Statistiken stimmen
    2. Und das ersetzte C++-Kod war (deiner Behauptunk nach) voll mit Fehlern
    3. Und Rust hat die Speicherfehler behoben
    ... dann wieso sieht man die Resultate in den Statistiken nicht?

    Wie erklärst du das Phänomen vom ersten Post? Eine theoretische Erklärung wäre, dass in 2.4M Codelines kein einziger Bug in Rust programmiert wurde, und hier meine ich nicht nur Speicher- und Threading-Fehler, sondern wirklich keine Fehler, von allen Arten, inkl. Logikfehler und wasweissich. Das meinst du sicher nicht.

    Sonst stimmt Punkt 1, 2 oder 3 oben in der Liste nicht.



    1 mal bearbeitet, zuletzt am 24.09.21 17:05 durch ultim.

  9. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: captain_spaulding 25.09.21 - 10:49

    ultim schrieb:
    --------------------------------------------------------------------------------
    > Mit anderen Worten, der Anteil von Rust zu C/C++ ist inzwischen bei 20% in
    > Firefox, doch es gibt keine Änderung im relativen Anteil der
    > Speicherfehlern (immer noch ~70% verglichen mit anderen
    > Sicherheitslücken).
    >
    > Also da stimmt etwas nicht. Entweder sind die CVE-Statistiken, die zeigen
    > sollten wie gross der Speicherfehleranteil vom C++-Kod ist, komplett falsch
    > und unzuverlässig, oder die Welt in Rust umzuschreiben bringt doch keinen
    > Erlös.

    Kann sein dass ich die Statistik nicht verstehe, aber so ich das sehe wird dort nur aufgeschlüsselt wieviele Fehler es insgesamt gab. Ob der Fehler in Rust oder C++ war steht da nicht. Damit ist das eben Kaffeesatzleserei, weil die Anzahl an gefundenen Fehlern sowieso immer schwankt.
    Sieht man schon daran dass es 2017 nur einen Fehler gab aber 2018 291. Das ist so einfach nutzlos.
    Wenn man wissen will ob Rust oder C++ weniger Fehler verursacht, muss man sich schon die konkreten Fehler genau anschauen und sich die Frage stellen "wäre das in der anderen Sprache auch passiert?".
    Aus einer völlig vereinfachten Statistik auf die Sicherheit der Sprachen zu schließen ist zwar einfach, aber auch falsch.

  10. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 25.09.21 - 13:26

    captain_spaulding schrieb:
    --------------------------------------------------------------------------------
    > ultim schrieb:
    > ---------------------------------------------------------------------------
    > -----
    > > Mit anderen Worten, der Anteil von Rust zu C/C++ ist inzwischen bei 20%
    > in
    > > Firefox, doch es gibt keine Änderung im relativen Anteil der
    > > Speicherfehlern (immer noch ~70% verglichen mit anderen
    > > Sicherheitslücken).
    > >
    > > Also da stimmt etwas nicht. Entweder sind die CVE-Statistiken, die
    > zeigen
    > > sollten wie gross der Speicherfehleranteil vom C++-Kod ist, komplett
    > falsch
    > > und unzuverlässig, oder die Welt in Rust umzuschreiben bringt doch
    > keinen
    > > Erlös.
    >
    > Kann sein dass ich die Statistik nicht verstehe, aber so ich das sehe wird
    > dort nur aufgeschlüsselt wieviele Fehler es insgesamt gab. Ob der Fehler in
    > Rust oder C++ war steht da nicht. Damit ist das eben Kaffeesatzleserei,
    > weil die Anzahl an gefundenen Fehlern sowieso immer schwankt.
    > Sieht man schon daran dass es 2017 nur einen Fehler gab aber 2018 291. Das
    > ist so einfach nutzlos.
    > Wenn man wissen will ob Rust oder C++ weniger Fehler verursacht, muss man
    > sich schon die konkreten Fehler genau anschauen und sich die Frage stellen
    > "wäre das in der anderen Sprache auch passiert?".
    > Aus einer völlig vereinfachten Statistik auf die Sicherheit der Sprachen zu
    > schließen ist zwar einfach, aber auch falsch.

    Das stimmt und da bin ich auch bei dir. Sowas kann man nicht herauslesen. Ich habe aber auch nie konkret behauptet, dass die Fehler konkret in Rust auftreten. Ich sage nur, wenn du 20% (2.4M Codelines, also statistisch schon relevant) vom Code umschreibst, und dabei eine Fehlerart die 70% aller Fehler ausmacht komplett loswirdst, dann müsste man heute sehen, dass diese Fehlerart nicht mehr 70% aller Fehler ausmacht, sondern nur einen niedrigeren Anteil. Soweit ist doch logisch. Das sehen wir aber nicht, und ich stelle die Frage, warum? Wenn diese Fehler nicht in Rust auftreten, dann hat die ursprüngliche Aussage nicht gestimmt, dass man von diesen Statistiken ablesen kann, 70% der Fehler ist wegen Speicherverwaltung in C++.



    1 mal bearbeitet, zuletzt am 25.09.21 13:27 durch ultim.

  11. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: captain_spaulding 25.09.21 - 13:50

    Kann vielleicht schon dadurch verursacht werden, dass man während der Einführung von Rust eben mehr nach solchen Fehlern gesucht hat und somit auch mehr gefunden hat. Aber das ist natürlich reine Spekulation.

  12. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: ultim 25.09.21 - 16:52

    captain_spaulding schrieb:
    --------------------------------------------------------------------------------
    > Kann vielleicht schon dadurch verursacht werden, dass man während der
    > Einführung von Rust eben mehr nach solchen Fehlern gesucht hat und somit
    > auch mehr gefunden hat. Aber das ist natürlich reine Spekulation.

    Das glaube ich nicht. Generell wenn man gerade dabei ist Millionen von Codezeilen komplett zu ersetzen, dann durchforstet man diese nicht noch einmal (und besonders nicht härter als je zuvor) vor dem Löschen nach Fehlern nur um Zeit zu verschwenden.

  13. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: Proctrap 03.11.21 - 11:04

    Der ganze Thread hier ist sinnlos.
    Mozilla hat einige teile in Rust geschrieben, den Parser für MP4 sowie die layout engine für CSS.
    Lezteres wegen starken Bedenken dass sich das nicht ordentlich in c++ multithreaden lässt, ohne massiv Lücken und Crashes zu bekommen.

    Was wurde nicht in rust "neu" geschrieben ? Alles andere, inklusive der Javascript-Runtime spidermonkey. Und was macht spidermonkey ? Javascript code von Websites interpretieren.

    Du musst also eher fragen: Wo sind diese CVEs ? In dem neuen Rust teil der jetzt überall läuft und massiv schneller ist, oder in dem C++ Anteil der die größte Angriffsfläche liefert (JIT).
    Ansonsten vergleichst du hier Unfug.

    ausgeloggt kein JS für golem = keine Seitenhüpfer

  14. Re: In Firefox hat Rust aber nicht viel geholfen

    Autor: tallinn1960 06.11.21 - 12:55

    Mir ist überhaupt nicht klar, was Du aus den Statistiken bzgl. Rust in Firefox eigentlich herauslesen willst? Der Zusammenhang der Migration von Code in eine speichersichere Sprache und die Zeitreihe über die Menge der gefundenen Speicherfehler im FF ist alles andere als trivial. Da muss man schon lange hinsehen, um ggf. einen Trend in einer Zeitreihe zu messen, die an und für sich sehr volatil ist.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. Manager (w/m/d) IT Systeme/QC
    STADA Arzneimittel AG, Bad Vilbel
  2. Information Security Architect (m/w/d)
    NEMETSCHEK SE, München
  3. Service Engineer (Incident- & Problemmanager) - Expert (m/w/d)
    Vodafone GmbH, Eschborn, Düsseldorf, Stuttgart, Unterföhring
  4. Service Engineer (Incident- & Problemmanager) - Specialist (m/w/d)
    Vodafone GmbH, Eschborn, Unterföhring, Stuttgart, Düsseldorf

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. (u. a. Crucial P5 500GB PCIe-SSD für 59,99€, Crucial P5 2TB PCIe-SSD für 184,99€)
  2. 359,99€ (versandkostenfreie Lieferung ab 13.12.)
  3. 319€ (Bestpreis)
  4. (u. a. Biostar H510MH 2.0 Mainboard für 64,90€, Cooler Master V850 Platinum 850W PC-Netzteil...


Haben wir etwas übersehen?

E-Mail an news@golem.de


Ohne Google, Android oder Amazon: Der Open-Source-Großangriff
Ohne Google, Android oder Amazon
Der Open-Source-Großangriff

Smarte Geräte sollen auch ohne die Cloud von Google oder Amazon funktionieren. Huawei hat mit Oniro dafür ein ausgefeiltes Open-Source-Projekt gestartet.
Ein Bericht von Sebastian Grüner

  1. Internet der Dinge Asistenten wie Alexa und Siri droht EU-Regulierung

Software: 20 Dinge, die ich in 20 Jahren als Entwickler gelernt habe
Software
20 Dinge, die ich in 20 Jahren als Entwickler gelernt habe

Der Entwickler Justin Etheredge über zu große Systeme, zu kleine Ziele, die Bescheidenheit von Entwicklern und den Mythos des Superprogrammierers.
Von Justin Etheredge

  1. Programmierung Githubs Copilot produziert Bugs und Sicherheitslücken
  2. Verteilte Systeme Die häufigsten Probleme mit Microservices
  3. Mendix-CTO Johan den Haan "Der durchschnittliche Entwickler ist kein Experte"

Satellitenkonstellationen: Iod statt Xenon ist eine kleine Raumfahrtrevolution
Satellitenkonstellationen
Iod statt Xenon ist eine kleine Raumfahrtrevolution

Ionentriebwerke mit Iod sollen keine Leistungsrekorde aufstellen, sondern eine einfache und günstige Lösung für Satellitenkonstellationen wie Starlink sein.
Von Frank Wunderlich-Pfeiffer

  1. Skynet SpaceX soll britischen Militärsatelliten ins All bringen
  2. Patrick Drahi Eutelsat verhandelt über Verkauf an Telekom-Milliardär
  3. Von Cubesats zu Disksats Satelliten als fliegende Scheiben