image

Onderzoeker vindt via fuzzing 11 kwetsbaarheden in FreeRADIUS

maandag 17 juli 2017, 15:59 door Redactie, 7 reacties

Onderzoeker Guido Vranken heeft via fuzzing 11 kwetsbaarheden in FreeRADIUS gevonden, ongeveer net zoveel beveiligingslekken als in de afgelopen tien jaar in de software werden ontdekt. FreeRADIUS is de meest gebruikte RADIUS-server in de wereld. RADIUS (Remote Authentication Dial In User Service) is een AAA (authenticatie, autorisatie en accounting) systeem waar grote internetproviders, telecombedrijven, Fortune 500-bedrijven en andere organisaties gebruik van maken om gebruikers toegang tot netwerken of netwerkdiensten te geven.

Vranken had eerder al via fuzzing kwetsbaarheden in OpenVPN gevonden. Een probleem in OpenVPN bleek ook in FreeRADIUS aanwezig te zijn, wat Vranken vervolgens rapporteerde. Daarop vroegen de ontwikkelaars van FreeRADIUS aan Vranken om hun software te fuzzen. Fuzzing is een populaire manier voor het vinden van bugs en kwetsbaarheden in software. Hierbij wordt een programma of een stuk software met allerlei datastromen bestookt, wat vervolgens tot crashes of fouten kan leiden. Die crashes kunnen vervolgens op onbekende beveiligingslekken wijzen.

Via zijn fuzzer ontdekte Vranken 11 kwetsbaarheden die tot een denial of service en in twee gevallen ook tot het uitvoeren van willekeurige code konden leiden. Volgens de FreeRADIUS-ontwikkelaars zijn RADIUS-servers op een privénetwerk die alleen door beheerde apparaten toegankelijk zijn waarschijnlijk veilig. In het geval de RADIUS-server onderdeel van een 'roaming consortium' is, dan kan die door alle gebruikers van dit consortium worden aangevallen. "Als je RADIUS-server aan het publieke internet hangt, dan volg je niet de best practices en kan iedereen je systeem aanvallen", aldus de ontwikkelaars.

Gezien de omvang van de kwetsbaarheden laten de ontwikkelaars zich ook uit over de veiligheidsaspecten van het programmeren in C. "C is als het om security gaat een verschrikkelijke taal", zo laten ze weten. De ontwikkelaars wijzen erop dat ze de afgelopen jaren allerlei maatregelen hebben genomen om de veiligheid van hun code te verbeteren. "Zoals de resultaten laten zien waren die processen niet voldoende om voor veilige C-code te zorgen." Daarom gaan de ontwikkelaars een fuzzer in alle toekomstige versies van FreeRADIUS integreren. De problemen die Vranken ontdekte zijn verholpen in versies 2.2.10 en 3.0.15 van de software.

Reacties (7)
17-07-2017, 18:29 door Anoniem
Als je je radius server rechtstreeks vanaf het internet laat raadplegen heb je sowieso niet begrepen hoe je veilige netwerken maakt...

En de opmerking over C is ook niet helemaal terecht, je kunt in werkelijk iedere taal gevaarlijke code maken.

Terzijde: het veiligste bruikbare OS is volledig in C en waar nodig in assembler geschreven: OpenBSD.
18-07-2017, 00:37 door Briolet
Door Anoniem: Als je je radius server rechtstreeks vanaf het internet laat raadplegen heb je sowieso niet begrepen hoe je veilige netwerken maakt...

Tja, dat doet Ziggo wel met hun WifiSpots. En volgens mij de Fon router (o.a.door kpn gebruikt) ook.
18-07-2017, 06:28 door karma4
Door Anoniem: ....
En de opmerking over C is ook niet helemaal terecht, je kunt in werkelijk iedere taal gevaarlijke code maken.

Terzijde: het veiligste bruikbare OS is volledig in C en waar nodig in assembler geschreven: OpenBSD.
Daar heb je gelijk in, sterker het helemaal niet terecht.
Veilige software bereik je door een gedegen ontwerp met daarbij allemaal behoorlijke input controles en meerdere lagen van als er eeen bepaald iets fout gaat wat dan scenario's.

