Elke Unix-hardeningchecklist leert het: stop nooit de huidige werkdirectory in het executiepad van root. Want als het systeem bij het uitvoeren van een commando altijd in de huidige werkdirectory kijkt, is de kans groot dat je per abuis een programma met dezelfde naam start dat zich in die directory bevindt. Voor Microsoft werd deze basisregel recent pijnlijk duidelijk — niet voor uitvoerbare programmatuur zelf, maar wel voor programma-onderdelen (DLL’s).
Het blijkt voor hackers mogelijk om via standaard Windows-functionaliteit tijdens het openen van een PowerPoint of PDF een virus of een ander kwaadaardig programma op de computer van een nietsvermoedende gebruiker te plaatsen.
Wat gebeurt er precies?
Hackers plaatsen een kwaadaardig programma met dezelfde naam 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 malware op zijn systeem krijgt.
Iets meer detail
Op het moment dat een Windows-applicatie opstart, roept deze voor de verschillende programma-onderdelen tijdens het laden veelal DLL-bestanden aan. De eenvoudigste manier voor een ontwikkelaar om dit te doen is door Windows de opdracht te geven het bestand zelf op te zoeken. De standaard zoeklocaties zijn in deze volgorde:
- De directory van waaruit de applicatie laadt
- De huidige werkdirectory (CWD)
- De “system”-directory
- De 16-bit “system”-directory
- De Windows-directory
- Directories in het executiepad van de gebruiker
Doordat de huidige werkdirectory vooraf niet is te voorspellen, is dit een erg onzekere factor. Microsoft is al 10 jaar bekend met dit probleem (men noemt het zelf ‘functionaliteit’), maar heeft het nooit structureel opgelost vanwege de vele applicatieafhankelijkheden.
Wat kunnen we hiertegen doen?
Er komt voor dit probleem geen security patch. Het is dus alleen op te lossen door Windows anders in te stellen. Microsoft heeft hiervoor uitgebreide informatie beschikbaar gesteld. De belangrijkste opties:
- Optie 1 (meest veilig): Verwijder de huidige werkdirectory volledig uit het standaard zoekpad. Dit veroorzaakt bijna gegarandeerd productieverstoringen bij grotere bedrijven.
CWDIllegalInDLLSearch = 0xffffffff - Optie 2 (aanbevolen startpunt): Sta een applicatie niet toe een DLL uit een WebDAV-directory te laden. Relatief weinig conflicten en neemt het grootste deel van de internetdreiging weg.
CWDIllegalInDLLSearch = 1 - Optie 3 (evenwichtig): Sta een applicatie niet toe een DLL uit een WebDAV-directory of een netwerkshare te laden. Neemt zowel internet- als interne netwerkrisico’s weg.
CWDIllegalInDLLSearch = 2
Gezien de grote risico’s die deze kwetsbaarheid met zich meebrengt, is het advies om de impact zo snel mogelijk te laten evalueren door werkplek- en applicatiebeheerders, zodat passende beschermingsmaatregelen kunnen worden doorgevoerd.