WebAssembly är det nya lågnivåspråket för webben och har nu implementerats i alla större webbläsare sedan över ett år. För att säkerställa säkerheten, prestandan och korrektheten hos framtida webbapplikationer finns ett stort behov av dynamiska analysverktyg för WebAssembly. Men att bygga sådana verktyg från grunden kräver kunskap om låg nivå detaljer i språket och dess körtid miljö. Denna uppsats presenterar Wasabi, den första allmänna ramen för dynamisk analys av WebAssembly. Wasabi erbjuder ett användarvänligt API på hög nivå som stöder dynamiska tungviktsanalyser. Det är baserat på binär instrumentering, som infogar samtal till analysfunktioner skrivna i JavaScript i en WebAssembly binär. Dynamiskt analysera WebAssembly kommer med flera unika utmaningar, såsom problemet med att spåra typ-polymorphic instruktioner med analysfunktioner som har en fast typ, som vi hanterar genom on-demand monomorphization. Vår utvärdering av beräkningsintensiva riktmärken och verkliga tillämpningar visar att Wasabi (i) troget bevarar det ursprungliga programbeteendet, (ii) inför en overhead som är rimlig för tunga dynamiska analyser, och (iii) gör det enkelt att genomföra olika dynamiska analyser, inklusive instruktionsräkning, call graf extraktion, minnesåtkomst spårning, och fläckanalys.
Till exempel Lehmann et al. REF har föreslagit ett generellt dynamiskt analyssystem för Wasm, som gör det möjligt för utvecklare eller forskare att implementera dynamisk analys av tungvikt, t.ex. instruktionsräkning och spårning av minnesåtkomst.
Wasabi: A Framework for Dynamically Analyzing WebAssembly
{'venue': None, 'journal': 'Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems', 'mag_field_of_study': ['Computer Science']}