Nieuwe metingen: login portals en het login plaza. Lees er meer over op de eigen blogpost hierover.
Nieuwe meting op de http referrer policy. De standaard is niet privacyvriendelijk, dus we verwachten dat je deze hebt ingesteld op iets dat wel de privacy respecteert zoals ‘no-referrer’ of ‘same-origin’. We kijken nog niet naar de inhoud van deze header, dat gaan we wel doen.
Nieuwe meting op Windows File Sharing / Samba. We verwachten dat deze poorten dicht zitten omdat dit een ongebruikelijke manier is om bestanden te delen via het publieke internet: file hosting kan gewoon via een https pagina met een directory index bijvoorbeeld. Deze hebben we even uitgezet ivm teveel false positives.
Functionaliteit basisbeveiliging.nl
Toevoeging van een maandoverzicht (in beta), waarop de grote wijzigingen van een maand te zien zijn. Dit loopt heel soms nog uit de pas met de echte metingen, ook is de vertaling nog niet helemaal afgerond.
Toevoeging van het Login Plaza per sector. Lees er alles over in het artikel hierover.
Er is een zoekbalk toegevoegd waarmee je kan zoeken over alle kaarten heen. Je kan hier zoeken op organisaties en domeinen. Dus als je wil weten waar die ene domeinnaam bij hoort krijg je ook het antwoord. Wat voorbeelden:
Zoeken naar “zeto okdek nopom” levert het Ministerie van Economische Zaken en Klimaat
Zoeken naar “https://cip-overheid.nl” levert het UWV
Zoeken naar “Gemeente Raalte” levert… je raad het al: Gemeente Raalte.
Door te zoeken naar plaatsnamen zie je ook weleens wat er in de buurt zit, zoals het voorbeeld hieronder, maar dat is omdat ze die plaatsnaam noemen in hun subdomeinen. Het is dus (nog) geen geografische zoekopdracht.
Je kan nu in rapporten aangeven of je hoog, midden, laag of goede bevindingen wil zien. Dat helpt met het focussen bij het oplossen van problemen.
Je kan nu de historie van de grafieken bepalen: 7 dagen, 30 dagen, 90 dagen of 365 dagen. Dat in combinatie met de tijdmachine op de site natuurlijk.
Diverse bugfixes op http header scans. Er zijn nu geen onjuiste metingen meer wanneer we worden doorgestuurd naar een andere site. Ook zijn de header metingen op protocol-mix sites weggehaald, sites zoals http://example.nl:443
Diverse kleine wijzigingen zoals het verplaatsen van de pagina-context naar het hoofdmenu. De rapporten pagina is iets overzichtelijker.
Data op Basisbeveiliging
Gemeentelijke herindelingen zijn doorgevoerd. We verwelkomen de gemeente Voorne aan Zee. Bij een samenvoeging worden ook alle oude domeinen meegenomen totdat we daar niets meer meten omdat alles is opgeruimd.
We hebben de VNG Realisatie en de VNG samengevoegd tot 1 organisatie. Ironisch genoeg staat deze organisatie op nummer 2 van slechtst beveiligde organisaties op de gemeentekaart, dat terwijl ze een toegewijde informatiebeveiligingsdienst hebben. Ook daarvan hebben we het nieuwe domein informatiebeveiligingsdienst.nl toegevoegd, in de hoop dat dat een goed voorbeeld is voor de rest van de organisatie, want de ibd zelf loopt voorop qua beveiliging.
Deze maand een extra leuke verassing: een overzicht van publieke login portals van de overheid. We hadden natuurlijk de VPN portals wel verwacht, maar er is ook meer dan teveel te vinden dat naar onze mening niet publiek hoort.
Deze portals zijn te vinden op een nieuw onderdeel van de basisbeveiliging site: Login Plaza. We hopen dat dit niet de ‘voorpagina’ word van allerlei ambtenaren wanneer ze de linkjes kwijt zijn naar deze systemen :).
De metingen zijn nog aan het inladen: we zitten nu op 20% en hebben meer dan 600 portals gevonden. Dat belooft wat 🙂
Overheid: Het is tijd om het aanvalsoppervlak te reduceren.
Overheid ❤️ phpMyAdmin
Een voorbeeld is database-beheer tool phpMyAdmin: een web interface om de inhoud van je database aan te passen. Het is een geliefde tool, wij kennen em in hart en nieren… maar is het nou echt de bedoeling dat de hele wereld hierop mag proberen in te loggen? Bij de overheid? Wij denken van niet. Ons advies is dus: weghalen. Gewoon achter het VPN en niet op een ‘verborgen adres’ please…
Er zijn twee manieren waarop we dit meten. De eerste is een ‘ontdekking’ en de tweede is een ‘verificatie’.
De ‘ontdekking‘ fase bestaat uit het proberen van allerlei verschillende paden waarop bekende software te vinden is. Hier word dus gekeken of de map “phpMyAdmin” bestaat op het domein https://example.nl: https://example.nl/phpMyAdmin/
Dit gebeurd op een heel lage intensiteit. Over langere tijd checken we op honderden verschillende stukken software. We doen hier met opzet lang over zodat het niet in de weg zit van ander verkeer. Om het nog minder intens te maken doen we dit ook maar eens per twee maanden. In mei komt dus de tweede ronde.
De ‘verificatie‘ fase is een doelgerichte check. We kijken alleen of het gevonden portal er nog staat. Dat zijn dus net zoveel verzoeken als portals: meestal 1 of 2. Dit doen we om de dag zodat de gegevens op de site actueel zijn. Zo kan een beheerder ook zien dat een portal is verdwenen en het probleem is opgelost.
Zonder oordeel op de kaart
Binnenkort zullen we ook een oordeel plakken aan deze bevindingen. Deze zal grofweg op de volgende manier worden gekleurd op de kaart:
Rood: een login-portaal voor beheer: zoals phpMyAdmin, Django Admin, Grafana, Metabase en dergelijke producten.
Oranje: een login-portaal voor het beheren van een content-management systeem zoals WordPress, Drupal, Typo3 of minder intense tools als Matomo. Eind van 2023 word dit ook rood.
Groen: een login-portaal voor het gebruiken van een VPN. Waarom hier een web portaal voor nodig is? Mogelijk word dit dus ook rood, maar hier zit voor ons nog wat huiswerk: we zien namelijk dat er meer dan 20 verschillende producten worden gebruikt en we zullen moeten verdiepen in hoe ze werken en wat realistisch is qua oordeel.
In de helpdesk kijken we naar vragen die binnenkomen via de mail en geven we een kort antwoord op vragen die vaker binnenkomen.
Dienst voor medewerkers via het open internet
Een organisatie die graag mailtjes stuurt maakt gebruik van een standaardpakket. Medewerkers kunnen op die omgeving inloggen en de nieuwsbrieven opstellen.
Wij raden aan om dit soort diensten niet publiek te zetten: die vraag was voorgelegd aan de hoster. De hoster geeft aan bang te zijn om deze aanpassing door te voeren. Het zou meer problemen leveren dan het oplost. Dus ze gaan dat niet doen.
Oplossing: In dit geval zien we een Plesk PHP omgeving staan. Beiden zijn bekend en geroemd om hun vele kwetsbaarheden. Dat betekent voor een aanvaller: “Rustig wachten op de dag… van een nieuwe kwetsbaarheid… van een nieuwe kwetsbaarheid“. Dan kan IT weer fijn in het midden van de nacht / carnaval stekkers ergens uit halen, patchen, datalekmeldingen sturen enzovoorts. All in a good days work: maar je kan ook kiezen voor nachtrust, een goede reputatie en een stabiele dienstverlening.
Het is alsof je een deel van de interne organisatie buiten het gebouw naast de ingang zet. In plaats van binnen met verwarming, een beveiligingspoortje en een receptie. Iedereen kan er naartoe lopen en proberen binnen te komen: via gokken op het loginformulier of via een (nieuwe) kwetsbaarheid. Net zoals je bij een bedrijf een veiligheidspoortje hebt, wil je voor de toegang tot dit soort diensten altijd een controle uitvoeren.
Daar is in dit geval ook wel een poging tot gedaan. In plaats van de dienst op het standaard poort 443 aan te bieden, word deze “verborgen” op poort 8443. Dat soort security through obscurity werkt vertragend, maar uiteindelijk niet.
Er zijn diverse manieren om diensten te verbergen voor de buitenwereld. Het mooiste is achter een VPN, waarbij er publiek niets meer te vinden is. Een medewerker logt in op het deel VPN en kan dan naar mailing.intern.belangrijkeorganisatie.nl gaan om het werk te doen. Het is ook mogelijk om toegang op basis van certificaat of IP in te richten: dan kan een buitenstaander zien dat er nog wel *iets* is, maar niet meer wat. Dat is natuurlijk minder mooi en uiteindelijk ook meer werk. Er zijn vast nog wel andere oplossingen te bedenken. Wij gaan altijd voor de optie om zo min mogelijk diensten over het open internet aan te bieden.
Onjuiste header meting
We kregen de melding dat we onterecht bevinden dat bepaalde http security headers ontbreken. We gingen op onderzoek uit.
Oplossing: Hier hebben we inderdaad een fout gemaakt. We stuurde een “Host” header mee, maar hielden geen rekening met dat we konden worden doorgestuurd. Dat betekent dat we de verkeerde site (“Host”) opvroegen nadat we werden doorgestuurd naar een andere site.
We hebben dit aangepast.
Ook zagen we dat we http headers aan het meten waren op sites als http://example.nl:443. Dan sturen we dus met opzet een onversleuteld verzoek naar een versleutelde pagina. Een gemiddelde webserver geeft dan een behulpzame waarschuwing dat dit niet is wat je wil. Om ook daar op headers te controleren gaat wel erg ver, dus dat hebben we even uitgezet. We kijken daar wel naar andere dingen zoals versienummers bijvoorbeeld.
In de helpdesk kijken we naar vragen die binnenkomen via de mail en geven we een kort antwoord op vragen die vaker binnenkomen.
Schunnige subdomeinen bij de overheid?
Dat de overheid veel sites heeft weten we. Een van onze bezoekers wees ons op een mooie website: platformhoutrook.nl. Er werd gewezen op het bestaan van het subdomein “cleavage.platformhoutrook.nl” op onze site en daarna nog wat andere. Mogelijk is dat niet de bedoeling.
Oplossing: Eerst dachten we: misschien heeft iemand bij de overheid gewoon slechte smaak. Hout… houthakken… cleavage… lame. Maar er blijkt iets anders aan de hand te zijn. In de archieven van het domein blijkt dat er talloze subdomeinen zijn aangemaakt: bustywifey, giggles, friendsworld, sniper en honderden anderen. Op de site zelf staan google ads.
Het is duidelijk dat daar iemand met matige bedoelingen bezig is, en gewoon het domein heeft gekocht. Het platform achter deze site is namelijk in rook op opgegaan opgeheven in 2021 en kort daarna begonnen de problemen. We hebben het domein bij ons op verwijderd gezet en alle onderliggende domeinen geofferd aan onze hamsters. Er is ook een mailtje gestuurd aan de maker van de brondata.
Er word aan gewerkt!
Soms krijgen we verklaringen binnen waar we graag iets mee willen, maar niets mee kunnen.
Zo kregen we de melding dat men RPKI aan het toevoegen is op een site. Het duurt nog ongeveer vier maanden voordat dit af is. “De doorlooptijd is hoog, maar het staat op de roadmap.”
Oplossing: Supergoed nieuws dat hieraan wordt gewerkt! Dit is namelijk 1 van de paar laatste oranje metingen bij deze organisatie. So close!
De comply or explain functie is bedoeld voor verklaringen waarbij de afwijking iets veilig of veiliger maakt. Het gaat om iets dat “by design” wordt toegepast. Dat is nu niet het geval, daarom kunnen we de bevinding niet wegstrepen.
Een andere reden is dat we geen toezeggingen of beloften willen verwerken in een uitleg. We hebben dit in een ver verleden wel gedaan en daar werd ook goed gebruik van gemaakt. Maar wat je dan ziet is dat het soms niet of verkeerd wordt opgeleverd: dan staat iets ten onrechte als correct op de site. Dit hebben we dus geschrapt.
In de helpdesk kijken we naar vragen die binnenkomen via de mail en geven we een kort antwoord op vragen die vaker binnenkomen.
Intrusion attacks bij bezoeken site…
De eerste vraag gaat over een firewall. Deze ziet een intrusion attack als we de website bezoeken via http://. Het verkeer via https werd geweigerd. Dus basisbeveiliging ziet alleen een blokkade-website en dat is niet de site die de beheerder verwachtte.
Oplossing: Als je niet gemeten wil worden, dus bijvoorbeeld ip-restricties toepast, dan moet je dat op alle endpoints doen: ook op http://. Ons vermoeden: De firewall herkent ons gewone bezoek niet als een bekend IP, dus blokkeert dat als ‘intrusion’. Maar we zouden deze website helemaal niet mogen zien natuurlijk, want het is maar een gewoon websitebezoek.
Beheer op een vreemde poort
De tweede vraag ging over een vreemd poortnummer. We geven daar een oranje beoordeling aan. De hoster van de site gebruikte dit poortnummer om beheer uit te voeren via het plesk beheersysteem.
Oplossing: Voor iedere vorm van beheer (van overheidssites) raden we een VPN/afgescheiden netwerk aan. Hierdoor is zo’n beheerpanel niet meer bereikbaar via het publieke internet: dus veel minder mensen die het kunnen vinden en er een aanval kunnen uitvoeren. Er zijn natuurlijk regelmatig kwetsbaarheden in dit soort beheerpanelen: ze geliefd door aanvallers.
Op de schermprint zie je geen 2e factor, wat wel gebruikelijk is voor beheerpanelen. Het kan natuurlijk zijn dat je die vraag pas krijgt nadat je een inlogpoging hebt gedaan… of niet.
In deze afgelopen uitzending van de Avondshow met Arjen Lubach wordt het enorme aantal overheidswebsites besproken. Onderzoeker Tex heeft gedaan wat menselijk mogelijk was: alle 1800 sites bezoeken en drie maanden geen daglicht gezien. Dat kon nog in tijden van corona. We weten hoe het voelt.
Het doel was om het antwoord te vinden op een simpele vraag. Maar het kan zijn dat je zelfs na het bezoeken van al deze sites geen antwoord hebt. We zien namelijk dat ieder van die sites gemiddeld zo’n 10 “subdomeinen” heeft met informatie en dienstverlening voor specifieke doelgroepen.
De 1800 sites die zijn bezocht door Tex staan in het websiteregister rijksoverheid. Wat daar niet in staat zijn de sites van gemeenten, provincies, waterschappen, regionale samenwerkingsverbanden (bijvoorbeeld het afvalverwerkingsbedrijf enzo) en alle semi-overheidsbedrijven.
Maar hoeveel sites zijn er dan? Dat weten we ook niet precies: dat weet niemand. In onze database staan zo’n 90.000 adressen, waarvan het ruime overgrote merendeel van de overheid is. Wekelijks komen er meer bij.
Waarom weten we dit?
Wij meten al deze sites op veiligheid. Dat doen we niet meer met menselijke onderzoekers, maar met een heel leger aan hamsters in luxe kooitjes. Zij bezoeken regelmatig de sites om te kijken of ze voldoen aan bijvoorbeeld de basis veiligheidsafspraken.
Deze maand zijn er weer een boel dingen aangepast op basisbeveiliging.nl. Dit is een korte samenvatting:
Basisbeveiliging.nl
Nieuwe metingen: Security.txt en RPKI, lees de blogpost voor meer informatie. Met dank aan internet.nl.
Er is een lijstje toegevoegd onderaan de landingspagina met een samenvatting van alle kaarten. Er worden nu ruim 50.000 domeinen gemeten.
Comply or Explain scan-opvolging is nu gefixt, dus al die standaard microsoft subdomeinen zouden geen problemen meer mogen geven ondanks dat de metingen technisch juist zijn.
Opruiming van de basisbeveiliging database: een stuk of 5000 domeinen en 1.000.000 aanverwante records zijn verwijderd. Bijvoorbeeld sites die overgedragen zijn aan andere organisaties en onjuist gevonden subdomeinen (bij wildcards).
De versie-informatie scans zijn een klein beetje getuned, wel jammer dat sommige security vendors dan alsnog een versienummer van hun product adverteren: dan sta je alsnog rood. We kijken naar jou “imunify360-webshield/1.18”.
Er zijn afzonderlijke kaarten toegevoegd voor alle lagen van de overheid gebaseerd op het overheidsregister en websiteregister rijksoverheid. Dit wordt regelmatig gesynchroniseerd, dus als je zorgt dat daar je (belangrijkste) domeinen in staan dan staan ze ook op de kaart.
Technisch: Dezelfde organisatie kan nu op meerdere kaarten staan, deze delen dezelfde onderliggende data. Organisaties willen weleens van naam wijzigen, hebben een andere naam in de volksmond en hebben per databron ook altijd een andere naam.
En natuurlijk weer een hele sloot aan kleine verbeteringen en fixes.
Basisbeveiliging+
(2022) Rapporten van tools die kritieke bevindingen kunnen maken worden nu versleuteld opgeslagen met je eigen sleutel. Dit geeft een garantie die niemand behalve jij, dus ook niet Basisbeveiliging, je rapporten kan inzien. Je kan een eigen publieke sleutel instellen, of een publieke/geheime sleutel maken in de interface.
Het versturen van mail is verplaatst van Sendgrid naar TransIP.
Wat komt zsm
De Gemeentelijke herindelingen zijn weer geweest. We hebben de code klaar staan, maar de brondata zit nog niet in Open Street Maps. Als dat er niet snel is voeren we wat handmatige wijzigingen door die misschien niet perfect zijn, maar wel een vollediger beeld geven van gemeenten.
We kijken en publiceren nu ook metingen over security.txt. We beoordelen deze op drie manieren:
Aanwezig: dan is het goed
Ontbreekt op een subdomein: dan krijg je een info score (dit is nu groen). Eigenlijk hoort security.txt op alle domeinen en subdomeinen beschikbaar te zijn, maar dat is een klus. Dus we beoordelen alleen het ontbreken op het hoofddomein nu als onvoldoende (oranje).
Ontbreekt op domein: je krijgt dan een oranje score. Het niet hebben van een security.txt bestand betekent dat je kritieke informatie over kwetsbaarheden kan missen. Het samenstellen van een security.txt bestand kan o.a. door dit formuliertje in te vullen. Zet dan het bestand op je webserver. We meten dit elke paar dagen. Het oplossen hiervan is vooral procesmatig (wie krijgt de meldingen), het maken en plaatsen van een tekstbestandje is een kwetsie van een paar minuten en een kleine wijziging.
We kijken nu of RPKI aanwezig is voor webservers en e-mail diensten. We beoordelen dit op de volgende manieren:
Aanwezig: we keuren het goed. Andere RPKI metingen tonen we niet, het kan dus zijn dat de geldigheid is verlopen of dat de RPKI naar de nameserver niet juist is. Met deze ene meting proberen we het belangrijkste resultaat te vatten. Als iedereen dit goed doet, dan kunnen we de volgende aanzetten.
Afwezig: we keuren het als ‘middenmoot’ dus oranje. RPKI is kritiek voor een veilig internet, maar een organisatie kan naast melden/waarschuwen niet direct actie ondernemen omdat de organisatie niet geheel verantwoordelijk is voor het onderliggende internetverkeer. Een organisatie kan wel kiezen om naar een andere hoster te gaan bijvoorbeeld: maar het is makkelijker als groep klanten druk uit te oefenen om dit gewijzigd te krijgen.
Er zijn weer nieuwe metingen toegevoegd aan basisbeveiliging. Het gaat om de volgende twee:
Software versie identificatie. We kijken of software op je server aangeeft welke (specifieke) versie er wordt gedraaid. Deze informatie wordt gebruikt door aanvallers om een specifieke aanval uit te voeren of te plannen. In een gehardende omgeving is deze informatie niet zichtbaar: in dat geval moet een aanvaller meer moeite doen om erachter te komen welke versie er staat, wat ofwel teveel moeite is of zorgt dat een aanval makkelijker te herkennen is. De maximale score is rood, dit gebeurd als er een volledig versienummer en sub-nummer te vinden is. Bijvoorbeeld 12.34.
Overbodige poorten. Voor dienstverlening naar burgers en medewerkers van je organisatie zijn maar een paar diensten nodig. We kijken in dit geval naar een paar poorten, de alternatieve HTTP poorten (8443 enzo): hierop staan vaak diensten zoals beheerders-interfaces en dergelijke. We raden aan om dienstverlening van deze alternatieven te staken en de dienst onder de standaard poortnummers te leveren. De informatie in deze scan is nog in beta, de maximale score is oranje.