Naarmate organisaties hun gegevens beter beveiligen, moeten ze verschillende problemen aanpakken en oplossen. De meest kritieke daarvan is de blootstelling van gevoelige gegevens zoals API-sleutels, wachtwoorden of tokens. Om dit probleem op te lossen, gebruiken organisaties geheimenscanning om de blootgestelde geheimen te vinden. Maar wat is geheimenscanning? Het is een proces waarbij gevoelige gegevens worden gevonden in bijvoorbeeld een codebase, configuratiebestanden of samenwerkingstools zoals Jira, Confluence, enz.
Het percentage risico van blootgestelde geheimen neemt exponentieel toe naarmate de complexiteit van softwaretoepassingen toeneemt. Secret scanning wordt van het grootste belang omdat gelekte wachtwoorden of een gelekte API-sleutel aanzienlijke financiële verliezen kunnen veroorzaken voor organisaties, aangezien ze kunnen leiden tot datalekken en ongeoorloofde toegang.
Deze blog geeft u een volledig overzicht van geheimenscanning en het belang ervan in het cyberbeveiligingslandschap. We zullen de best practices verkennen om een sterke beveiligingspositie te garanderen door middel van geheimenbeheer.
Inzicht in geheimen
Laten we eens kijken naar de rol van geheimen in de beveiliging van applicaties en systemen bij softwareontwikkeling.
Wat zijn geheimen?
Om activiteiten uit te voeren zoals het opzetten van beveiligde communicatiekanalen, het identificeren van gebruikers, het beschermen van persoonlijke apparaten of het verkrijgen van toegang tot persoonlijke gegevens, moet men toegang hebben tot vertrouwelijke inloggegevens, die geheimen worden genoemd.
Er zijn verschillende soorten geheimen, zoals API-sleutels, OAuth-tokens, SSH-sleutels, databaseverbindingsstrings en versleutelingssleutels.
Soorten geheimen die vaak voorkomen in code en configuratiebestanden
Geheimen kunnen op verschillende plaatsen worden aangetroffen, zoals in code, Jira-tickets of zelfs configuratiebestanden. Hier volgen enkele veelvoorkomende soorten geheimen en waar ze kunnen worden aangetroffen:
- Hardgecodeerde inloggegevens: Om eerlijk te zijn: als het gemakkelijk is, is het waarschijnlijk verkeerd. Het hardcoderen van geheimen of inloggegevens in code is een handige manier voor ontwikkelaars, omdat ze zo geen extra configuratie en code hoeven te schrijven, maar dit kan rampzalig zijn voor de organisatie. Als gevoelige informatie zoals wachtwoorden of API-tokens rechtstreeks in de broncode van de applicatie worden hardgecodeerd en de code openbaar wordt gemaakt op de GitHub-repository, kunnen aanvallers die inloggegevens extraheren en hergebruiken.
- Configuratiebestanden Configuratiebestanden zijn een geweldige manier om alle gegevens, zoals de API-sleutel, het databasewachtwoord of wat de applicatie ook nodig heeft om te kunnen draaien, bij te houden, maar ze brengen hetzelfde risico met zich mee. Iedereen kan toegang krijgen tot het bestand en alle geheimen of gevoelige informatie daarin vinden als het bestand niet privé of op een veilige manier wordt bewaard.
- Omgevingsvariabelen Het gebruik van omgevingsvariabelen is een betere en geschiktere manier om geheimen op te slaan dan lokale applicaties. Toch kunnen ze ook tot blootstelling leiden als uw runtime-logs die informatie weergeven.
- Tools voor geheimenbeheer Veel organisaties gebruiken tools zoals HashiCorp Vault, AWS Secrets Manager of Azure KeyVault om hun geheimen te versleutelen en op te slaan. Deze tools bieden veilige opslag, versleuteling en toegangscontrole voor geheimen. Om deze tools echter zo efficiënt mogelijk te gebruiken, moeten we nog steeds de juiste beveiligingspraktijken toepassen.
De risico's van blootgestelde geheimen
Wanneer geheimen onvoldoende worden beschermd, kan dit ernstige gevolgen hebben voor organisaties. Het is erg belangrijk om te begrijpen welke risico's er zijn als uw geheimen openbaar worden gemaakt.
Gevolgen van gelekte geheimen
- Ongeautoriseerde toegang: Aanvallers zijn altijd op zoek naar manieren om een systeem te misbruiken, en de gemakkelijkste manier om dit te doen is door de gelekte geheimen van de systemen en hun diensten te vinden. Elke applicatie, database of cloudservice wordt beschermd door een API-sleutel of wachtwoord, die, als ze worden blootgesteld, in verkeerde handen kunnen vallen en ertoe kunnen leiden dat zij (bedreigers) ongeoorloofde toegang krijgen.
- Misbruik van diensten: In het verleden zijn er wereldwijd gevaarlijke DDOS-aanvallen geweest, wat in feite neerkomt op het misbruiken van een dienst om deze te verstoren en te overbelasten, waardoor de dienst onbeschikbaar wordt of de operationele kosten van de aanbieder stijgen. Dit kan gebeuren als de API-sleutel voor die dienst uitlekt en de aanvallers er toegang toe krijgen en deze misbruiken om voortdurend een API aan te vragen. Dit kan de dagelijkse activiteiten van de organisatie verstoren en ook haar reputatie schaden.
- Regelgevende sancties: Als de geheimen van een organisatie op de een of andere manier in gevaar komen door een datalek, kan deze in juridische problemen komen en hoge boetes moeten betalen. Bedrijven moeten de juiste regelgeving volgen om de gegevensbeveiliging te waarborgen.
- Verlies van vertrouwen van klanten: Het vertrouwen van klanten is wat de organisatie draaiende houdt. Als er datalekken plaatsvinden in een organisatie, kunnen klanten hun vertrouwen verliezen, wat op zijn beurt zal leiden tot lagere verkopen.
Hoe worden geheimen blootgelegd
De geheimen kunnen op vele manieren worden misbruikt als ze in verkeerde handen (bedreigers) terechtkomen:
- Hardcoding: Ontwikkelaars schrijven geheimen in de broncode, die zichtbaar kunnen worden als de code wordt gedeeld of openbaar wordt gemaakt.
- Misconfiguraties: Onjuiste instellingen of misconfiguraties, zoals openbare cloudopslagbuckets, kunnen onbedoeld geheimen lekken.
- Onveilige praktijken: Ontwikkelaars kunnen ook gemakkelijk fouten maken en per ongeluk geheimen delen in chats en projecttools en vergeten te verwijderen wat in de eerste plaats niet had mogen worden gedeeld.
- CI/CD-complexiteit: Geautomatiseerde pijplijnen hebben meestal geheimen nodig, en die kunnen uitlekken als ze niet correct worden behandeld in het bouw- of implementatieproces.
Hoe werken tools voor het scannen van geheimen?
De tools voor het scannen van geheimen zijn gemaakt om vertrouwelijke informatie in coderepositories of andere gegevensbronnen te scannen en op te sporen, waaronder wachtwoorden, API-sleutels, toegangstokens, enz. Deze tools werken door tekst of code te parseren en patronen te identificeren die lijken op bekende geheime formaten.
De eerste stap van de scan is het doorzoeken van de doelcodebase of gegevensbron. Zodra dat is gebeurd, wordt elk bestand regel voor regel doorlopen en wordt er naar bepaalde patronen gezocht. Er worden veel reguliere expressies gebruikt om deze patronen te specificeren. Dit zijn reeksen tekens die een zoekpatroon vormen.
De algoritmen die geheime scanning gebruikt, zijn doorgaans patroonherkenning en entropieanalyse. Pattern matching vergelijkt de tekst (de waarde van een geheim) met verschillende typespecifieke regex-patronen.
Willekeurig gegenereerde geheimen (strings met hoge entropie) worden gedetecteerd met entropieanalyse. De willekeurigheid wordt berekend aan de hand van de verdeling van tekens, en dit wordt als veiliger beschouwd dan andere technieken omdat het onvoorspelbaarheid biedt.
Beperkingen van tools voor het scannen van geheimen
Er zijn verschillende uitdagingen bij het gebruik van tools voor het scannen van geheimen. Een daarvan is vals-positieve resultaten, waarbij de tool niet-geheime strings als geheimen detecteert. Dit kan leiden tot valse waarschuwingen en verspilling van tijd en middelen.
De volgende beperking doet zich voor als de geheime informatie hard gecodeerd en versleuteld is. Ontwikkelaars kunnen geheime informatie zelfs opsplitsen in verschillende stukjes die in afzonderlijke variabelen worden opgeslagen, of coderingstrucs gebruiken die scantools moeilijk kunnen detecteren.
Scannen van geheime informatie in verschillende omgevingen
Het scannen van geheime informatie is een belangrijke beveiligingsmaatregel die in moderne tools moet werken. Elke tool of elk platform heeft zijn eigen uitdagingen en vereist een andere aanpak om geheimen te detecteren.
Versiebeheersystemen
- GitHub: Geïntegreerd in GitHub Advanced Security, identificeert geheimenscanning bekende geheime formaten zoals inloggegevens en kan automatisch uw repositories scannen.
- GitLab: GitLab biedt Secret Detection als onderdeel van zijn CI/CD-pijplijn. U kunt pijplijnen instellen om via de webinterface te draaien op commits, merge requests of geplande pijplijnen, wat veel flexibiliteit biedt in wanneer en hoe deze scans worden uitgevoerd.
- BitBucket: BitBucket is min of meer afhankelijk van producten als Nightfall of GitGuardian, dit zijn integraties van derden die repositories continu monitoren. Het grootste voordeel is dat deze tools aanpasbaar zijn en kunnen worden afgestemd op de specifieke vereisten en beveiligingsbeleidsregels van uw organisatie.
Het moeilijkste aan het gebruik van geheimen in versiebeheersystemen is het omgaan met de geschiedenis van geheimen. Nadat een geheim is vastgelegd en gepusht, blijft het in de geschiedenis van die repository staan, zelfs als de ontwikkelaar het later verwijdert.
Voor dit probleem gebruiken veel organisaties push-beveiliging en pre-commit hooks om geheimen te scannen voordat ze worden vastgelegd, waardoor een beveiligingscontrole op geheimen wordt afgedwongen.
Samenwerkingstools
Samenwerkingsplatforms zoals Jira, Confluence en Slack hebben een aparte reeks uitdagingen. Geheimen kunnen worden doorgegeven in issuebeschrijvingen, opmerkingen of wikipagina's, enz. op Jira en Confluence. Om de omgeving veilig te houden, hebben sommige organisaties API's waarmee inhoud gepland kan worden gescand om te controleren op nieuwe geheimen.
Geheimen kunnen worden gedeeld via een chat/groepsbericht of door bestanden te uploaden op Slack en soortgelijke berichtenplatforms. Het grootste probleem bij deze platforms is de dynamische inhoud. De informatie verandert voortdurend, met elke dag nieuwe berichten die worden toegevoegd, bewerkt of verwijderd.
Hoe te reageren op gevonden geheimen?
Als een organisatie geheimen in haar code ontdekt, is de eerste stap om te bepalen hoe ernstig de situatie is. Zoek uit welk type geheim is gelekt (zoals een API-sleutel of wachtwoord) en wat het potentiële effect ervan is op uw systeem. Als u hier antwoord op heeft, kunt u gemakkelijker uw IR-plan (incidentresponsplan) op te stellen en een grens te trekken tussen hoe erg de situatie is.
Neem vervolgens onmiddellijk maatregelen om het blootgestelde geheim in te trekken of uit te schakelen, zodat andere ongeoorloofde omleidingen worden geblokkeerd. Trek het oude geheim in en geef een nieuw geheim uit. Dit proces wordt rotatie genoemd. Controleer tegelijkertijd uw logboeken en systemen op ongeoorloofde toegang of onregelmatige activiteiten die erop kunnen wijzen dat iemand misbruik heeft gemaakt van het geheim.
Ten slotte moet er een uitgebreid incidentrapport worden opgesteld waarin wordt beschreven hoe het geheim is uitgelekt en welke stappen zijn genomen om dit te verhelpen. Dit is informatie waaruit u kunt leren en waarmee u uw geheimenbeheer kunt verbeteren.
Omgaan met valse positieven en valse negatieven
Valse positieven zijn gevallen waarin een tool de aanwezigheid van een geheim in code signaleert, maar er geen is. Valse negatieven daarentegen doen zich voor wanneer een tool een daadwerkelijk geheim niet opmerkt. Dit zijn problemen die ervoor kunnen zorgen dat tools voor het scannen van geheimen minder effectief zijn.
Valse positieven verspillen de tijd van ontwikkelaars met non-issues, terwijl valse negatieven juist de kans op hacking vergroten door onopgemerkte problemen.
Organisaties kunnen een aantal maatregelen nemen om deze problemen tot een minimum te beperken. De nauwkeurigheid moet op een aantal manieren worden verbeterd, onder meer door configuraties en tools voor scannen regelmatig bij te werken. Machine learning helpt het percentage valse positieven te verminderen, omdat het kan leren van eerdere scans en de detectie kan verbeteren. Contextuele analyse, zoals de locatie van de gebruikte code, kan verder helpen om te onderscheiden wat geheimen zijn en wat niet.
Ontwikkelaars trainen in geheimenbeheer
Leer ontwikkelaars altijd hoe ze veilige code kunnen schrijven zonder hun geheimen bloot te geven. Elke sessie moet zich richten op essentiële zaken, zoals het lokaliseren van geheimen, het kennen van de risico's van het blootgeven van geheimen en het gebruik van best practices voor wachtwoordbeheer.
Hetzelfde geldt voor het creëren van een cultuur van veiligheidsbewustzijn binnen de ontwikkelingsteams. Om dit te bereiken, kunnen leidinggevenden een omgeving creëren waarin openhartig over beveiligingsgewoontes en -ervaringen kan worden gesproken, en kunnen ze zorgen voor voortdurende bijscholing.
Wat zijn de best practices voor het beheer van geheimenscans?
Effectief beheer van geheimenscans is cruciaal voor het waarborgen van de veiligheid van gevoelige informatie van een organisatie. Hier zijn vijf belangrijke best practices die u kunnen helpen de effectiviteit van geheime scans te verbeteren:
1. Implementeer een uitgebreid beleid voor het scannen van geheimen
Het beleid voor het scannen van geheimen moet definiëren wat een geheim is en specificeren welke omgevingen moeten worden gescand en hoe vaak ze worden gescand met de tools voor het scannen van geheimen. Het moet beschrijven hoe het scannen van geheimen binnen de organisatie moet worden beheerd, het beleid rond deze praktijk handhaven en nieuwe rollen definiëren. Het beleid moet worden herzien en bijgewerkt om nieuwe soorten geheimen of bedreigingen aan te pakken.
2. Geheimscanning integreren in de ontwikkelingscyclus
Door vroegtijdig te scannen op geheimen en door overal in het ontwikkelingsproces te scannen, zullen bedrijven nooit geheimen blootgeven. Dit kan in de vorm van pre-commit hooks in versiebeheersystemen om geheimen op te sporen voordat ze worden vastgelegd, of geheimenscanning als onderdeel van CI/CD-pijplijnen.
3. Geef prioriteit aan waarschuwingen en beheer ze effectief
Te veel waarschuwingen van tools voor het scannen van geheimen kunnen leiden tot waarschuwingsmoeheid als ze niet correct worden afgehandeld. Gebruik een systeem om een waarschuwing te triëren op basis van de ernst en de mogelijke impact ervan. U kunt geheimen indelen in categorieën op basis van hun ernst en gevoeligheid. Gebruik automatisering om waarschuwingen te triëren en ze naar verschillende teams door te sturen voor oplossing. Real-time waarschuwingen zorgen voor een onmiddellijke reactie op blootstellingen met een hoog risico en elimineren het probleem dat beveiligingsteams overweldigd worden door gegevens.
4. Voer regelmatig audits en penetratietests uit
Naast geautomatiseerde scans, handmatige audits en penetratietests ondersteund, die geheimen aan het licht kunnen brengen die een geautomatiseerde tool mogelijk over het hoofd ziet. Ze kunnen er ook voor zorgen dat het beleid voor het scannen van geheimen uniform wordt nageleefd in de hele organisatie door handmatige audits uit te voeren.
5. Zorg voor voortdurende opleiding en training
Het scannen op geheimen is slechts zo effectief als het bewustzijn en de medewerking van alle medewerkers, met name die in ontwikkeling of operations. De meeste medewerkers die met geheimen werken, begrijpen vaak niet waarom goed geheimenbeheer nodig is of hoe ernstig het kan zijn als je eigen sleutels uitlekken. Het scannen van geheimen, training in het geven van waarschuwingen en veilige manieren om gevoelige informatie te delen, moeten deel uitmaken van deze training.
CNAPP Marktgids
Krijg belangrijke inzichten in de staat van de CNAPP-markt in deze Gartner Market Guide for Cloud-Native Application Protection Platforms.
LeesgidsToekomstige trends in geheime scans
Geheime scans hebben zich snel ontwikkeld dankzij technologische vooruitgang en de toegenomen complexiteit van beveiligingsrisico's op het gebied van cyberbeveiliging. Vijf belangrijke trends die we in de toekomst van geheim scannen kunnen verwachten, zijn:
- Integratie van kunstmatige intelligentie en machine learning: Als ze worden aangedreven door de juiste set AI- en ML-algoritmen, kunnen geheime scantools zeker het aantal valse positieven verminderen, unieke geheime patronen vinden en zich op een flexibelere manier aanpassen aan nieuwe geheimen dan op regels gebaseerde technieken. Ze kunnen ook historische gegevens gebruiken om te voorspellen of de geheimen zouden zijn blootgesteld.
- Shift-Left-beveiligingspraktijken: Geheime scans en andere beveiligingspraktijken worden steeds vaker eerder in het ontwikkelingsproces geïntegreerd. Bedrijven moeten de “shift-left” om lekken of verkeerd gebruik van geheimen in code op te sporen voordat deze wordt geïmplementeerd.
- Geautomatiseerde herstelmaatregelen: Naast detectie kunnen bestaande tools worden verbeterd zodat ze automatisch actie kunnen ondernemen. Dit betekent bijvoorbeeld dat gecompromitteerde inloggegevens automatisch worden gewijzigd of dat de toegang tot gecompromitteerde geheimen tijdelijk wordt geweigerd, waardoor de tijd tussen detectie en oplossing wordt verkort.
Conclusie
Organisaties hechten tegenwoordig veel belang aan het beveiligen van alle gevoelige informatie in het digitale tijdperk. Blootgestelde geheimen kunnen leiden tot ongeoorloofde toegang, datalekken en aanzienlijke reputatieschade. Het is erg belangrijk om te begrijpen hoe geheimen worden blootgesteld en deze effectief te beheren.
Veilige praktijken, zoals het gebruik van tools voor geheimenbeheer zoals HashiCorp Vault, zijn erg belangrijk om geheimen veilig te houden. Op dezelfde manier bevordert het ook een cultuur van veiligheidsbewustzijn binnen ontwikkelingsteams om risico's met betrekking tot geheimen gemakkelijk te identificeren en te verhelpen.
Door geheimen als een laag te behandelen en teams voortdurend te trainen in het naleven van beveiligingsnormen voor codering, maakt u uw organisatie veiliger. Met steeds geavanceerdere bedreigingen zorgt een proactieve strategie voor geheimenbeheer ervoor dat gevoelige informatie veilig blijft en het vertrouwen van klanten en andere belanghebbenden behouden blijft.
FAQs
API-sleutels, wachtwoorden en andere inloggegevens kunnen hard gecodeerd zijn in broncode en configuratiebestanden, waardoor ze blootgesteld kunnen worden. Het proces waarbij deze gevoelige inloggegevens worden gedetecteerd, wordt geheim scannen genoemd. Organisaties moeten best practices volgen om ervoor te zorgen dat geheimen niet onbedoeld in openbare repositories worden blootgesteld, om datalekken en ongeoorloofde toegang te voorkomen.
Secret scanning bestaat voornamelijk uit statische en dynamische analyse. Wanneer de code in rust wordt gescand om geheimen te zoeken door middel van patroonherkenning, wordt dit statische analyse genoemd, terwijl het dynamische analyse wordt genoemd als de tools het geheim tijdens de uitvoering identificeren. Tegenwoordig, met de vooruitgang van AI in de cyberbeveiligingsindustrie, zien we dat er maar weinig tools zijn die gebruikmaken van machine learning-algoritmen om de detectienauwkeurigheid te verhogen door te verwijzen naar eerdere scans, wat leidt tot minder valse positieven.
Secret scanning-waarschuwingen worden gegenereerd zodra tools een mogelijke blootstelling van geheimen detecteren. De verantwoordelijkheid om op een waarschuwing te reageren ligt bij zowel het ontwikkelteam als het beveiligingsteam. Ontwikkelaars lossen het probleem op en het beveiligingsteam adviseert hen over hoe ze het probleem kunnen oplossen en controleert of dit is gebeurd.
Om Git Secrets Scan te gebruiken, installeert u eerst Git Secrets met behulp van pakketbeheerders zoals Homebrew of door het te downloaden van de officiële GitHub-repository. Na de installatie initialiseert u Git Secrets door git secrets –install uit te voeren in uw repository om hooks in te stellen die bij het committen naar geheimen scannen. U kunt uw codebase handmatig scannen op blootgestelde geheimen met behulp van het commando git secrets –scan. Bekijk ten slotte alle waarschuwingen en onderneem passende actie, zoals het intrekken van blootgestelde geheimen en het vervangen ervan.