Kennis Blogs Voorkom risico's door CVE-2021-42574

Voorkom risico's door CVE-2021-42574

Op 1 november 2021 is er een nieuwe vulnerability bekendgemaakt in het software-landschap, namelijk CVE-2021-42574. Het heeft potentieel een grote impact, zie deze voorbeelden. Deze aanvalsmethode maakt het mogelijk om vulnerabilities te injecteren en verbergen in legitieme source code, zonder dat deze zichtbaar is in code review. Dit is vooral een risico bij open-source dependencies. De impact is dermate groot dat we jullie bewust willen maken van deze kwetsbaarheid. Oftewel, het is een - makkelijk te misbruiken - kwetsbaarheid die het mogelijk maakt om ongemerkt malicious code in een open-source library (dependency) te introduceren. 

 

Welke maatregelen kan ik treffen?

We willen iedereen die werkt met open-source libraries dringend aanraden om deze samenvatting van de vulnerability door te lezen. Optioneel kun je, voor meer informatie, de bijbehorende paper lezen. Ga vervolgens na waar jullie (mogelijk) geraakt worden door deze kwetsbaarheid en voer zo snel mogelijk updates en security patches door. De aanvalsvector is zeer groot. 

 

Maak je gebruik van een self hosted-oplossing voor je source control software? Zorg er dan voor dat je de laatste patches hebt uitgerold. Ook is het verstandig om alert te zijn op de software dependencies die je binnenhaalt vanaf open source-projecten. Het kan namelijk zijn dat hier al vulnerabilities aan zijn toegevoegd, zonder dat de code owners dit door hebben. Het is belangrijk om snel security patches bij te werken voor software en in brengen te hebben welke vulnerabilities er in je dependencies zitten. Controleer deze op CVE’s. Hiervoor kan je verschillende tooling gebruiken, zoals:

Voorbeeld

 

Een voorbeeld van een aanvalsvector is een if statement, waarbij de logica aangepast wordt. In VSCode ziet dit er als volgt uit:

 

Screenshot 2021-11-03 at 15.00.19

Bij het draaien van deze code, ontstaat de volgende output:

 

❯ go run test.go 
You are an admin.


Als je de encoding aanpast naar DOS (CP 437), dan is te zien dat de unicode characters er tussen staan:

Screenshot 2021-11-03 at 14.59.59

Detecteren van bidirectional unicode characters

De aanval werkt doormiddel van bidirectional unicode characters, waardoor het mogelijk is om tekst te verbergen of logica te veranderen.

Wil je in je source code controleren of deze unicode characters gebruikt worden? De mensen van haveyoudebuggedit hebben een detector gemaakt die de betreffende unicode characters kan detecteren.

Voor Gitlab kan je deze draaien door gebruik te maken van deze job:

 

trojansource-detector:
 image: ghcr.io/avisi-cloud/trojansourcedetector:1.0.1
 script:
    - trojansourcedetector


Wil je dit via een Docker run uitvoeren, dan kan je dit doen via het volgende commando:

 

docker run -v $(pwd):/build ghcr.io/avisi-cloud/trojansourcedetector:1.0.1 


Hiermee controleer je op de vulnerability voor alle source files binnen de huidige working directory.

 

Extra informatie

Wil je meer informatie over deze CVE? Dan zijn de volgende artikelen ook interessant: