De beveiligingswereld werd weer eens opgeschrikt door grote kwetsbaarheden met een opvallende naam: Shellshock en POODLE. In deze Focus op veiligheid besteden we ook aandacht aan nieuwe Linux-distributies voor beveiligingsprofessionals en gaan we terug naar de basis: de firewall instellen in Linux Mint.

Help: de firewall in Linux Mint

Linux Mint schakelt standaard de ingebouwde firewall uit. Wil je meer beveiliging, dan schakel je die eenvoudig in. Open daarvoor een terminalvenster (in de menuknop – Hulpmiddelen) en typ de volgende opdracht in:

$ sudo ufw enable

 

Firewall is actief en ingeschakeld bij het opstarten van het systeem.

Voer je wachtwoord in. Standaard blokkeert de firewall alle inkomende verbindingen en laat ze alle uitgaande verbindingen toe. Je kunt op elk moment de firewall terug uitschakelen met de opdracht sudo ufw disable. Je krijgt de status te zien met sudo ufw status verbose. Je kunt ook regels toevoegen, maar als je liever niet de commandline gebruikt, installeer je het best de grafische front-end gufw. Het programma is daarna onder de naam Firewall-instellingen in de menuknop en dan onder Voorkeuren te vinden. Je kiest in het programma een profiel en voegt dan onder Regels met het plusteken regels toe om verbindingen naar bepaalde toepassingen al dan niet toe te staan.

 Met gufw stel je de firewall grafisch in.

 

Shellshock

Bash, de shell die standaard in de meeste Linux-distributies, maar ook in OS X gebruikt wordt, bleek al sinds versie 1.13 (uit 1992) een kritieke beveiligingsfout te bevatten: Shellshock. In Bash is het mogelijk om een functie te definiëren die enkele opdrachten bevat. Als je die reeks opdrachten vaak na elkaar wilt uitvoeren, hoef je ze niet te herhalen, maar roep je enkel die functie aan. Als je echter in een omgevingsvariabele een Bash-functie definieerde, verwerkte de shell door die fout ook tekst die na de definitie van de functie kwam. Een onschuldig voorbeeld maakt dit duidelijk:

 

env x='() { :;}; echo kwetsbaar’ bash -c “echo Dit is een test”

 

Voer je bovenstaande opdracht in je Bash-shell uit en krijg je ‘kwetsbaar’ te zien, dan moet je Bash dringend upgraden, want dan is de shell kwetsbaar voor Shellshock. De opdracht bash -c start een Bash-shell en voert de echo-opdracht erna uit om de tekst “Dit is een test” te tonen. De env x=’…’ vóór de bash-opdracht definieert een omgevingsvariabele x en geeft die aan de bash-opdracht erna door. In dit geval definiëren we in die omgevingsvariabele een lege functie — () { :;}; — en voegen we erna een onschuldige opdracht — echo kwetsbaar — toe. Door de Shellshock-fout voert Bash die opdracht uit wanneer de omgevingsvariabele x verwerkt wordt, wat niet de bedoeling is. In de plaats kunnen immers heel wat minder onschuldige opdrachten komen.

Wat de fout zo ernstig maakt, is dat heel wat mechanismes gebruikmaken van een shell. Als je bijvoorbeeld een webserver met CGI draait en een Bash-script uitvoert voor bepaalde taken, kan een aanvaller de Shellshock-fout uitbuiten door in een HTTP-header, zoals User-Agent, een speciaal geprepareerde code te zetten. Die header wordt door Apache immers gekopieerd in een omgevingsvariabele HTTP_USER_AGENT die aan het Bash-script doorgegeven wordt.

 Ook Linux-clients die dhcp gebruiken om een IP-adres te verkrijgen, zijn kwetsbaar. Een dhcp-server kan immers extra opties aan clients doorgeven, zoals een url. Dhcp-clients kunnen die extra opties verwerken met Bash-scripts, die overigens doorgaans als root draaien. En ook de OpenSSH-server is op die manier uit te buiten. Gebruik je de optie ForceCommand om in te stellen dat een vaste opdracht uitgevoerd wordt als de gebruiker inlogt, dan wordt de opdracht die de gebruiker zelf opgeeft, gekopieerd naar de omgevingsvariabele SSH_ORIGINAL_COMMAND. Een kwaadaardige gebruiker kan hierin Shellshock misbruiken en zo dus willekeurige opdrachten uitvoeren, iets wat ForceCommand juist moest tegengaan…

POODLE

Beveiligingsonderzoekers van Google hebben een kwetsbaarheid gevonden in de encryptiestandaard SSL 3.0. De fout die de naam POODLE (Padding Oracle On Downgraded Legacy Encryption) gekregen heeft, heeft als gevolg dat een buitenstaander met ssl versleutelde netwerkpakketjes kan ontcijferen als hij toegang tot je netwerk heeft en een man-in-the-middle aanval uitvoert. Daarmee kunnen bijvoorbeeld sessiecookies gestolen worden.

Een aanvaller zet bijvoorbeeld een WiFi-hotspot op en hoopt dat iemand via de hotspot begint te surfen. Bij http-verbindingen injecteert de aanvaller dan JavaScript-code. Bij https-verbindingen onderschept de aanvaller het uitgaande netwerkverkeer en husselt de pakketjes door elkaar. De JavaScript-code vraagt aan de webbrowser van het slachtoffer om keer op keer een afbeelding van de webserver (zoals Gmail) te downloaden. Bij elke aanvraag voor de afbeelding hoort ook een sessiecookie. De hotspot husselt de netwerkpakketjes nu zo door elkaar dat het sessiecookie op het einde van de boodschap komt. Meestal wordt dat onzin als de server de boodschap met ssl probeert de ontcijferen, maar met eenn kans van 1 op 256 lukt het ontcijferen en leert de aanvaller één byte van het sessiecookie. De JavaScript-code gaat dan verder met een volgende byte tot het volledige cookie ontcijferd is.

Op het eerste gezicht is de fout niet zo kritiek, omdat ze in de verouderde standaard SSL 3.0 voorkomt die weinig gebruikt wordt. De meeste websites gebruiken immers het modernere TLS 1.0, 1.1 of 1.2. Het probleem is dat SSL 3.0 nog altijd ondersteund wordt door webbrowsers en webservers. Bovendien kan je browser gemanipuleerd worden om in plaats van het veiliger TLS gebruik te maken van het kwetsbare SSL 3.0.

Google en Mozilla hebben als reactie op POODLE al laten weten dat ze SSL 3.0 standaard niet meer ondersteunen in hun webbrowsers. In Firefox is dat vanaf versie 34 gebeurd en vanaf versie 35 zal het mechanisme SCSV (Signaling Cipher Suite Value) voorkomen dat je webbrowser gemanipuleerd wordt om een oudere SSL-versie te gebruiken. Chrome gebruikt SCSV al sinds februari 2014. Webservers zullen helaas niet zomaar dezelfde beslissing kunnen nemen. Er surfen immers nog altijd veel mensen met Internet Explorer 6.0, dat standaard SSL 3.0 ondersteunt. Als webservers geen SSL 3.0 meer ondersteunen, kunnen deze gebruikers de websites niet meer gebruiken. Ook OpenSSL heeft het SCSV-mechanisme ondertussen ingebouwd.


 Met POODLE kan een aanvaller sessiecookies stelen. Informatie: http://bit.ly/1DaMJY6 en http://bit.ly/1xyxaHb

 

En verder

Onderzoekers van Kaspersky Lab hebben malware ontdekt die zowel Windows systemen als Linux- en Cisco-routers aanvallen. De variant op BlackEnergy wordt in het wild gebruikt voor DDoS-aanvallen op servers, maar ook om vertrouwelijke gegevens te stelen. Drupal kreeg met een belangrijke fout te maken, een SQL-injectie. Google heeft een netwerk testingtool met de naam nogotofail uitgebracht, waarmee je eenvoudig controleert of je apparaten of mobiele apps kwetsbaar zijn voor bekende lekken in ssl/tls. De software werkt op Linux, Chrome OS, Windows, OS X, Android en iOS.

Er zijn heel wat nieuwe versies van beveiligingsgerelateerde Linux-distributies uitgekomen. Wie zijn privacy op internet wil beschermen, kan Lightweight Portable Security 1.5.5 of Tails 1.2 eens uitproberen. Stamus Networks brengt met SELKS 1.0 (Suricata Elasticsearch Logstash Kibana Scirius) een besturingssysteem op de markt rond Suricata, een populair opensource netwerk IDS (intrusion detection system) en IPS (intrusion prevention system). Voor liefhebbers van penetration testing is er het op Ubuntu 14.04 gebaseerde BackBox Linux 4.0 en wie ook forensische analyses wilt uitvoeren, kan dat met CAINE 6.0. Wil je jouw eigen firewall bouwen, kijk dan eens naar Untangle NG Firewall 11.0, Smoothwall Express 3.1 of IPFire 2.15 Core 84.