Sinds deze maand is security.txt een stap op weg om een nieuwe internetstandaard te worden. Met zo'n file op een server kunnen beveiligingsonderzoekers makkelijker kwetsbaarheden melden, maar wat is daar de meerwaarde van? De maker ontdekte zelf hoe irritant het ontbreken ervan is.
Aan responsibledisclosurebeleid is tegenwoordig weinig gebrek meer. Een groeiend aantal websites, bedrijven en diensten heeft inmiddels een of andere mogelijkheid om een kwetsbaarheid op verantwoorde wijze te melden. Maar precies dat 'een of andere' begint nu toch een probleem te worden, denken sommige beveiligingsonderzoekers. Die hebben daarom security.txt in het leven geroepen. Dat moet zorgen voor meer uniformiteit in securityonderzoek. Sinds deze maand is security.txt een voorgestelde internetstandaard.
Wat is het?
Je hoeft eigenlijk alleen maar te kijken naar de bestaande security.txt van een paar grote bedrijven om te zien wat het is. Neem als voorbeeld die van Google of GitHub. Het gaat om een tekstbestand met informatie dat bewust wordt geplaatst in de .well-known
-directory op een server. Dat is de vaste plek waar makkelijk vindbare informatie wordt neergezet, bijvoorbeeld verificatiebestanden voor Let's Encrypt-certificaten.
Als je er zo naar kijkt, lijkt security.txt niet zo spannend. Een simpel tekstbestand met een paar regels tekst, ogenschijnlijk willekeurig opgeschreven en ergens op een vergeten deel van de server achtergelaten. Toch zit er een duidelijk idee achter security.txt. Het is bedoeld als centrale plek waar je als beveiligingsonderzoeker in één keer alle informatie kunt vinden die je nodig hebt om een bedrijf te bereiken als je een kwetsbaarheid vindt. Bedrijven schrijven in een dergelijk tekstbestand waar onderzoekers in dat geval terecht kunnen en wat ze moeten doen om een melding aan te leveren. Security.txt staat ook altijd op dezelfde, makkelijk vindbare plek op de server. Het idee is dat een beveiligingsonderzoeker die een lek vindt alleen maar naar www.website.com/.well-known/security.txt hoeft te navigeren. Daar staat alle relevante contactinformatie die nodig is om een bugreport te doen. Dat kan een e-mailadres zijn, maar ook een link naar een externe pagina of zelfs een extern platform zoals HackerOne als het bedrijf daar een bugbountyprogramma heeft. Ook staat er andere mogelijk relevante informatie in security.txt, zoals een manier om berichten te versleutelen of een link naar een vacaturepagina.
Die informatie wordt vervolgens in een formaat gegoten dat makkelijk te parsen is. Daar zijn ook al tooltjes voor gemaakt. Security.txt is daarnaast ook makkelijk vindbaar via zoekmachines. Zo kun je de info ook via bijvoorbeeld Shodan vinden.
Standaard
In de praktijk ziet een security.txt-bestand er kaal en oninteressant uit, maar beveiligingsonderzoeker Edwin Foudil is er toch heel gelukkig mee. Hij opperde in 2017 om security.txt tot internetstandaard te maken. Hij diende daar een voorstel voor in en deze maand werd daarin een enorme stap gezet: security.txt werd een officiële RFC-draft.
Dat betekent concreet dat de Internet Engineering Task Force, die internetstandaarden voorstelt en officieel kan vaststellen, de voorstellen voor security.txt heeft geaccepteerd. Dat gebeurt met RFC-9116, waarin de details staan met wat een dergelijk bestand moet bevatten. Bedrijven die een security.txt willen opzetten, kunnen zich dan aan dat formaat houden.
Om het makkelijk te maken voor die bedrijven, beheert Foudil samen met Yakov Shafranovich de website securitytxt.org. Naast informatie over de standaard bevat die ook een tooltje waarmee bedrijven hun eigen txt-bestand kunnen maken.
Ontstaan
Security.txt ontstaat uit frustratie omdat elk responsibledisclosurebeleid anders was
Security.txt ontstond uit frustratie bij Foudil en andere beveiligingsonderzoekers, vertelt hij. "Het lost het probleem op waarbij je voor ieder nieuw project weer opnieuw op zoek moet naar contactinformatie", zegt hij. "Met de opkomst van bugbountyprogramma's is er een toename van bedrijven die hun disclosurebeleid publiceren. Maar ondanks die toename is het nog steeds een probleem om het juiste team binnen een organisatie te vinden om een beveiligingsissue aan te kaarten." Hij vertelt dat hij 'bijna dagelijks' beveiligingsonderzoekers ziet die op sociale media vragen naar de contactinfo bij bedrijf X of Y - en zelf heeft hij daar ook last van. "Geen van die disclosure-regimes volgt een vast formaat", zegt hij. "Sommige staan in de footer van een website, andere zijn weer ondergebracht bij externe platforms zoals HackerOne." Security.txt, zegt Foudil, is bedoeld om het doorverwijzen van beveiligingsonderzoekers te standaardiseren. "Als beveiligingsonderzoeker hoef ik alleen maar te zoeken naar een security.txt-file om instructies te krijgen."
Wat staat er dan in?
De standaard beschrijft dat een security.txt in ieder geval twee verplichte componenten moet hebben. Dat zijn contactgegevens en een verloopdatum. De contactgegevens kunnen een e-mailadres bevatten, maar ook een link naar een interne of externe website. Daarmee wil Foudil ruimte laten voor externe bugbountyprogramma's. Bedrijven brengen hun responsibledisclosurebeleid in toenemende mate onder bij externe platforms die het werk voor hen uit handen nemen. HackerOne en het Belgische Intigriti zijn bekende, maar het aantal kleinere platforms groeit gestaag. Foudil ziet hun betrokkenheid bij security.txt dan ook als een teken van samenwerking en niet tegenwerking. Security.txt en bugbountyplatforms zijn complementair aan elkaar, vertelt hij aan Tweakers. "Mijn eigen security.txt is daar een perfect voorbeeld van", zegt hij. Daarin staat geen e-mailadres, maar een link naar zijn eigen pagina op HackerOne. "Ik geloof er ook sterk in dat bugbountyplatforms die mening delen. HackerOnes medeoprichter Jobert Abma droeg bij aan het opstellen van RFC-9166 en HackerOne maakte laatst een tool om zelf security.txt-files te genereren." Foudil wijst daarnaast op platforms als Intigriti die zelf een dergelijke file online hebben staan. "Je moet security.txt zien als een soort sitemap om beveiligingsonderzoekers op weg te helpen hun meldingen te doen. Daarbij helpt het om meer hostspecifieke informatie te genereren. Zo kunnen onderzoekers makkelijker zien welk beleid op welke specifieke host van toepassing is."
Wel denkt Foudil dat security.txt tegenwicht kan bieden aan de geslotenheid van de industrie. "Ik kan uit persoonlijke ervaring zeggen dat het aantal private disclosureprogramma's die op basis van uitnodiging werken veel groter is dan het aantal publieke programma's. Hoewel er een toename van disclosureprogramma's is, zit een meerderheid daarvan achter exclusieve, op uitnodiging gebaseerde programma's. Security.txt-files zijn per definitie publiek."
Als bedrijven een e-mailadres willen toevoegen, moet dat volgens de standaard vergezeld gaan met een mailto
. Dat vergroot de kans op spammails aanzienlijk: security.txt is er juist op gemaakt om parsable te zijn voor machines. De contactinformatie hoeft daarom niet alleen uit een e-mailadres te bestaan. Het kan ook een url naar een contactpagina zijn.
Verloopdatum
Het enige andere verplichte veld is een verloopdatum voor het bestand. Daarmee kan een onderzoeker meteen zien wanneer het beleid dat in het txt-bestand is opgenomen niet meer actueel is. Ze weten dan of het nog de moeite waard is om de contactinformatie te gebruiken.
Volgens Foudil is die sectie toegevoegd na zorgen van de IETF. "Zij waren bang dat de bestanden uiteindelijk achterhaald zouden zijn. Een terugkerende zorg was dat security.txt niet meer zou worden bijgewerkt door bedrijven en daarmee zo achterhaald zou worden dat het juist schadelijk zou kunnen worden." Foudil zegt dat deze 'Expires'-categorie goed kan helpen om te voorkomen dat een bestand achterhaald is. Hij pleitte er daarom voor die verplicht te maken in de standaard. "Ook hebben we een richtlijn genomen dat de vervaldatum niet te ver in de toekomst zou moeten liggen. Ik zou het zelfs goed hebben gevonden als daar een maximum op zat, bijvoorbeeld een jaar."
Er zijn meerdere optionele keuzes om toe te voegen aan security.txt:
Encryptie
Hiermee kunnen onderzoekers een melding ondertekenen met een PGP-sleutel. Dat moet een link zijn naar die sleutel: de opstellers merken op dat de sleutel zelf niet in het veld moet worden opgenomen. De standaard bevat ook de aanbeveling om het security.txt-bestand te ondertekenen. In dat geval kan het bedrijf verwijzen naar de verificatiesleutel, zodat de onderzoeker kan controleren of het txt-bestand nog legitiem is.
Erkenningen
Hier kan een link worden geplaatst naar een webpagina waar beveiligingsonderzoekers worden bedankt voor het vinden van een bug. Een plek op een dergelijke 'wall of fame' is voor sommige hackers belangrijk, al zullen veel professionele onderzoekers ook willen horen welke beloning ze naast de erkenning kunnen krijgen voor hun werk. Opvallend genoeg staat daarover niets in de RFC-9116-standaard.
Taalvoorkeur
Dit is een simpele lijst met welke talen onderzoekers mogen gebruiken in hun rapportages. Die hoeven volgens RFC-9116 niet in volgorde van belang te staan.
Canonicals
Bedrijven kunnen canonicals invoeren voor de plaats waar ze hun security.txt-bestand plaatsen. Dat is vooral interessant als bedrijven dat bestand ondertekenen: door een canonical hier vast te leggen kunnen onderzoekers makkelijker verifiëren of ze een legitiem bestand zien.
Beleid
Hier kan een link naar een responsibledisclosurebeleid worden vastgelegd. Het veld is niet verplicht, maar kan nuttig zijn voor professionele onderzoekers. Die kunnen in dat beleid vinden wat ze wel en niet mogen en kunnen aandragen en welke randvoorwaarden daaraan verbonden zijn.
Vacatures
Ietwat opvallend kunnen bedrijven een vacaturepagina koppelen aan het bestand. Onderzoekers kunnen zo vinden of ze bij het bedrijf in dienst kunnen komen.
Toekomst
Security.txt is officieel nog geen standaard, maar een voorgestelde tekst. Foudil zou dat wel graag willen. "De status van 'standaard' is op zichzelf niet zo veelzeggend, maar wel wat die status betekent. De IETF gebruikt een bepaalde definitie voor het iets tot standaard maakt. Die stelt dat een specificatie 'stabiel en breed begrepen is, technisch competent is, meerdere, onafhankelijke en interoperabele implementaties met substantiële operationale ervaring heeft, significante publieke steun heeft en breed bruikbaar is op het hele internet'. Als security.txt aan al die definities voldoet, helpt dat zeker met de verdere adoptie ervan en het verbeteren van de vindbaarheid van een disclosurebeleid." Foudil ziet daar eigenlijk maar één nadeel van. "Dan zou ik vooral een week bezig zijn alle referenties naar security.txt aan te passen naar 'voorgestelde standaard'."