De enige fouten die je niet volledig kan elimineren zijn die in de onderliggende delen zoals compiler interpreters os laag hardware etc.
18-07-2017, 08:50 door Anoniem
Door Anoniem: Als je je radius server rechtstreeks vanaf het internet laat raadplegen heb je sowieso niet begrepen hoe je veilige netwerken maakt...

En de opmerking over C is ook niet helemaal terecht, je kunt in werkelijk iedere taal gevaarlijke code maken.

Terzijde: het veiligste bruikbare OS is volledig in C en waar nodig in assembler geschreven: OpenBSD.

Je hebt niet altijd de luxe dat het hele netwerk dat je Radius server moet kunnen bereiken allemaal 'trusted' devices zijn.
Het "hele Internet" is inderdaad wel de worst case, maar een heel grote userbase als untrusted clients is ook onwenselijk.

Verder, in C is het in vergelijking met andere talen toch wel erg makkelijk om fouten met security impact te maken - zelfs voor erg goede programmeurs . Er zijn plekken waar de controle die C de programmeur geeft over geheugen layout/allocatie en access nodig zijn, en OS kernels zijn het bekendste voorbeeld.
Maar er is bijvoorbeeld ook een uitstekende , snelle en veel gebruikte AAA server (Radius en Tacacs+) geschreven in Perl - alleen die is niet gratis.
18-07-2017, 12:22 door [Account Verwijderd] - Bijgewerkt: 18-07-2017, 12:26
[Verwijderd]
18-07-2017, 14:08 door Anoniem

Je hebt niet altijd de luxe dat het hele netwerk dat je Radius server moet kunnen bereiken allemaal 'trusted' devices zijn.
Het "hele Internet" is inderdaad wel de worst case, maar een heel grote userbase als untrusted clients is ook onwenselijk.

Toch wel.

Het is niet omdat de "inhoud van een website" bereikbaar moet zijn voor het internet, je de hele "webserver" moet bereikbaar maken. Je zet er een een reverse proxy, een web application firewall, o.i.d. voor.

Ik zie geen enkele reden waarom je een RADIUS server rechtstreeks bereikbaar zou willen maken. Normaal is het de applicatie waarop je wil inloggen die de RADIUS server zal contacteren om je te authenticeren.
18-07-2017, 16:32 door Anoniem
Door Anoniem:

Je hebt niet altijd de luxe dat het hele netwerk dat je Radius server moet kunnen bereiken allemaal 'trusted' devices zijn.
Het "hele Internet" is inderdaad wel de worst case, maar een heel grote userbase als untrusted clients is ook onwenselijk.

Toch wel.

Het is niet omdat de "inhoud van een website" bereikbaar moet zijn voor het internet, je de hele "webserver" moet bereikbaar maken. Je zet er een een reverse proxy, een web application firewall, o.i.d. voor.

Ja en ? Dan is het die reverse proxy, of web application firewall die solide moet zijn.

En dan nog, de reverse proxy moet untrusted-client data doorzetten naar de webserver.
Misschien na filtering, als toegestane data en URLs wel filterbaar te omschrijven zijn, maar er blijft iets staan dat het zware werk moet doen, en de webserver moet kunnen omgaan met alles dat door de reverse proxy doorgelaten (moet) worden.
. En iemand die dat ding goed moet configureren.


Ik zie geen enkele reden waarom je een RADIUS server rechtstreeks bereikbaar zou willen maken. Normaal is het de applicatie waarop je wil inloggen die de RADIUS server zal contacteren om je te authenticeren.

Het zijn niet alleen "applicaties" .
Denk in de richting van "Alle CPEs van heel comcast" .(of heel ziggo) . Of Alle CPEs van alle providers gezamelijk met wie men roaming (netwerk/wifi) mogelijkheid heeft .
Dat is een heel grote aantal plekken vanwaar men rechtstreeks , of via een relay data naar een Radius server kan sturen .

Het is dan wel kleiner dan "heel internet" , maar er zijn mensen verantwoordelijk voor Radius/AAA servers met dergelijke bereikbaarheid , en dan heb je niet de luxe dat je clients beperkt zijn een handvol trusted application servers die beheerd worden door collega's.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.