Linker, loader en uitvoerbare formaten
Welke aanval is gemakkelijker te voorkomen door te verbieden dat een geheugenpagina tegelijk „beschrijfbaar” en „uitvoerbaar” is (W^X, scheiding van schrijven en uitvoeren)?
- AEen aanval die wachtwoorden met brute kracht probeert
- BEen aanval die met een grote hoeveelheid verkeer een server stillegt
- CEen aanval die machinecode voor de aanval in een datagebied zoals de stack schrijft en daar naartoe laat springen om uit te voeren
Antwoord en toelichting tonen
Antwoord: C. Een aanval die machinecode voor de aanval in een datagebied zoals de stack schrijft en daar naartoe laat springen om uit te voeren
Bij oude aanvallen werd vaak machinecode via een bufferoverflow op de stack geschreven en het terugkeeradres daarheen gericht om het uit te voeren. De paginatabel van de CPU heeft een bit voor uitvoeringsverbod (zoals het NX-bit); als het OS stack, heap en .data uitvoeren verbiedt en .text schrijven verbiedt, werkt deze methode niet meer. Bij code die tijdens uitvoering wordt gemaakt, zoals JIT-compilers, worden de rechten voor schrijven en uitvoeren omgeschakeld gebruikt.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten