Elke Unix hardeningschecklijst leert het je eigenlijk wel: stop nooit de huidige werkdirectory in het executiepad van root. En met een goede reden. Want als het systeem bij het uitvoeren van een commando altijd in de huidige werkdirectory kijkt, is de kans groot dat je tijdens het uitvoeren van een systeemcommando per abuis een programma met dezelfde naam start dat zich in de betreffende directory bevindt. Voor Microsoft werd deze basis beveiligingsregel de afgelopen maand nog eens pijnlijk duidelijk. Niet in relatie tot het starten van uitvoerbare programmatuur zelf, maar wel in relatie tot programma-onderdelen. Het blijkt voor hackers mogelijk om middels standaard Windows functionaliteit tijdens het openen van een Powerpoint Slide of een PDF een virus of een ander kwaadaardig programma op de computer van een niets vermoedende gebruiker te plaatsen.

Wat gebeurt er precies
Hackers plaatsen een kwaardig programma dat dezelfde naam heeft als een echt programmaonderdeel in de werkdirectory van een gebruiker. Als de gebruiker een applicatie start, start deze applicatie het kwaadaardige programma automatisch mee op, waardoor de gebruiker een virus of andere malware op zijn systeem krijgt.

Iets meer details
Op het moment dat je een Windows applicatie opstart, roept deze voor de verschillende programma-onderdelen tijdens het laden veelal verschillende bestanden aan. Veel van deze bestanden staan bekend als een "DLL-bestand". Tijdens het programmeren kan de software ontwikkelaar deze DLL-bestanden (programma-onderdelen) op verschillende manieren laden. De eenvoudigste manier is door het besturingsysteem (Windows) de opdracht te geven dit bestand zelf op de standaardlocaties op te zoeken. Deze standaard locaties zijn:
- De directory van waaruit de applicatie laadt
- De huidige werkdirectory (CWD)
- De "system" directory
- De 16-bit "system" directory
- De Windows directory
- De directories die in het executie pad van de gebruiker voorkomen

Doordat de huidige werkdirectory vooraf niet is te voorspellen, is deze een erg onzekere factor in het geheel. Microsoft is al een jaar of 10 bekend met dit probleem (men noemt het zelf functionaliteit), maar heeft het (vermoedelijk vanwege de vele applicatieafhankelijkheden) nooit structureel opgelost. Wel is met ingang van Windows XP SP2 de voorkeursvolgorde van de bovenstaande directories aangepast, waardoor de impact van het probleem iets kleiner werd.

Toen zich enige tijd terug de kwetsbaarheid met het laden van shortcut-icoontjes voordeed, werden verschillende beveiligingsonderzoekers weer eens getriggerd om naar de oorzaak van deze problematiek te kijken. Door de vele (media) aandacht die er voor het probleem ontstond (waarmee de bij dit risico horende dreiging veranderde) moest Microsoft wel reageren. Inmiddels maken hackers actief gebruik van deze ontwerpfout.

Wat kunnen we hier tegen doen
Er komt voor dit probleem geen security patch!
Het is dus alleen op te lossen door Windows anders in te stellen. Hiervoor heeft Microsoft uitgebreide informatie beschikbaar gesteld.

Doordat de wijziging een grote impact op bestaande bedrijfsapplicaties kan hebben, is het belangrijk om de functioneel applicatiebeheerders (zoals altijd, maar in dit geval misschien een beetje extra) nauw te betrekken bij de noodzakelijke veranderingen. Microsoft geeft ons een aantal opties. De belangrijkste:
1. Verwijder de huidige werkdirectory volledig uit het standaard zoekpad van DLL bestanden.
Deze optie is het meest veilig, maar heeft ook de grootste impact op bedrijfsapplicaties. Dit veroorzaakt bijna gegarandeerd bij elk groot bedrijf productieverstoringen.
Instelling: CWDIllegalInDLLSearch = 0xffffffff
2. Sta het een applicatie niet toe om een DLL bestand uit een WEBDAV directory te laden.
WEBDAV directories maken het mogelijk om door firewalls en proxies heen op internet directories te benaderen. Deze optie is (vanwege de internetkoppeling) voor hackers het eenvoudigst te misbruiken. Deze instelling zal vermoedelijk relatief weinig conflicten veroorzaken en neemt het grootste deel van de dreiging weg.
Instelling: CWDIllegalInDLLSearch = 1
(Indien er op de werkplek geen gebruik wordt gemaakt van WEBDAV is het ook mogelijk deze functionaliteit volledig uit te schakelen. Dit heeft in relatie tot dit risico hetzelfde effect.)
3. Sta het een applicatie niet toe om een DLL bestand uit een WEBDAV directorie of een netwerkshare te laden. Indien een applicatie direct van een share wordt gestart, worden DLL's wel geladen. Deze optie neemt zowel in relatie tot internet als het interne netwerk de belangrijkste risico's weg. Deze optie vereist iets meer testwerk dan de vorige, maar zal voor veel gebruikers vermoedelijk haalbaar zijn.
Instelling: CWDIllegalInDLLSearch = 2

Verder is het nog mogelijk om applicatiespecifieke instellingen door te voeren. Lees hierover meer op de website van Microsoft.

Gezien de grote risico's die deze kwetsbaarheid met zich meebrengt raad ik iedereen aan om de impact van deze fout zo snel mogelijk te laten evalueren door de werkplek en applicatiebeheerders. Op deze manier kunnen passende beschermingsmaatregelen worden geïntroduceerd voordat misbruik van deze kwetsbare functionaliteit een grote vlucht neemt.