Het beperken van de beveiligingsrisico's van de softwaretoeleveringsketen impliceert vaak de implementatie van meerdere beveiligingslagen en verschillende strategieën. Maar een van de meest efficiënte manieren om uw software veilig te houden, is het aanpakken van mogelijke beveiligingsproblemen tijdens de ontwikkelingsfase van uw softwareapplicatie. Dit is vaak een uitdaging, aangezien slechts enkele levenscyclusmodellen voor softwareontwikkeling expliciet de kwesties van softwarebeveiliging behandelen. Om uw software veilig te houden, moet u veilige softwareontwikkelingspraktijken toepassen voor welk levenscyclusmodel voor softwareontwikkeling u ook kiest.
Het Secure Software Development Framework (SSDF) schetst enkele van de fundamentele praktijken die u moet volgen om de veiligheid van de software die u bouwt te garanderen. De SSDF is gebaseerd op standaard beveiligingspraktijken voor softwareontwikkeling die zijn opgesteld door het National Institute of Standards and Technology (NIST) en behandelt expliciet beveiligingsproblemen bij softwareontwikkeling. De SSDF-versie 1.1 is gedefinieerd in NIST SP 800-218 publicatie. Het raamwerk werd aanvankelijk in september 2021 gepubliceerd als een draft versie. Op 22 maart 2021 bracht NIST de definitieve versie van de SSDF 1.1 uit. Alle praktijken en taken op hoog niveau bleven hetzelfde, waarbij veel verschillen zich concentreerden rond de verschillende gegeven voorbeelden. Bij het beslissen welke praktijken moeten worden geïmplementeerd, beveelt NIST aan om risico's af te wegen tegen kosten, haalbaarheid en toepasbaarheid. Het automatiseren van zoveel mogelijk controles en processen ter bevordering van de softwarebeveiliging is een belangrijk kenmerk om te overwegen.
Als organisatie die werkt met een levenscyclusmodel voor softwareontwikkeling, moet u de richtlijnen van de SSDF implementeren als onderdeel van de algemene inspanningen om uw software te beveiligen tegen kwetsbaarheden in de softwaretoeleveringsketen. Het volgen van dit raamwerk zal helpen bij het opsporen van niet-geadresseerde kwetsbaarheden voordat de software wordt uitgebracht. Dit vermindert het risico en de impact van mogelijke beveiligingsuitbuitingen als gevolg van deze niet-gedetecteerde kwetsbaarheden. Dit artikel is een uitgebreide gids waarin gedetailleerd wordt beschreven wat het SSDF-framework is en hoe het bijdraagt aan de beveiliging van de softwaretoeleveringsketen.
De 4 praktijken van het Secure Software Development Framework
De SSDF-praktijken zijn gegroepeerd in vier categorieën. In het SSDF-framework wordt elke praktijk geïdentificeerd door een unieke identificatiecode en een korte uitleg over wat het is, waarom het nuttig is en de taken die moeten worden uitgevoerd om het te implementeren. Het raamwerk bevat ook voorbeelden van tools, processen en methoden voor het implementeren van de praktijken, met verwijzingen naar gevestigde veilige ontwikkelingspraktijkdocumenten. Hieronder volgen de vier pijlerpraktijken van Secure Software Development Framework (SSDF) versie 1.1:
Bereid de organisatie voor (PO)
Veilige softwareontwikkeling is sterk afhankelijk van mensen. Daarom is de eerste stap bij de implementatie van het SSDF ervoor te zorgen dat iedereen in uw organisatie voldoende voorbereid is op de veranderingen die het raamwerk zal vereisen. Om te beginnen moet u de specifieke beveiligingsvereisten identificeren van de software die u ontwikkelt, op basis van de tools die zij voor de softwareontwikkeling gaan gebruiken. Op deze manier kunt u beginnen met het voorbereiden van de mensen, processen en technologie die zij gebruiken, zowel op organisatorisch als individueel niveau.
Het voorbereiden van de organisatie komt meestal in de vorm van het verkrijgen van buy-ins van het topmanagement en het implementeren van de noodzakelijke training voor werknemers. Een deel van uw voorbereidingsinspanningen kan ook het implementeren van tools omvatten die helpen bij het automatiseren van processen en het creëren van een veilige omgeving voor ontwikkeling.
Bescherm de software (PS)
Het Secure Software Development Framework schetst praktijken voor het beschermen van alle componenten van uw software tegen ongeoorloofde toegang en manipulatie. Dit is een belangrijke stap om ongeoorloofde wijzigingen in de code, zowel onbedoeld als opzettelijk, te voorkomen en om de broncode en softwareconfiguratie van uw software te beschermen. Afhankelijk van de specifieke situatie kan het beschermen van uw software verschillende benaderingen met zich meebrengen. Wanneer de code niet bedoeld is om openbaar toegankelijk te zijn, kan dit diefstal van de software voorkomen en het voor aanvallers moeilijker of tijdrovender maken om kwetsbaarheden te vinden.
Door de praktijken te volgen die in deze sectie van de SSDF worden beschreven, zorgen softwareconsumenten ervoor dat de software die zij aanschaffen legitiem is en dat er niet mee is geknoeid. Bovendien helpt het bij het identificeren, analyseren en elimineren van kwetsbaarheden in software na release door softwarereleases te behouden.
Produceer goed beveiligde software (PW)
Om goed beveiligde software te produceren met minimale beveiligingsproblemen, zijn er basisstappen die moeten worden gevolgd gedurende de gehele levenscyclus van softwareontwikkeling. Deze omvatten:
- Veilige softwareconfiguraties kiezen
- Het evalueren van componenten van uw software van derden om de integriteit ervan te garanderen
- Ervoor zorgen dat de broncode van uw software voldoet aan veilige coderingspraktijken
- Het beoordelen, analyseren en testen van uw code op kwetsbaarheden en het aanpakken van eventuele problemen die zijn geïdentificeerd voordat de code wordt vrijgegeven
- Voorkomen van kwetsbaarheden met behulp van functies van buildtools zoals compilers en tolken
Reageren op kwetsbaarheden (RV)
Zelfs nadat uw software is uitgebracht, bestaat de kans dat u er kwetsbaarheden in ontdekt. Testers binnen uw organisatie, externe beveiligingsonderzoekers of zelfs klanten kunnen deze kwetsbaarheden ontdekken. Een belangrijk onderdeel van het beveiligen van uw software is het snel reageren op deze kwetsbaarheden zodra deze worden ontdekt. Hoe langer u een beveiligingslek verbergt, hoe groter de schade die het kan aanrichten. Elke organisatie heeft een programma voor het openbaar maken van kwetsbaarheden nodig, evenals ander beleid, om nieuwe kwetsbaarheden te analyseren en te beslissen hoe deze moeten worden aangepakt.
Wat zijn de belangrijkste punten waarmee u rekening moet houden?
Het belangrijkste doel van de SSDF is om organisaties te helpen bij het op één lijn brengen en prioriteren van beveiliging in hun softwareontwikkelingsactiviteiten. De SSDF houdt rekening met de bedrijfsvereisten, risicotoleranties en middelen bij het implementeren van beveiliging in de levenscyclus van softwareontwikkeling. Enkele van de belangrijkste overwegingen van dit raamwerk zijn:
-
Integreer beveiliging in de SDLC
De eerste stap bij het bouwen van veilige software is het integreren van beveiliging in de verschillende stappen en fasen van de levenscyclus van uw softwareontwikkeling. In wezen moet uw ontwikkelteam een op beveiliging gerichte cultuur hebben en dit moet al in de vroegste fase van het ontwikkelingsproces beginnen.
In de meeste gevallen introduceren veel van de standaardcoderingspraktijken talloze kwetsbaarheden die later door kwaadwillende partijen kunnen worden uitgebuit wanneer de software wordt uitgebracht. Dit is de reden waarom ontwikkelaars vanaf het begin aan beveiliging moeten denken en goed geïnformeerd moeten zijn over de strategieën die deze potentiële aanvalsroutes helpen verminderen.
Naast het nadenken over de menselijke aspecten van het beveiligen van uw software, moet u ook overwegen om vanaf het begin het proces van het testen en monitoren van uw software op mogelijke kwetsbaarheden te automatiseren.
-
Veilig softwareontwikkelingsbeleid
Een beleid voor veilige softwareontwikkeling is een formele reeks richtlijnen waarin de praktijken en procedures worden beschreven die uw organisatie volgt voor veilige softwareontwikkeling. Dit beleidsdocument bevat gedetailleerde instructies voor de mensen, technologie en processen die u volgt voor elke fase van de ontwikkelingslevenscyclus.
Een veilig softwareontwikkelingsbeleid is meer dan alleen een aanbeveling om de integriteit van uw software te vergroten. In sommige gevallen is het zelfs verplicht. Als uw software bijvoorbeeld moet voldoen aan beveiligingsnormen zoals de ISO 27001- of de SOC Type 2-normen, dan heeft u documentatie over veilig ontwikkelingsbeleid nodig. Gelukkig zijn er sjabloonhandleidingen die u voor dit doel kunt gebruiken. Uw softwarebeveiligingsteam kan de beleidsdocumentatie ook helemaal opnieuw opbouwen en aanpassen aan uw specifieke behoeften.
-
Externe leveranciers
Het is niet voldoende om veilige code te schrijven en intern aan de beveiligingsvereisten te voldoen. De meeste software gebruikt nog steeds componenten van externe leveranciers die mogelijk niet dezelfde beveiligingsnormen volgen als u. Deze codecomponenten van derden zijn gebruikelijke routes waarlangs software supply chain-aanvallen zijn uitgevoerd.
Als onderdeel van de inspanningen om de naleving van de beveiligingsvoorschriften gedurende de gehele levenscyclus van uw softwareontwikkeling te garanderen, moet u alle componenten van derden die u gebruikt in de gaten houden en ervoor zorgen dat de leveranciers volledig op de hoogte zijn van uw beveiligingsvereisten en volledig voldoen aan dezelfde beveiligingsnormen als u.
-
Bescherming van code-integriteit
Uw softwarecode en alle componenten ervan zijn potentiële aanvalspunten die kwaadwillende actoren kunnen misbruiken om kwetsbaarheden in uw software te injecteren. Om dit te voorkomen moeten alle codes in beveiligde opslagplaatsen worden bewaard, wanneer ze veilig zijn voor elke vorm van manipulatie.
Een deel van de inspanningen om de code-integriteit te behouden, is onder meer ervoor zorgen dat alleen geautoriseerde ontwikkelaars toegang hebben tot de broncode. De door u gekozen codeopslagplaats moet functies hebben om dit te garanderen, evenals extra functies om het aanmeldingsproces te beveiligen en eventuele wijzigingen in uw code te controleren. U kunt de code-integriteit verder verbeteren door automatisering in te zetten voor het monitoren van toegangsgegevens en het uitvoeren van periodieke codeanalyses.
-
Vooraf geïnstalleerde malware
Een veel voorkomende route voor aanvallen op de softwaretoevoerketen is het verbergen van beveiligingskwetsbaarheden in vooraf geïnstalleerde malware. Dit kan een virus, ransomware, Trojaans paard of spyware zijn die grote schade aan uw software kan aanrichten. De malware kan vooraf zijn geïnstalleerd op apparaten of vertrouwde software die u gebruikt tijdens het softwareontwikkelingsproces, of zelfs op het systeem van een derde partij. Deze malware kan lange tijd verborgen blijven totdat een legitiem, digitaal ondertekend proces het mogelijk maakt zich via uw systeem te verspreiden. Om uw softwareontwikkeling te beveiligen, moet u oppassen voor deze vooraf geïnstalleerde malware en maatregelen treffen om deze te identificeren en te verwijderen.
-
Code testen, beoordelen en checklists
De traditionele benadering van softwareontwikkeling laat het testen van code doorgaans over aan het einde van de levenscyclus van de softwareontwikkeling. Deze reactieve aanpak om softwarekwetsbaarheden op te sporen is echter niet erg effectief. Een efficiëntere aanpak is het opzetten van geautomatiseerde tests om tijdens het bouwen voortdurend fouten in de code op te sporen. Ontwikkelaars moeten hun code ook handmatig beoordelen en controleren om frustratie te voorkomen wanneer er later fouten worden ontdekt.
Omdat er talloze onderdelen en componenten zijn die moeten worden bijgehouden, is het zinvol om tijdens het bouwen checklists te maken. Dit helpt uw softwareontwikkelings- en monitoringteam ervoor te zorgen dat alle acties die zijn vastgelegd in het SSDF-beleid naar behoren worden nageleefd.
-
Beperking van kwetsbaarheden
Ondanks naleving van de SSDF en andere beveiligingsstandaarden zijn kwetsbaarheden vrijwel onvermijdelijk bij de ontwikkeling van software. Het belangrijkste is om klaar te zijn om deze kwetsbaarheden te beperken wanneer ze zich voordoen. Dit zou betekenen dat er een team moet zijn met duidelijk opgestelde plannen en strategieën om beveiligingsincidenten aan te pakken zodra ze zich voordoen.
Hoe snel uw organisatie kan reageren op beveiligingsproblemen, zal een wereld van verschil maken bij het verminderen van de negatieve gevolgen van dergelijke aanvallen. Wanneer softwarefouten snel worden opgespoord en verholpen, hebben kwaadwillende actoren een kortere periode om deze te misbruiken. Het beperken van kwetsbaarheden is dus een belangrijk aspect van veilige softwareontwikkeling waar elke organisatie aandacht aan moet besteden.
-
Veilige standaardinstellingen
Uw nieuwe software moet standaardbeveiligingsinstellingen hebben die gebruikers helpen beschermen tegen softwarekwetsbaarheden, zelfs zonder geavanceerde kennis. U kunt ook maatregelen implementeren die gebruikers informeren over deze standaardinstellingen, zodat ze zelfs in de beginfase van de adoptie van uw software beschermd blijven.
Conclusie
Het Secure Software Development Framework (SSDF) is een reeks geavanceerde praktijken die moeten worden geïntegreerd in de softwareontwikkelingslevenscyclus van elke organisatie. Door de werkwijzen die in dit raamwerk zijn uiteengezet al vroeg in het ontwikkelingsproces te volgen, kunt u de beveiligingsfouten in de versie van uw software die u uiteindelijk uitbrengt, verminderen. De SSDF helpt u ook bij het detecteren van beveiligingsrisico's en vermindert de potentiële impact van niet-gedetecteerde kwetsbaarheden die in de definitieve release terechtkomen. Dit raamwerk is van cruciaal belang om te voorkomen dat dergelijke beveiligingsproblemen zich in de toekomst herhalen.