*Diepe Zucht* ... Daar gaan we:
Nooit je Mac uitzetten? Laten we dat even serieus nemen.Ik gebruik Apple-hardware al sinds de SE/30 en ken de architectuur van binnen en buiten. Dit is geen Apple-bashing, integendeel. Maar precies omdat ik het platform respecteer, ergert het bijgeloof me.
macOS is in de kern een Darwin/BSD-systeem met een Mach-microkernel hybride, XNU geheten, zoals de meesten hier weten. Robuust, goed doordacht, met een beveiligingsmodel dat in veel opzichten de industrie leidt. SIP, Gatekeeper, gehardenede runtime, geheugenisolatie per proces. Apple heeft serieus werk geleverd. Dat is geen discussie. Zeker niet hier op MacFreak.
Maar een besturingssysteem is geen abstractie. Het draait op hardware, beheert geheugen, onderhoudt proceslijsten, en doet dat alles in een toestand die over tijd verandert. En daar begint het interessante deel.
Wat er fysiek gebeurt bij een lange uptimeGeheugen fragmenteert. Niet in termen van een catastrophe, niet zichtbaar, maar het gebeurt. Processen die je niet kent en niet ziet vragen kleine stukjes geheugen aan, geven ze niet netjes terug, en na weken ontstaat er een landschap van kleine gaten in de geheugenadresruimte. macOS compenseert dit goed, maar compenseren is niet hetzelfde als oplossen. Alleen een herstart ruimt de adresruimte volledig op.
APFS heeft uitstekende journaling en copy-on-write semantiek, maar consistency checks op een live systeem met actieve schrijfoperaties zijn per definitie beperkter dan checks op een rustig gemount volume na een gecontroleerde herstart. Dat is geen tekortkoming van APFS, dat is gewoon wiskunde.
Kernel extensions en achtergrondprocessen draaien soms weken met kleine vastgelopen threads. Je merkt het niet direct. Je merkt alleen dat het systeem na een herstart "frisser" aanvoelt. Dat gevoel is geen placebo.
En nu het deel waar het echt (volgens mij) interessant wordt
Stel je voor dat je een aanvaller bent. Je wil een macOS-systeem compromitteren. Gatekeeper staat aan, SIP staat aan, de gebruiker is niet dom. Frontale aanval werkt niet.
Maar je weet een ding: deze gebruiker herstart nooit.
Je schrijft een applicatie. Volledig legitiem, doet precies wat het belooft, vraagt nette permissies, gedraagt zich voorbeeldig. Het enige wat het stiekem ook doet is dit:
python
import subprocess, time
def get_uptime_seconds():
result = subprocess.run(['sysctl', '-n', 'kern.boottime'],
capture_output=True, text=True)
# parse boottime en bereken uptime
return uptime_in_seconds
def check_and_arm():
uptime = get_uptime_seconds()
# Wacht op minimaal 21 dagen uptime
threshold = 21 * 24 * 3600
if uptime > threshold:
trigger_update_prompt()
Na 21 dagen uptime verschijnt er een melding: "Update beschikbaar. Installeer nu?" De gebruiker klikt op ja. De installer vraagt om een beheerderswachtwoord. Heel normaal, dat doet elke installer.
Maar op dit punt is de geheugenkaart al weken niet opgeschoond. De aanvaller weet waar de zwakke plekken statistisch gezien zitten. Een gerichte heap spray op een specifiek adresbereik dat na drie weken uptime met grote kans bezet is door een kwetsbaar systeem framework:
# Heap layout na 21+ dagen uptime (gesimplificeerd)
0x7f8a2c000000 [libdispatch - fragmented]
0x7f8a2c004000 [free gap - 16KB]
0x7f8a2c008000 [CoreFoundation object - stale ref]
^
# Dit is wat we zoeken.
# Na korte uptime zit hier iets anders.
# Na lange uptime: voorspelbaar.
De aanval werkt niet op een systeem dat regelmatig herstart. De geheugenlay-out is dan onvoorspelbaar. ASLR doet zijn werk. De aanvaller heeft geen statistisch houvast.
Op een systeem dat al drie weken draait zonder herstart is de geheugenlay-out van een actief systeem met bekende applicaties statistisch veel smaller. Niet deterministisch, maar smal genoeg om bruikbaar te zijn.
Dit is geen theoretisch verhaal. Heap grooming en use-after-free exploits die afhankelijk zijn van voorspelbare geheugenlay-outs zijn een gedocumenteerde aanvalscategorie. iOS patches voor dit soort kwetsbaarheden verschijnen meerdere keren per jaar. macOS is niet anders van aard, alleen anders in aanvalsoppervlak.
Denk zelfs aan simpele scripts als:
# run three times.
# vmmap shows virtual mem map of a process.
# $$ represents PID of curr shell process.
for i in {1..3}; do vmmap $$ >> text.txt; echo "----" >> text.txt; sleep 1; done
Die bijdragen aan het inzichtelijk krijgen waar we wat kunnen doen. En je zult het begrijpen, ik ga hier niet de wiskundige formules deponeren om ASLR te kunnen bijpassen.
Laten we vooral Apple prijzen om zijn uitstekende implementatie, maar laten we ook alstublieft de beperkingen hiervan ons bewust van maken, opdat we deze bescherming ook optimaal benutten. En alleen al voor de beveiliging, is regelmatig herstarten:
EEN MUST!
"Het probleem van" het Apple CollectiefKijk: macOS is een uitstekend platform. De beveiligingsarchitectuur is serieus en verdient respect. Maar een platform is nooit sterker dan de gebruikers die het beheren. Dat geldt voor Linux, macOS, Windows en eigenlijk elk platform.
En hier is het sinistere deel van het schaapjes gedrag: het bijgeloof dat "nooit herstarten" een teken is van stabiliteit verspreidt zich. Het wordt een norm. Een aanvaller die een doelgroep wil aanspreken van goed opgeleide, vermogende gebruikers met een homogeen platform en een voorspelbaar gebruikspatroon heeft aan die norm genoeg om zijn aanval op te calibreren.
En ik heb ze, ook in mijn omgeving, Appel gebruikers die vol trots mij menen te moeten meedelen dat ze hun computer al 4 weken niet hebben herstart. De duistere kant van mijn persoonlijkheid schiet het brein vol met scenario's, zelfs voor de leuk, om de gebruiker eens goed te grazen te nemen met desnoods een onschuldig logboek van zijn (of haar) "intieme momenten achter het notebook" eens te mailen. Maar dan neemt (gelukkig) ratio en ethos de overhand, en blijft het een geirriteerde opmerking of, een diepe zucht met een compliment hoe geweldig is dat het kan. Wetende dat ...
De kracht van macOS wordt mede ondermijnd door het collectieve zelfvertrouwen van haar gebruikers. Niet door de technologie. De technologie is goed. Maar beveiliging is geen eigenschap van software alleen. Het is een gewoonte.
Dus nogmaals: herstart je machine. Niet omdat het moet van Apple. Maar omdat een aanvaller die weet dat jij dat nooit doet, een statistisch voordeel heeft dat jij hem cadeau doet.
En dat is zonde van een verder uitstekend platform. Want de aanvalsvectoren en gevaren nemen niet af, maar juist toe, zeker komende jaren.
Overigens, ben ik zelf ook geen heilige, al sluit ik meestal elke dag de computers volledig af. Maar ik type momenteel op een machine waar ik ingewikkelde zaken moet verwerken en hier dus een voorbeeld
HOE HET NIET MOET:
10:37:22 up 3 days, 3:10, 1 user, load average: 2.48, 1.62, 1.19Oftewel, bij de koffiepauze omstreeks 10:30 gaat dit systeem hier even aan een reboot

Dus, tijd voor koffie. Vriendelijke groet!
Doctor
