Onnodige diensten bereikbaar vanaf internet
CWE-1327CWE-668OWASP A05:2021Bijgewerkt 4 september 20264 min leestijd
Diensten die alleen intern nodig zijn maar toch aan het internet hangen databases, beheerpoorten, monitoringinterfaces, wachtrijen, worden geautomatiseerd gevonden en aangevallen. Ze vallen buiten het reguliere applicatiebeheer, draaien vaak met standaardinstellingen en zijn daardoor een aantrekkelijker ingang dan de applicatie zelf.
De meeste aandacht voor beveiliging gaat naar de applicatie, omdat dat het onderdeel is dat bewust aan het internet is gehangen. De ernstigste bevindingen zitten regelmatig naast die applicatie: een database, een beheerpoort of een monitoringinterface die er ongemerkt bij is komen te staan. Hieronder leest u hoe dat gebeurt en waarom die diensten zo aantrekkelijk zijn.
Welke diensten hangen onbedoeld aan het internet?
Van onnodige diensten aan het internet spreken we wanneer er poorten bereikbaar zijn die alleen intern een functie hebben. In de praktijk gaat het om een herkenbare verzameling: databases, caches, berichtenwachtrijen, zoekindexen, beheerinterfaces, monitoringdashboards, containerbeheerpoorten en beheerprotocollen voor de server zelf.
Bijna nooit is dat een bewuste keuze. Het ontstaat doordat een dienst zich standaard aan alle netwerkinterfaces bindt in plaats van alleen aan de lokale, doordat een firewallregel tijdelijk is opengezet en nooit is teruggedraaid, doordat een nieuwe server is uitgerold zonder dezelfde beperkingen als de vorige, of doordat een testopstelling in productie is beland.
Deze diensten zijn gevaarlijk omdat ze nooit zijn ontworpen om aan het internet te hangen. Ze gaan er in hun standaardinstellingen van uit dat wie ze kan bereiken, er ook bij hoort. Vaak betekent dat: geen authenticatie, of authenticatie met inloggegevens die iedereen kent. Het is als een gebouw met een goed beveiligde voordeur, waarnaast een luik naar de kelder openstaat omdat niemand verwachtte dat er iemand aan die kant zou lopen.
Hoe worden die diensten gevonden?
Kwetsbaar:
Een scan van buitenaf op de server van een applicatie levert meer op dan verwacht:
443/tcp open https applicatie (bedoeld)
22/tcp open ssh OpenSSH 8.2
3306/tcp open mysql MySQL 8.0.28
6379/tcp open redis Redis 6.2.6
9200/tcp open http Elasticsearch 7.10.2
2375/tcp open http Docker Engine API
Alleen de eerste hoort daar. De rest is bijvangst, en de ernst loopt sterk uiteen. De database is een doelwit voor een aanval op de inloggegevens. De cache draait in zijn standaardvorm zonder authenticatie, wat neerkomt op vrije toegang tot alles wat erin staat, vaak sessies en tokens. De zoekindex geeft in zijn standaardconfiguratie de volledige inhoud prijs aan wie erom vraagt. Verder de containerbeheerpoort is de ernstigste: die maakt het mogelijk containers te starten op de host, wat feitelijk neerkomt op het uitvoeren van code met hoge rechten.
Het vinden hiervan vraagt geen gerichte belangstelling. Het volledige adresbereik van het internet wordt continu gescand en de resultaten zijn doorzoekbaar. Een poort die opengaat, staat kort daarna in die overzichten.
Veilig:
# De dienst luistert alleen op de lokale interface
bind 127.0.0.1
protected-mode yes
requirepass <lang, willekeurig geheim>
# En de firewall weigert standaard, staat toe per uitzondering
ufw default deny incoming
ufw allow 443/tcp
ufw allow from 10.0.4.0/24 to any port 22
ufw enable
De twee maatregelen vullen elkaar aan en dat is bewust. Een dienst die alleen op de lokale interface luistert, is niet bereikbaar ook als een firewallregel verkeerd staat. En een firewall die standaard weigert, beschermt ook de dienst die na een upgrade weer aan alle interfaces gebonden blijkt.
Wat is de impact van onnodig bereikbare diensten?
De ernst loopt van middelzwaar tot kritiek, afhankelijk van de dienst. Bij een monitoringdashboard blijft het bij informatie over uw infrastructuur. Bij een database of cache zonder authenticatie is het een volledig datalek. Bij een containerbeheerpoort is het overname van de server.
Kenmerkend is dat de aanval geautomatiseerd verloopt en niet op u persoonlijk is gericht. Er wordt continu gescand op open poorten met bekende kenmerken, en wat reageert wordt geprobeerd. Uw omvang of zichtbaarheid doet er niet toe; het gaat om bereikbaarheid.
Deze diensten vallen bovendien buiten het reguliere beheer. De applicatie wordt getest, gepatcht en bewaakt. Een database die per ongeluk bereikbaar is, staat in geen enkel overzicht: er is geen logging naar uw centrale systeem, er is geen alarmering op mislukte inlogpogingen en er is niemand die de versie bijhoudt. Een aanvaller kan er daardoor langdurig actief zijn zonder op te vallen.
Hoe spoor je onnodig bereikbare diensten op?
De basis is een scan van buitenaf op het volledige poortbereik van elk adres dat bij de organisatie hoort. Dat is bewust van buitenaf: de vraag is niet welke poorten er open zouden moeten staan volgens de configuratie, maar welke er werkelijk antwoorden.
Per gevonden dienst wordt vervolgens bepaald welk product en welke versie het is, of er authenticatie vereist is, en of de standaardgegevens nog werken. Ook wordt gekeken of de dienst een bekende kwetsbaarheid draagt. Belangrijk is dat het adresbereik volledig is: naast de bekende servers gaat het om testomgevingen, om systemen bij leveranciers en om cloudresources die buiten het gebruikelijke beheer zijn aangemaakt. Verder wordt gekeken naar IPv6, dat bij firewallregels regelmatig wordt vergeten terwijl de dienst er wel op luistert. AssistSec begint een test standaard met deze inventarisatie, omdat wat hier wordt gevonden vaak bepalend is voor de rest van het onderzoek.
Hoe voorkom je onnodig bereikbare diensten?
- Laat diensten die alleen intern nodig zijn uitsluitend op de lokale interface of op een intern netwerk luisteren.
- Hanteer een firewall die standaard weigert en alleen per uitzondering toestaat.
- Ontsluit beheerprotocollen via een VPN of bastion, nooit rechtstreeks vanaf internet.
- Wijzig standaard inloggegevens en schakel authenticatie in op diensten die dat standaard niet doen.
- Neem IPv6 mee in uw firewallregels; die wordt regelmatig vergeten.
- Houd een overzicht bij van alle adressen en poorten die bij uw organisatie horen.
- Scan periodiek van buitenaf in plaats van te vertrouwen op de bedoelde configuratie.
- Ruim tijdelijke openstellingen actief op en leg een einddatum vast bij het aanmaken.
- Neem ook test- en acceptatieomgevingen en resources bij leveranciers mee in het overzicht.
Bronnen
Veelgestelde vragen
Hoe snel worden zulke diensten gevonden?
Binnen minuten tot uren. Het hele adresbereik van het internet wordt continu gescand en de resultaten zijn publiek doorzoekbaar. Een dienst die vandaag opengaat, staat morgen in een zoekmachine voor internetdiensten. Er is geen periode waarin iets 'nog niet is opgevallen'.
Is een firewall genoeg?
Alleen als hij standaard weigert en per uitzondering toestaat. Veel incidenten ontstaan doordat een dienst zich bindt aan alle netwerkinterfaces terwijl de firewallregel te ruim is of tijdelijk was opengezet. Combineer een restrictieve firewall met een dienst die alleen op de lokale interface luistert.
Wat is het gevaarlijkste dat men aantreft?
Databases zonder authenticatie, beheerinterfaces met standaardgegevens en containerbeheerpoorten. Die laatste geven vaak rechtstreeks de mogelijkheid om code uit te voeren op de host, zonder dat er een kwetsbaarheid voor nodig is.
Hoe houd ik dit op orde?
Door periodiek van buitenaf te scannen in plaats van te vertrouwen op de configuratie zoals die bedoeld was. Het verschil tussen die twee is precies waar deze bevindingen ontstaan: een tijdelijke regel die bleef staan, een nieuwe server met andere standaardwaarden.
Verwante artikelen
- KwetsbaarhedenCWE-1059A05:2021Verouderde API-versies blijven bereikbaarEen oude API-versie die naast de nieuwe blijft draaien, mist de controles die later zijn toegevoegd. Lees hoe aanvallers die omweg gebruiken.
- KwetsbaarhedenCWE-1188A05:2021Standaardbestanden van de webserver bereikbaarVoorbeeldpagina's, beheerconsoles en installatiebestanden die na installatie blijven staan, verraden uw platform en zijn soms misbruikbaar.
- KwetsbaarhedenCWE-290A01:2021IP-adres uit een header vertrouwdLeidt uw applicatie het IP-adres af uit een header, dan bepaalt de client dat adres. Lees hoe dat limieten en toegangsregels omzeilt.
- KwetsbaarhedenCWE-1104A06:2021Verouderde en kwetsbare componentenEen verouderde bibliotheek of webserver draagt publiek bekende kwetsbaarheden met kant-en-klare exploits. Lees hoe u dat beheersbaar maakt.
- KwetsbaarhedenCWE-16A05:2021Security misconfigurationSecurity misconfiguration uitgelegd: hoe standaardwachtwoorden, debug-modi en open cloud-buckets aanvallers binnenlaten, en hoe u dit voorkomt.