IT dienstverlening van de overheid hoort binnen Europa (en liefst Nederland) te gebeuren. Hiervoor hebben we een meting toegevoegd die later deze maand openbaar wordt. We zijn het beleid aan het opstellen en aan het experimenteren met hoe we dit gaan weergeven. Zie voor meer hierover de blogpost.
Uitzonderingen op basis van inhoud van de website
We kunnen vanaf nu uitzonderingen maken op basis van de inhoud van een website. Dit passen we nu toe voor Cloudflare, die als grote leverancier standaard een aantal onnodige poorten openzet.
We vragen gebruikers van Cloudflare dit issue met hen op te nemen, zodat ze kunnen voldoen aan diverse IT standaarden die vereisen dat alleen noodzakelijke poorten openstaan. Dit is door diverse mensen onder de aandacht gebracht de afgelopen maand.
Inhoud van diverse pagina’s. Dit wordt doorzocht bij security policies.
Risicoopsommingstabel is opgedeeld
De tabel met risico’s is nu opgedeeld in categorien. Hierdoor kan je in 1x alle e-mail metingen zien zonder alle extra waardes / lege regels enzo. Dat leest net iets makkelijker. Het eerste tabblad bevat het oude vertrouwde (grote) overzicht.
Herschreven privacyscanner
De privacyscanner is herschreven. Dit heeft een factor 1000 snellere scans opgeleverd die ook nog eens betrouwbaarder en vollediger zijn.
Bedankt / “wordt aan gewerkt” knop
Metingen zijn nu voorzien van een “bedankt”/”wordt opgelost” knop. Hiermee kan je makkelijk waardering sturen naar de stichting, zo weten we een beetje wie de site gebruikt en hoe het wordt ontvangen. De eerste stapel bedankjes zitten al in de mailbox, waarvoor ook bedankt!
Update websiteregister rijksoverheid
De nieuwe namen van overheidsorganisaties van het Websiteregister Rijksoverheid zijn toegevoegd. Ook is een 10 tal nieuwe organisaties toegevoegd.
Voortgang bevat ook de kaart van vandaag
Hier zie je de voortgang van Security.txt, met daarop de voortgang van de adoptie. De kaart wordt langzaam groener, of toch niet…
Dagelijkse mails worden weer verstuurd, naast de gebruikelijke instant alert mails. Alert E-Mails bevatten nu ook de meetdata als JSON attachment. Dit is direct aan een SIEM te koppelen, of anders automatisch te verwerken.
Er worden geen meldingen meer gemaakt van metingen waar een verklaring op zit. Omdat automatische verklaringen soms later worden toegevoegd kan het zijn dat er weleens wat overbodigs wordt meegestuurd.
Overig
De herscan knop is gefixt, herscans worden weer ingepland.
Vandaag introduceren we Full Scope Tests voor deelnemers van de Internet Cleanup Foundation. Deelnemers kunnen hiermee volledige security scans uitvoeren met bekende security tools.
Resultaten van deze tests kunnen ernstige kwetsbaarheden aan het licht brengen. Ook zijn deze tests intensiever dan de normale tests die we uitvoeren op basisbeveiliging.nl. Dit heeft gevolgen voor wanneer zo’n test gestart kan worden en hoe de rapportage is in te zien. In deze post wordt dat allemaal uitgelegd.
6000 metingen, versleuteld…
De eerste Full Scope Test kan worden gedaan met de tool ‘Nuclei’. Op dit moment is dit een van de populairste security-scanners. We gebruiken deze tool al sinds maart 2023 voor Login Plaza, maar het het kan nog veel meer. Het heeft ongeveer 6000 checks aan boord. Waaronder meer dan 1500 checks op algemeen bekende kwetsbaarheden (CVE’s).
Het verwerken van kritieke kwetsbaarheden vraagt om een nieuwe aanpak. We zijn gewend dat alle informatie rondom metingen publiek is, dus er waren geen maatregelen nodig om informatie te beschermen tegen uitlekken. Bij full scope tests ligt dat anders.
Resultaten van full scope tests worden versleuteld opgeslagen. De enige die de data kan lezen is diegeen met de sleutel. Het is voor ons, noch anderen onmogelijk om resultaten in te zien zonder de sleutel. Zelfs als de database morgen op straat ligt is er dus niets aan de hand. Dat haalt een boel last van ieders schouders. Deze versleuteling gebeurt met NaCl Box.
Wanneer de database uitlekt kan niemand de rapporten bekijken.
Niemand van de Internet Cleanup Foundation kan de rapporten bekijken.
Je kan zien dat de rapportage van ons komt door de publieke sleutel (ieder rapport heeft een eigen publieke sleutel, de prive-sleutel gooien we weg).
Hoe kan je deze rapporten dan toch inzien? Je moet hiervoor het rapport ontsleutelen met een eigen prive-sleutel. Dat kan op je eigen computer maar ook in de browser.
Praktijkvoorbeeld van A tot Z
Stap 1: vrijwaring
Omdat Full Scope Tests intensiever zijn dan de normale tests op basisbeveiliging is het noodzakelijk om de Internet Cleanup Foundation een vrijwaring te geven voor deze tests. De vrijwaring is hier te vinden en wordt opgestuurd naar info@internetcleanup.foundation. Na ondertekening wordt het mogelijk om Full Scope Tests uit te voeren.
Stap 2: instellen publieke sleutel
Om de resultaten veilig op te slaan is het noodakelijk om een publieke sleutel te maken. Dat doe je op deze pagina. Het is op die pagina ook mogelijk om een prive-sleutel te maken. Je kan dat ook op je eigen computer doen op of op een andere website. We geven daar een voorbeeld van op die pagina.
Stap 3: Full Scope Test inplannen
Vanaf nu is het mogelijk om een Full Scope Test in te plannen. Dit gebeurd vanuit het portfolio.
Overzicht van het portfolio met daarop de knop “Plan Full Scope Test”, met de kever.
Na de klikken op de knop wordt het volgende venster getoond. Hierop is in te stellen welke Full Scope Test moet worden uitgevoerd en wordt er gecontroleerd of de juiste voorzorgsmaatregelen zijn genomen. Na het beantwoorden van de alle vragen wordt de “Let’s go!” knop actief.
Stap 4: Wachten tijdens de test
De test is nu aangevraagd en wordt zo snel mogelijk opgepakt. Dit kan, afhankelijk van de drukte, eventjes duren. Meestal zal dit toch binnen een half uur zijn.
Om dit barre half uur door te komen hebben we wat tips om te kijken op YouTube. In willekeurige volgorde een paar leuke filmpjes:
Maar je kan natuurlijk ook iets nuttigs doen met je tijd…
Stap 5: Testresultaten inzien
Het rapport is in te zien op de Sensitive Reports pagina. Hier zie je de meting die we net hebben gestart. Door op de knop “Show Details” te klikken zie je de versleutelde gegevens en de optie om deze te downloaden of te ontsleutelen.
Het downloaden levert dezelfde informatie die je ziet in het “versleutelde gegevens” veld. Je kan dit ook kopieren en plakken en ergens anders ontsleutelen. Let wel op dat je onze publieke sleutel nodig hebt, die staat naast “Ours” en wisselt per rapport.
Stap 6: Testresultaten ontsleutelen (online)
Door het invullen van je prive-sleutel wordt het rapport volledig in de browser ontsleuteld. Het invullen van je prive-sleutel betekent dat je je browser vertrouwt, de plugins in je browser en onze webapplicatie. Als je geen vertrouwen hebt hierin dan kan je naar stap 7 of 8. We raden in ieder geval aan regelmatig de set met sleutels te vervangen.
Door op “ontsleutelen in browser” te klikken wordt het rapport zichtbaar. Het rapport van Nuclei Full Scope Tests heeft een overzicht in een tabel en als kaartenbak.
Kaartenbakweergave:
Bevindingen in kaartenbakweergave
Tabelweergave, doorzoekbaar:
Bevindingen in tabelweergave
Je in bovenstaande screenshots dat er allerlei risico’s zijn gevonden. In dit voorbeeld zijn ze allemaal inschat op het risiconiveau “info”. Iedere tool heeft een eigen gradatie in risico’s. Deze wijken af van elkaar, en wijken af van basisbeveiliging.nl omdat de scope anders (intensiever) is. Wij raden sterk aan om alle bevinden door te nemen, omdat soms vele lage risico’s soms samen een groot risico vormen.
Stap 7: Testresultaten ontsleutelen (elders)
Als je de gegevens in de browser wil ontsleutelen, dan is het mogelijk deze te kopieren of te downloaden en elders te ontsleutelen.
Iedere implementatie van NaCl (zoals Libsodium) kan worden gebruikt om het bestand te ontsleutelen. Hieronder zie je twee voorbeelden. De eerste is de interface van TweetNaCl. Daaronder zie je een python script wat je kan gebruiken om e.e.a. te ontsleutelen.
Ontsleuteling van het rapport in de test-interface van TweetNaCl
Stap 8: Testresultaten ontsleutelen (lokaal)
Met het volgende python3 script en het installeren van PyNacl kan je het rapport ontsleutelen. Er zijn ook gebruikersinterfaces die hetzelfde doen. Je kan er naar zoeken. De toverwoorden zijn: NaCl, LibSodium en xsalsa20.
# Decrypts a file
# python3 decrypt.py --their_public_key="3pFkpZ8X1NKWCwZB3uEPhhZvmejrySVPWozBgLrUjzw=" --my_private_key="..." file
import argparse
import nacl.encoding
from nacl.public import Box, PrivateKey, PublicKey
parser = argparse.ArgumentParser(
prog='decrypt.py', description='Decrypt NaCl files, show output in console', epilog='Internet Cleanup Foundation'
)
parser.add_argument('--their_public_key')
parser.add_argument('--my_private_key')
parser.add_argument('filename')
args = parser.parse_args()
def decrypt(their_public_key, my_private_key, file):
their_public_key = PublicKey(bytes(their_public_key, 'utf-8'), encoder=nacl.encoding.Base64Encoder)
my_private_key = PrivateKey(bytes(my_private_key, 'utf-8'), encoder=nacl.encoding.Base64Encoder)
with open(file, 'rb') as f:
file_data = f.read()
try:
the_box = Box(my_private_key, their_public_key)
encrypted_data = the_box.decrypt(file_data)
except nacl.exceptions.CryptoError as e:
print(f"Could not decrypt file. Are the keys correct? Error received: {e}.")
raise nacl.exceptions.CryptoError from e
print("Decrypted file. Content is displayed below:")
print("--------- Begin decrypted content")
print(encrypted_data.decode('utf-8'))
print("--------- End decrypted content")
if __name__ == '__main__':
decrypt(args.their_public_key, args.my_private_key, args.filename)
Alleen voor deelnemers
Deelnemers van de Internet Cleanup Foundation hebben toegang tot Basisbeveiliging+. Zo weten we dat alleen de juiste omgevingen worden getest onder de juiste voorwaarden. Wil je deelnemer worden? Kijk dan voor meer informatie op de deelnemerschap pagina.
Onlangs hebben we een meting toegevoegd waarmee te zien is of een website op zichzelf staat, of dat bezoekers gevolgd worden door bedrijven die ook in de advertentiebusiness zitten.
We zijn deze meting aan het finetunen en afronden met een artikel hierover. Ondertussen zijn we bezig met een vervolg hierop. Dit vervolg wordt in de komende weken/maanden uitgerold en heeft alles te maken met locaties van online diensten.
Het ultieme doel is dat de online-overheid uitsluitend in de EU of Nederland opereert, behalve waar het logisch of redelijk is dat dit niet gebeurd (denk aan een KNMI meetproject in Azië). Dit is in lijn met de GDPR-wet en de bijbehorende trend om alles binnen Nederland of de EU te krijgen.
We gaan controleren op twee verschillende punten: de locatie van servers en de locatie van de inhoud van de voorpagina van websites. Hieruit halen we ip-adressen.
Deze adressen zoeken we op in een database waarin staat welk adres in welk land actief is. Deze database wordt op een complexe manier samengesteld: het is een mix van administratieve gegevens en kennis van hoe het internet op dit moment in elkaar zit. Voor de geïnteresseerden: de technische term is “ip geolocation”.
Een tipje van de sluier:
Op basis van ip-adressen en de locaties hiervan zien we dat er een klein percentage van servers buiten de EU staat. 3% van alle door ons gemeten ip adressen leidt naar de Verenigde Staten en een verwaarloosbaar percentage elders. Van de servers met een locatie anders dan US/EU zijn er een aantal legitiem en een paar ook niet. We zullen hier nog een mailtje over sturen naar de eigenaren van die servers. We hebben nog geen cijfers over de inhoud van websites.
Bij 8% van de overheidsdomeinen is het niet te achterhalen of de overheid eigenaar is. Dat is te verdelen in twee categorien: er zijn 95 domeinen zonder informatie en 68 domeinen met een onjuiste eigenaar.
Juiste houderinformatie geeft vertrouwen: iemand kan hierdoor checken of de site eigendom is van de overheid. De overheid heeft nog een andere reden om eigenaar te zijn: zelf bepalen wat er met een domein gebeurt nadat een project of contract afloopt.
Dit is het overzicht van eigendom van domeinen op dit moment:
Overheid
Domeinen
Geen eigenaar
Onjuiste eigenaar
Juiste eigenaar
Gemeenten
431
32
8
391
Provincies
13
2
0
11
Overheid
1546
61
60
1425
TOTAAL
1990
95 (4.77%)
68 (3.41%)
1827 (91.81%)
Overzichtstabel juistheid houders van domeinen.
Houder van een domein
Iedere domeinnaam is uniek en heeft een eigenaar. De adminstratie van alle .nl domeinen zoals rijksoverheid.nl wordt bijgehouden door “Stichting Internet Domeinregistratie Nederland”: SIDN.
Om te zien wie eigenaar is van een domein kan je op de site van het SIDN de administratie doorzoeken. In het onderstaande voorbeeld zie je het zoekresultaat voor de site “rijksoverheid.nl”.
In het screenshot zit een highlight op de informatie uit het “houder” veld: “Rijksoverheid”, dit is de naam van de eigenaar van het domein.
De nieuwe meting op basisbeveiliging.nl controleert of de eigenaar van het domein juist is. Hieruit kunnen drie conclusies komen:
Geen eigenaar: het is niet te zien van wie het domein is omdat het “Houder” veld leeg is. Dit wordt beoordeeld met Oranje.
Onjuiste eigenaar: een tussenpartij, een persoon, een onduidelijke organisatie of een geanonimiseerde organisatie (en nog wat andere gevallen) is allemaal onjuist. Dit wordt beoordeeld met Oranje. Wij verwachten dat “Gemeente Texel” eigenaar is van “texel.nl”.
Juiste eigenaar: Is de registratie in te zien en behoort die tot een van de goedgekeurde organisaties? Dan wordt dat beoordeeld als Groen.
Bepaling van de meting
Het is lastig om te bepalen wie de juiste eigenaar is. Dat gebeurd dan ook voor een deel met de hand. Dit is een detail-overzicht van hoe we de juiste eigenaar vaststellen.
In deze gevallen zien wij de juiste eigenaar:
De houder is ongeveer hetzelfde als het domein. Bijvoorbeeld “rijksoverheid” op “rijksoverheid.nl”.
De houder is een overheidsorganisatie, ziekenhuis of andere aanverwante entiteit.
De houder is een bedrijf/organisatie en deze staat genoemd op de voorpagina van de site of onder contactgegevens. Bijvoorbeeld in het e-mail adres of bij de copyright informatie.
Sites met een rijksoverheidslogo mogen alleen op een naam van een overheid staan.
De houder bestaat uit een onbekend deel, maar ook een bekend deel zoals: “TweeToffePeren B.V. i.o. Rijkswaterstaat” op een site van Rijkswaterstaat.
Bij onduidelijkheden wordt altijd kort gezocht naar wie de eigenaar is. Bijvoorbeeld kan bij ICT-samenwerkingsverbanden de gebruikte naam niet direct worden herleid omdat er een “abstracte” naam wordt gebruikt waar geen van de deelnemers wordt genoemd.
In deze gevallen zien we een onjuiste eigenaar:
Bedrijfsnaam van een ontwikkelbedrijf, consultancybedrijf, juristenbureau of andere ontwikkelaar. “TweeToffePeren B.V.” terwijl de site zegt: Rijkswaterstaat.
Namen van personen.
Afgeschermde gegevens. Houder hoeft niet afgeschermd te zijn omdat het altijd gaat over namen van organisaties.
Namen van organisaties die geen of ‘generieke’ resultaten hebben in zoekmachines. Het is dus niet duidelijk van wie het is.
Onherleidbare informatie als “Crediteurenadministratie X-12391”.
Een leeg veld.
In dit voorbeeld staat dat de eigenaar onbekend is. Er staat “Privacy protected by Hostnet”. De juiste houder zou “Trimbos-Instituut” kunnen zijn, of een andere organisatie in dezelfde strekking.
Dank aan SIDN
Informatie over eigenaarschap is afkomstig uit de WHOIS database van Stichting Internet Domeinregistratie Nederland (SIDN) en wordt verwerkt en gepubliceerd met toestemming.
Nieuwe subdomein scanner OWASP amassis toevoegd. Hiermee kan op tientallen manieren naar subdomeinen worden gezocht. Komen we daarmee eindelijk op de 100.000 overheidsdomeinen?
Domeininformatie van het SIDN wordt nu ingelezen. Dit om verlopen / uit handen gegeven domeinen te kunnen herkennen en makkelijk te kunnen verwijderen. Dank aan de SIDN voor het bieden van de who-is api.
Een domein dat van eigenaar is veranderd. Hier zie je dat het domein opnieuw is geregistreerd sinds dat we het monitoren. We kunnen dit domein en alle subdomeinen in 1x verwijderen. Dat maakt het onderhoud van de site behapbaar.
De website ondersteunt nu geolocatie: dus je kan makkelijk vinden welke organisaties in jouw buurt zitten zonder de kaart te hoeven doorzoeken. Geolocatie wordt gebruikt op de voorpagina en op de kaarten-pagina. Mogelijk binnenkort ook nog op andere pagina’s.
Geolocatie op de voorpagina. In Arnhem zie je een gemeenschappelijke regeling, de gemeenten arnhem, rheden, westervoort en lingewaard, daarna meer regelingen en ook bijvoorbeeld het Rijnstate ziekenhuis.Op de gemeentekaart zie je alleen de gemeenten om je heen.
De voortgang-pagina is opgeruimd en heeft nu permanente links. Je kan nu direct zien wat de toename is van security.txt voor bijvoorbeeld gemeenten en provinices.
Op de voortgang pagina is te zien dat het aantal security.txt toepassingen is gestegen van 28 naar 41. Er zijn ook kleine getallen linksonder op de kaart geplaatst waarmee je snel kan zien wat de absolute aantallen zijn.
Aanpassingen in metingen
De bannergrab scanner is bijgewerkt, waardoor bevindingen worden opgeslagen als https/443 als http/443 wordt gevonden. Wij gebruiken “https” als protocol waar nmap vaak “http” ziet omdat de webserver een “http” status pagina geeft waarop staat dat je de site via “https” moet bezoeken.
Idem zijn de protocollen ‘gnutella’, ‘ssl’ en ‘ms-wbt-server’ teruggebracht naar https. De 160.000 endpoints hiervoor zijn verwijderd en de metingen komen terug op https endpoints.
Aanpassingen in django admin
De endpoint pagina is versneld, zoeken op endpoints is versneld.
Er is een bug gefixt waardoor niets meer kon worden opgeslagen van nieuwe scans. Je kan in de onderstaande grafiek zien wanneer die bug was opgelost:
Nieuwe uitzonderingen
We blijven er wel op meten, maar strepen eventuele bevindingen weg op de volgende plaatsen:
Poort 8443 mag open staan voor vpn doeleinden. Dit zien wij onder subdomeinen als ‘thuiswerken’, ‘telewerken’, ‘vpn’, ‘werkplek’ enzovoorts.
Het subdomein ‘sip’ hoeft geen http security headers meer te hebben.
Er zijn weer een aantal updates doorgevoerd aan basisbeveiliging.
Nieuw
Nieuwe metingen over privacy gaan de 17e live april live.
Voortgang pagina. Hierop kan je de resultaten van een bepaalde meting over verschillende maanden zien. Standaard zijn dat 6 maanden, maar je kan jaren terug. Je kan dit nu het meeste voortgang zien rondom de security.txt meting. Hier een link naar de voortgang van provincies.
Handreiking Comply or Explain. Vanwege de vele Comply or Explain mails is er een pagina toegevoegd met een handreiking over welke verklaringen wel en niet worden geaccepteerd. Deze staat hier.
Ondersteuning voor alternatieve namen. We hebben bijnamen, oude namen, Nederlandse namen van Friese gemeenten en carnavalsnamen toegevoegd van gemeenten die een gelijknamig stad of dorp hebben. Ook kan je nu zoeken naar “mooie stad achter de duinen” voor Den Haag, “Torenstad” voor Zutphen, “Moerasdraak” voor Den Bosch.
Wijzigingen
Logins in het login plaza zijn nu voorzien van een versienummer en een link naar de publiek bekende kwetsbaarheden (zgn CVE’s).
Producten in login plaza zijn nu voorzien van informatie over de maker, wat het kan etc. Dit is aangevuld door ChatGPT 3.5, dus kan wat foutjes bevatten. We herkennen meer dan 250 producten van vele leveranciers.
Fixes
G1 overheidscertificaten worden nu correct automatisch verklaard. Meer hierover in het blogpost.
De nieuwe manier waarop microsoft alleen http aanbiedt op autodiscover domeinen wordt nu meegenomen.
In de helpdesk kijken we naar vragen die binnenkomen via de mail en geven we een kort antwoord op vragen die vaker binnenkomen.
Poort 8080 is gesloten (of toch open)
We kregen een korte mail met de melding: “Poort 8080 staat niet open”. Dus wij tikken in onze browser: http://[gemeentesite].nl:8080. In plaats van ‘geen gehoor’ wordt de gebruiker doorgestuurd naar de site van een gemeente. Daarna proberen we de site http://[gemeentesite].nl:9090, en daar gebeurd niets.
Conclusie: op poort 8080 gebeurd wel iets, dus deze poort staat open met iets overbodigs. We kunnen niet zien wat en of dit een uitzondering waard is. Dus de conclusie ‘overbodige poort’ blijft staan.
Screenshot bij het bezoeken van het hoofd-domein op dit adres op :8080. De melding op deze pagina zegt dat je mogelijk iets bijzonders moet hebben gedaan om geblokkeerd te worden. Daaronder valt dus ook gewoon bezoeken 🙂
Fix voor uitzondering G1 certificaten
De overheid geeft een certificaat uit dat by design niet wordt vertrouwd in browsers. Dit is het G1 certificaat. We hebben al wat jaren code in Basisbeveiliging die hiervoor een uitzondering toevoegt. Of… dat dachten we.
We ontvingen een mailtje met de vraag of we een G1 certificaat konden uitzonderen. We hadden zoiets van: dit doen we toch al?
Dit was het begin van een paar uur lang debuggen. Uit de logs konden we halen dat deze uitzondering is aangeroepen na de ‘niet vertrouwd’ conclusie van de TLS meting. We hebben de code erbij gepakt en het met de hand aanroepen van alle functies ging goed.
We hebben de code lokaal en op de server gedraaid als allerlei gebruikers: werkt altijd. We hebben extreem gedetailleerde logging toegevoegd aan deze code en we zagen dat alleen op de server, tijdens het meten via een worker, een specifieke SSL foutmelding optrad.
De conclusie is dat een van de componenten om parallel te kunnen meten (“gevent” voor de nerds) de SSL bibliotheek aanpast wat kan zorgen voor ander gedrag. Nadat we de worker hadden omgezet naar ‘prefork’ zagen we dat het probleem was opgelost.
We hebben deze taak dus overgezet naar een prefork worker. Dat kost wat meer geheugen maar dan hebben we wel zekerheid dat de meting goed gaat.
Inmiddels is de helft van de uitzondering-checks er doorheen en zijn er 83 G1 certificaten gevonden. We zien dit certificaat o.a. op sites als api.kvk.nl, isb.rdw.nl, en data.* subdomeinen van gemeenten.
Overzicht van uitzonderingsmetingen op het domein van de vraagsteller…
Wil je bovenstaande stickers hebben? Ga naar de sticker swap…
phpMyAdmin is populaire software voor het beheren van databases via de browser. Dit hoort niet online te staan bij professionele organisaties. Vorige week deelden we onze bevinden: 300+ phpMyAdmins bij de overheid. In een week is er al 10% offline gehaald. In dit artikel de getallen en ook een aantal redenen waarom je phpMyAdmin offline wil halen.
Voor beheerders: De hertests beginnen later deze week, de uitkomsten kan je natuurlijk vinden op het Login Plaza.
Al 10% opgeruimd
Een week geleden deelden we op linked in dat de overheid meer dan 300 phpMyAdmin portals online heeft staan. Dat maakte behoorlijk veel los. We ontvingen een aantal belletjes en overzichten van wat mensen aan het opruimen zijn.
Slechts één week is erg kort in overheidsland, maar toch is het leuk om te kijken wat er veranderd. Hiervoor hebben we een steekproef gedaan naar de aanwezigheid van 316 gevonden portals. Dit zijn de uitkomsten:
Originele meting: 316 portals
Hertests vanaf…
een Nederlands Ziggo IP: 287
een Proxy in Nederland: 271
het IP van basisbeveiliging: 288
Er zijn in een week ±30 phpMyAdmin portals opgeruimd uit de steekproef. Dat is 10%. Daarvoor alle lof naar de beheerders hiervan!
Waarom moet phpMyAdmin weg?
Dat de overheid phpMyAdmin gebruikt verbaast ons niets: iedereen gebruikt dit want het is fantastisch. Toch is het niet de bedoeling dat dit word aangeboden via het publieke internet.
Hieronder staan een aantal redenen waarom de overheid door moet gaan met het offline halen van phpMyAdmin:
Het kost meer management, patchwerk en onderhoud: phpMyAdmin en onderliggende technologie PHP bevatten regelmatig kwetsbaarheden. Net als alle andere software. Iets online zetten vereist dus constante verzorging. Je kan software beter vergelijken met een tijdbom. Als die bom afgaat moet je meteen (in de nacht) patchen, anders heeft een aanvaller al je data. Je moet dus al weten dat je het draait, welke versie, hoe je dat update, hoe het eventueel uit moet etc: dat is duur en irritant. Het bespaart dus geld, tijd en stress om dingen niet publiek te zetten. Er worden regelmatig nieuwe kwetsbaarheden gevonden en gepubliceerd. Zie bijvoorbeeld dit archief van phpMyAdmin aanvallen. Een aanvaller hoeft niet slim te zijn, die kan ook gewoon wachten en ter zijner tijd een goedkope 0day (=nieuwe onbekende kwetsbaarheid) aanschaffen en inzetten. Wie is er sneller? Jij of de aanvaller? Het is beter deze race niet aan te gaan.
Er is een grote kans dat kwaadwillenden en ethisch interessante bedrijven al 0days hebben liggen voor PHP/phpMyAdmin. Er valt veel te halen, daarom is het ontwikkelen van een kwetsbaarheid geld/tijd waard. Als er niets meer te halen is… dan is de aanval waardeloos. Vanuit deze gedachte kan je zeggen dat het online plaatsen van overbodige systemen de groei stimuleert van deze (illegale) markt.
phpMyAdmin online aanbieden voldoet niet aan de ISO27002-2022 eisen. Dit zijn eisen die de overheid volgt, onder andere door opvolging van de Baseline Informatiebeveiliging Overheid. Uit ISO27002-2022 halen we o.a:
8.3 e) zorgen voor fysieke of logische toegangsbeveiligingsmaatregelen voor het isoleren van gevoelige toepassingen, toepassingsgegevens of systemen
8.9 c) onnodige functies en diensten uitschakelen of beperken;
8.9 d) de toegang tot krachtige systeemhulpmiddelen en hostparameterinstellingen beperken;
Let op: normenkaders noemen nooit expliciet stukken software. Iedereen moet hierdoor zelf uitvinden wat de bedoeling is: met pluriformiteit en onveiligheid als gevolg. Wij vullen dit nu concreet in en leggen de lat behoorlijk laag.
Het staat incompetent. Zeker als je core-business beveiliging is, zoals bij de volgende organisaties:
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.
Nieuwe zoekfunctie op basisbeveiliging.nl. Zoeken naar Arnhem levert diverse resultaten over organisaties bij Arnhem.
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.
Afbeelding van de grote getallen in het maandoverzicht.
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.
Twaalf van de nu gevonden 52 phpMyAdmin login portalen… en de metingen worden nog geladen.