Ik vis niet naar een argument, want er zit wel degelijk een verschil tussen Python C# en etc package management. Als ik met mijn browser een website bezoek (...) Als ik een desktop applicatie ga draaien (...)
Dat is inherent heel anders dan maar binnentrekken en draaien.
Ik kan een NuGet C# package maken met een DLL daarin die voor ASP.NET applicaties automatisch een HTTP module registreert welke alle binnenkomende POSTs logt en doorstuurt naar een extern verzamelpunt.
Of een HTTP module die malware injecteert voor remote code execution. Dat hoeft niet JavaScript te zijn. Hoe vaak zijn er wel niet vulnerabilities in de font rendering stack van Windows gevonden? Een speciaal geprepareerd webfont kan met zo'n vulnerability achter de hand al voldoende zijn.
Zelfde situatie dus. Stop met geloven dat JavaScript op dat vlak meer onveilig zou zijn dan andere talen, want dat is dus niet zo.
(Sterker nog: je kunt beargumenteren dat aangezien C# ge-precompiled wordt naar bytecode en de source niet meer te inspecteren valt, is het installeren van een NuGet C# package zelfs inherent nog meer onveilig dan een NPM JS package.)Aangezien er gewoon vreemde code binnen wordt geschoten en draait op mijn browser.
Die 'vreemde code' kan niets buiten zijn sandbox verrichten wat niet via strak dichtgetimmerde APIs aangeboden wordt. Enkel als er via een exploit uit de sandbox gebroken kan worden, heb je een probleem.
En dat is in het verleden al meerdere malen gebeurd met: HTML5 video (o.a. stagefright); webfonts (Windows font rendering vulnerabilities); images (Windows GDI image rendering vulnerabilities); CSS (parser bugs die leiden tot exploitable crashes) en zelfs HTML zelf (ook parser bugs).
Toch zie ik jou niet heel panisch de voedingsstekker van je modem er uit trekken en het internet afzweren. Vreemd heh?
Als ik een desktop applicatie ga draaien moet ik dat doel bewust eerst downloaden en vervolgens aanklikken voordat de applicatie zijn code mag uitvoeren op mijn systeem.
En wil een website JavaScript uitvoeren, moet je eerst de URL bezoeken en de website pagina en resources door de browser laten downloaden en uitvoeren.
Je stapt even heel snel over het feit heen dat ook die applicatie die je zelf kiest om te downloaden; installeren; en lanceren
ook op zichzelf staand extra zooi van internet kan plukken om uit te voeren. En daar heb jij als gebruiker een stuk minder (zeg maar gerust;
geen) controle over dan met een browser, waar er nog allerlei beschermingsmaatregelen ingebouwd zijn of toe te voegen zijn middels extensies.
En zeg niet dat dat niet gebeurt met desktop applicaties uit gecureerde bronnen zoals app stores, want ook daar is het geregeld raak. Er zijn legio gevallen geweest van malafide apps die soms dagenlang, maar ook vaak genoeg wekenlang (of zelfs maanden) in de iOS of Android app stores bleven staan en die allerlei meuk van coin miners t/m keyloggers bevatten of binnenhaalden. Veelal via backdoors in SDKs van louche advertisement netwerken. (Eigenlijk het package probleem dat bij o.a. NPM ook speelt.)
En wat dacht je van bijv. het Sourceforge voorval? Waar ze op eigen houtje adware aan de installers van 'achtergelaten' open-source software toevoegden?
[Reactie gewijzigd door R4gnax op 24 juli 2024 14:35]