Ansicht umschalten
Avatar von die kleine Himbeere
  • die kleine Himbeere

mehr als 1000 Beiträge seit 25.10.2012

"Was ist Bytecode?" - ein anderes Wort für "intransparent" und "gefährlich"

Denn niemand zwingt einen, Source-Code für den Bytecode mit zu liefern.

Natürlich kann man es freiwillig tun - aber es gibt anders als bei JavaScript keine Garantie dass man den Source-Code jemals zu sehen bekommen wird (wenn man will).

Im Gegenteil, es ist eher so dass selbst in Fällen wo der Source-Code irgendwo veröffentlicht ist, dann unklar ist um welche Version genau es sich handelt welche da als Bytecode im Browser abläuft.

Ich weiß auch nicht in wie weit die Compiler welche WebAssembly-Bytecode erzeugen auf "reproducible builds" ausgerichtet sind - denn andernfalls hat man kaum eine realistische Chance zu überprüfen, in wie fern ein veröffentlichter Quelltext tatsächlich dafür verwendet wurde eine bestimmte Bytecode-Datei zu erzeugen.

Man hätte dann eine ähnlich Situation wie bei Microsoft, wo man ja ebenfalls den (angeblichen) Source-Code von Windows mit einer entsprechenden Lizenz sowie dem Unterschreiben diverser NDAs zu Gesicht bekommt.

Nur leider kann niemand überprüfen ob dieser Source-Code auch tatsächlich derjenige ist welcher zum Erzeugen der ausgelieferten Programme benutzt wurde, oder ob im echten Quelltext vielleicht noch ein paar "kleine Extras" enthalten sind die im zur Verfügung gestellten Quelltext fehlen.

Wenn der Microsoft-Compiler für "reproducible builds" ausgerichtet wäre, gäbe es kein Problem mit der Überprüfung: Man kompiliert die Quelltexte einfach selbst und kontrolliert ob die erzeugten Binaries identisch mit den ausgelieferten sind.

Aber *seltsamer* Weise verwürfelt der Microsoft-Compiler beim Erzeugen der Object Files (oder vielleicht ist es auch der Microsoft-Linker) die Reihenfolge wie die Funktionen im Adressraum angeordnet sind; möglicherweise soll das auch ein "Sicherheitsfeature" wie ASLR sein. Jedenfalls ist er Endeffekt dass die Binaries sich völlig unterscheiden wenn denselben Quelltext mehrfach kompiliert, da die Reihenfolge der Funktionen ständig eine andere ist, und alle Sprünge und Referenzen dorthin sich entsprechend mit ändern.

Oder zumindest war das so zu Zeiten von MSVC6 - ist schon ein paar Jährchen her.

Aber ich mutmaßte damals jedenfalls dass dies kein "Irrtum" war, sondern eine absichtliche Maßnahme damit niemand kontrollieren kann ob die ausgelieferten Binaries von den kompilierten Quelltexten abweichen, und sich so der Verdacht auf Hintertüren erhärtet.

Bewerten
- +
Ansicht umschalten