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)?

  1. AEen aanval die wachtwoorden met brute kracht probeert
  2. BEen aanval die met een grote hoeveelheid verkeer een server stillegt
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Wanneer wordt bij gedeelde bibliotheken op Linux het versienummer van de soname, zoals de „.1” in libfoo.so.1, in het algemeen verhoogd?
  2. Wat is er te weten te komen als op Linux het commando ldd op een uitvoerbaar bestand wordt gebruikt?
  3. Welke combinatie van uitvoerbare bestandsformaten die op de belangrijkste OS'en worden gebruikt, is juist?
  4. Wat gebeurt er in het algemeen op Linux en dergelijke als recursie te diep wordt en de bovengrens van de stack wordt overschreden?
  5. Welke uitspraak is juist over de waarde bij het eerste gebruik van lokale en globale variabelen in C waarvoor geen beginwaarde is geschreven?

Vergelijkingen bij dit onderwerp