Javascript goes java…

Hey, javascript wird das neue java, statt der kwelltexte soll demnächst ein bytekohd übertragen werden. Tolle idee! Zu möglichen risiken und nebenwirkungen bitte ich, die sicherheitsgeschichte von java zu betrachten — damals in den neunziger jahren allerdings wurde uns der in einer sandbox ausgeführte bytekohd noch als sicherheitsmerkmal verkauft.

Und das besteste daran: endlich hört das mal auf mit dieser kwelloffenheit, endlich kann nicht mehr jeder mensch mit einfachen werkzeugen (im zweifelsfall mit der kwelltextansicht im brauser) nachschauen, was für ein kohd da in seinem brauser ausgeführt wird. Stattdessen gibts in zukunft für interessierte disassemblierten kohd (selbst dafür bedarfs dann eines hilfsmittels) auf dem niewo einer assembler-sprache, den selbst halbwegs geübte leute nicht mehr ohne weiteres verstehen können. Ich höre jetzt schon die ganzen trojanerschmieden jubilieren, die endlich richtig viele möglichkeiten bekommen, ihren schadkohd irgendwie so zu verstecken, dass jedes antivirus-schlangenöl sich die zähne dran ausbeißt! Na ja, mir ists egal, ich lasse ja nicht einfach jeder dahergelaufenen webseit das privileg, kohd im brauser auszuführen. Jetzt schon nicht mehr. Obwohls massenhaft idjoten da draußen gibt, die mich ohne technischen grund dazu zwingen wollen (die NZZ zum beispiel, oder die krautreporter, oder auch diverse blogger mit ihrer disqus-scheiße, und ganz viele lallbacken und bratschädel mehr).

Selbst die „kryptografischen“ javascript-experimente der kriminellen (beispiel [na, wer findet spontan den nur mäßig versteckten eval], beispiel und noch ein beispiel) sind im gegensatz zu einer kwasimaschinensprache wenigstens prinzipjell ohne benutzung von zusatzprogrammen für einen mittelprächtig kundigen leser verstehbar.

Und natürlich freuen sich auch arschkrampen aus reklamewirtschaft und contentindustrie darüber, wenn dinge nicht mehr in offener form beim empfänger ankommen, und ich schätze mal als geübter verschwörungsteoretiker, dass diese arschkrampen auch genau diejenigen sind, die den prozess gerade antreiben. Dass die technokratisch vorangetriebene durchsetzung ihrer interessen gleichzeitig auch eine große hilfe für die zukünftige organisierte kriminalität ist, ist dabei keineswegs ein zufall, sondern eine folge der metodischen verwandtheit der geschäftsmodelle, die beidesamt allein darauf basieren, den opfern zusammen mit erwünschten dingen etwas völlig unerwünschtes unterzujubeln.

Und lasst euch ja keinen sand in die augen streuen, dass kryptografisch signierter bytekohd sicher sei! Das kenne ich schon von java. Und von TLS. Und von signierter schadsoftwäjhr. Vergesst es! Nicht einmal eine völlig fehlerfreie implementazjon ist sicher, wenn jene paarhundert stellen unsicher sind, die signieren können und denen technokratisch gut versteckt von den brausern pauschal vertraut wird, damit das ganze auch schön einfach und „anwenderfreundlich“ ist. Das grundsätzliche sicherheitsrisiko ist und bleibt es, dass man jeder webseit das privileg einräumt, kohd im brauser auszuführen. Das wird nicht besser werden, wenn praktisch niemand mehr die möglichkeit hat, diesen kohd auch mal zu überprüfen. Ganz im gegenteil.

Aber in der ganzen trübnis gibts auch eine gute nachricht:

Dazu ist ein LLVM-Backend geplant, mit dem zum Beispiel Code in C oder C++ nach Wasm übersetzt werden kann

Demnächst muss man nicht mehr javascript nehmen, sondern könnte jede programmiersprache nehmen, die von LLVM unterstützt wird. Ich würde da ja eher von C und C++ abraten, und zwar aus ähnlichen gründen, aus denen ich auch vom skripting mit FORTRAN abraten würde. Aber python, ruby, actionscript oder… für die vielen äppel-freunde… swift könnten für das skripten angezeigter inhalte sehr gut geeignet sein, und irgendeinen LISP-dialekt wird LLVM hoffentlich auch draufhaben. (Ich selbst mache einen bogen um LISP, weil ich verschachtelte klammern etwas grausam zu lesen finde, und deshalb weiß ich das nicht.)

Tja, .NET ist eben besser einsetzbar, wenns mal nicht von meikrosoft kommt… 😀

Und wenn javascript dann endlich endlich endlich langsam stirbt: ich weine ihm keine träne nach. Unfassbar, was ich schon für javascript-kohd mit meinem gehirn geparst habe, der nur dazu diente, eine art „anwendung im brauser“ zu implementieren — selbst mit einem zickigen toolkit wie… sagen wir mal… dem ollen motif¹ wäre das jeweils implementierte funkzjonsmerkmal trivial gewesen, aber in javascript wurden daraus weit ausgedehnte kohdwüsten voller irrsal und wirrsal… weia!

Noch besser wäre es freilich, dass die welt endlich endlich endlich einsähe, dass ein brauser eine verdammt beschissene (und zudem sicherheitstechnisch riskante) laufzeitumgebung für die anwendungsentwicklung ist. Aber dafür müsste den menschen ja ein gehirnchen waxen… 😀

Ganz schneller nachtrag: Oh, ich sehe gerade, dass Fefe seine fingerchen auch nicht im zaume halten konnte. 😉

¹Benutz motif, und du lernst den debugger kennen! Ganz sicher. Deshalb nenne ich motif „zickig“. Selbst GTK+, das sich aus programmierersicht sehr ähnlich wie motif „anfühlt“, macht nicht annähernd so viele unerwartete und schwer verständliche probleme. Nicht einmal, wenn man es direkt in C benutzt.