Bij het beveiligen van werkstations en servers worden technische beveiligingsmaatregelen genomen: we versleutelen de harde schijf, configureren wachtwoordpolicies, enzovoorts. Ook installeren we beveiligingssoftware, zoals antivirussoftware. Maar is dat laatste eigenlijk wel altijd verstandig? Nagenoeg alle systemen in een netwerk hebben antivirussoftware geïnstalleerd, van Windows-werkstations tot Linux-servers.
We vertrouwen deze gesloten software direct als het van een bekend it-beveiligingsbedrijf afkomstig is. Terwijl we alles dat intern ontwikkeld wordt, aan code-reviews onderwerpen, laten (penetratie)testen, en meenemen in risicoanalyses.
Het antivirusdilemma
Antivirussoftware is voor kwaadwillenden een perfect doelwit: de software is complex en draait doorgaans met hoge systeemrechten. Zodra ik hierover begin, krijg ik meestal direct het argument te horen dat deze software nu juist door security-experts is gemaakt. Dat is uiteraard waar, maar die mensen zijn niet anders dan u en ik: mensen. Ze maken fouten en hebben net als andere softwareontwikkelaars te maken met tijdsdruk vanuit de business.
Antivirussoftware leest nagenoeg alle bestanden die op de schijf worden weggeschreven, en sommige varianten ook al het netwerkverkeer om aanvallen te herkennen en blokkeren. Hierdoor kan je er als aanvaller relatief eenvoudig voor zorgen dat jouw data door deze software wordt gelezen. Het enige dat nodig is, is ervoor te zorgen dat een tijdelijk bestand op een systeem wordt aangemaakt, bijvoorbeeld via een website of door een netwerkpakket te sturen naar het systeem (waar vaak niet eens een service hoeft te draaien).
Enkele voorbeelden
Een mooi voorbeeld van een aanval op antivirussystemen was de decompressie-bom. Daarbij misbruikt een aanvaller een compressietechniek door deze recursief het bestand te laten uitpakken; hiermee kan een archiefbestand van 42KB bij verwerking door antivirus in het geheugen een gigabytes groot worden. In het verleden pakte een antivirusplatform zo’n bestand uit zonder de gebruiker hierover te informeren, waarna het systeem vastliep. Deze aanval is ondertussen al enkele jaren oud, en de meeste antivirussystemen hebben deze gemitigeerd.
Maar om te zeggen dat kwetsbaarheden in antivirussoftware iets van vroeger zijn en tegenwoordig niet meer voorkomen, is onjuist. Zo is begin 2016 door onderzoekers een risico gevonden in de antivirus van Comodo. Door de code van het systeem te lezen werd duidelijk dat de code-emulatie van dit systeem voor de heuristics-engine diverse Windows api-calls rechtstreeks aan Windows doorgeeft – waaronder functies om met cryptografische hardware te spreken en gegevens van het toetsenbord uit te lezen. Daardoor kon het antivirussysteem door een aanvaller worden ingezet als keylogger, terwijl een organisatie beveiligingssoftware nu juist inzet in de hoop daarmee dat soort malware te bestrijden.
Uiteraard is er naast deze kwetsbaarheden ook nog het ‘Big Brother-probleem’: diverse antivirussoftware stuurt informatie over het browsegedrag van gebruikers naar hun eigen centrale servers.
Een voorbeeld hiervan, en de meest recente die ik dit heb zien doen, is de antivirussoftware van Trend Micro. Deze stuurt de url’s die benaderd worden naar servers in Japan, waar de wetgeving omtrent privacy anders is dan hier in Europa, om er vervolgens met hun analysetools overheen te gaan. Dat daar een legitieme reden voor is, is duidelijk. Maar het is wel ’tracking’, iets waar we, getuige discussies over privacy, toch angstig over zijn.
Is dit wel iets waar je je gebruikers mee wil lastigvallen? Is dit bekend bij de privacy compliance officer? Voldoe je bij het gebruik van zo’n systeem nog wel aan Nederlandse wetgeving en Europese regels?
AV-avoidance en anti-antivirusindustrie
Naast het feit dat antivirus een extra aanvalsoppervlak toevoegt, is het voor aanvallers ook zeer eenvoudig om ze te omzeilen. Er is veel openbare informatie te vinden over hoe dit kan. Je ziet weliswaar dat antivirussystemen steeds betere emulatie toepassen en steeds beter worden in het vinden van polymorphische en metamorphische malware, maar er geldt nog altijd dat de aanvaller, om te winnen, maar één methode hoeft te vinden waarmee hij het antivirussysteem omzeilt. Het is een kat-en-muisspel, waarbij de antivirus-vendor altijd achter de feiten aan loopt.
Diverse partijen zijn actief bezig met het zoeken naar kwetsbaarheden in beveiligingssoftware om deze te verkopen of te publiceren. Zo biedt het bedrijf Gleg een Defpack Exploit Pack. Dit exploit pack bevat alleen exploits voor kwetsbaarheden in kwetsbaarhedenscanners, antivirussoftware, enzovoorts. Veel mensen zullen direct een negatieve mening hierover hebben; maar bedenk dat het in de praktijk aantonen van een kwetsbaarheid meer effectief is voor het creëren van bewustzijn bij de directie dan het droog benoemen van bijvoorbeeld cve-nummers.
Hoe de risico’s van malware te mitigeren?
Antivirus is geen kwakzalverij; het is wel degelijk effectief in het vinden van ‘common enemies’. Als veel systemen last hebben van hetzelfde stuk malware, dan wordt daarvan een signature gemaakt en kan deze voortaan worden gevonden. Met antivirus werkt het ongeveer zoals met flitspalen: als er genoeg mensen melden dat ergens een flitspaal staat, dan wint die bewering aan geloofwaardigheid.
Hoe mitigeer je de risico’s van onbekende malware dan wél? Zelf zou ik beginnen met bewustzijn: de meeste malware wordt door gebruikers gedownload, soms per ongeluk, maar de meeste malware heeft menselijke interactie nodig om te kunnen starten. (Dit uiteraard op de worm na, want die maakt misbruik van een kwetsbaarheid in software op het systeem. Goed patchbeleid is de beste bescherming daartegen.)
Conclusie
Het installeren van antivirussoftware is niet per definitie een risico, maar de mogelijkheid van kwetsbaarheden in deze systemen is wel iets om mee te nemen in risicoanalyses. Wij raden aan om het antivirusschip niet volledig te verlaten maar te benadrukken dat het geen panacee is. Ga na of de investering echt iets oplevert alvorens antivirus te installeren en kosten te maken in aanschaf, beheer, en performance. Zijn bewustzijnscampagnes, penetratietests, social engineering-tests en/of red teaming misschien een betere besteding van het (vaak al krappe) security-budget? Of laat in ieder geval de antivirussoftware onderzoeken op kwetsbaarheden, net zoals dat aan te raden is voor andere applicaties die nietvertrouwde gebruikersinvoer verwerken. Blind vertrouwen is nooit verstandig.
Robin Vossen, security consultant bij Madison Gurkha