De softwareontwikkelingslevenscyclus (SDLC) is een systematisch proces voor softwareontwikkeling dat de kwaliteit en correctheid van de code garandeert. Het doel is om hoogwaardige software te produceren binnen de vastgestelde tijd en het vastgestelde budget, conform de verwachtingen van de klant. Elke fase van de SDLC heeft zijn eigen proces en resultaten, die bijdragen aan de volgende fase. Enkele populaire SDLC-modellen zijn waterval, spiraal, iteratief en agile.
Er zijn slechts enkele SDLC-modellen die softwarebeveiliging expliciet en gedetailleerd behandelen. Het is echter noodzakelijk om veilige softwareontwikkelingspraktijken in elk SDLC-model op te nemen. Er zijn verschillende redenen waarom organisaties veilige softwareontwikkelingspraktijken zouden moeten implementeren, waaronder:
- Om het aantal kwetsbaarheden in vrijgegeven software te verminderen
- Om de potentiële impact van het misbruik van onopgemerkte kwetsbaarheden te minimaliseren
- Om de grondoorzaken van kwetsbaarheden aan te pakken en herhaling te voorkomen
Kwetsbaarheden omvatten niet alleen bugs die worden veroorzaakt door fouten in de programmering, maar ook zwakheden die worden veroorzaakt door onjuiste beveiligingsconfiguratie-instellingen, onjuiste vertrouwensaannames en verouderde risicoanalyses.
Wat is SSDF?
Nationaal instituut voor normen en technologie (NIST) heeft een Secure Software Development Framework ontwikkeld, ook wel SSDF genoemd, om de weerstand van software tegen kwetsbaarheden te versterken. Het definieert geen nieuwe terminologie, maar consolideert al lang bestaande best practices voor veilige softwareontwikkeling. Bij SSDF ligt de nadruk op het identificeren van best practices in plaats van op de tools, technieken en mechanismen die worden gebruikt om deze te implementeren.
Volgens NIST vallen de praktijken van de SSDF in vier hoofdcategorieën:
- Bereid de organisatie voor (PO)
Organisaties moeten ervoor zorgen dat hun mensen, processen en technologie voorbereid zijn om veilige softwareontwikkeling op organisatieniveau uit te voeren. Veel organisaties zullen ook enkele PO-praktijken toepassen op subgroepen van hun softwareontwikkeling, zoals individuele ontwikkelgroepen of projecten.
- Bescherm de software (PS)
Organisaties moeten alle softwarecomponenten beschermen tegen manipulatie en ongeautoriseerde toegang.
- Produceer goed beveiligde software (PW)
Organisaties moeten goed beveiligde software produceren met minimale beveiligingskwetsbaarheden.
- Reageren op kwetsbaarheden (RV)
Organisaties moeten resterende kwetsbaarheden in hun softwareversies identificeren en op de juiste manier reageren om deze kwetsbaarheden aan te pakken en te voorkomen dat soortgelijke kwetsbaarheden zich in de toekomst voordoen.
Elke praktijkdefinitie bevat de volgende elementen:
- Praktijk
De naam van de praktijk en een unieke identificatiecode, gevolgd door een korte uitleg over wat de praktijk inhoudt en waarom deze nuttig is.
- Taken
Een of meer handelingen die nodig zijn om een handeling uit te voeren.
- Notionele implementatievoorbeelden
Een of meer fictieve voorbeelden van soorten tools, processen of andere methoden die gebruikt kunnen worden om een taak te implementeren. Er zijn geen voorbeelden of combinaties van voorbeelden vereist, en de genoemde voorbeelden zijn niet de enige haalbare opties. Sommige voorbeelden zijn mogelijk niet van toepassing op bepaalde organisaties en situaties.
- Referenties
Verwijzingen naar een of meer gevestigde documenten over veilige ontwikkelingspraktijken en hun koppelingen aan een specifieke taak. Niet alle verwijzingen zijn van toepassing op alle gevallen van softwareontwikkeling.
NIST adviseert om bij het bepalen van de te implementeren praktijken de risico's af te wegen tegen de kosten, haalbaarheid en toepasbaarheid.
De SSDF is geen checklist. Het is eerder een leidraad voor het plannen en implementeren van een op risico's gebaseerde aanpak voor veilige softwareontwikkeling.
Voordelen van SSDF:
- Het kan organisaties in elke sector of gemeenschap ondersteunen, ongeacht hun omvang.
- Het kan worden toegepast op software die is ontwikkeld ter ondersteuning van informatietechnologie (IT), industriële controlesystemen (ICS), cyber-fysieke systemen (CPS) of het internet der dingen (IoT).
- Het kan worden geïntegreerd in elke bestaande softwareontwikkelingsworkflow en geautomatiseerde toolchain. Het mag echter geen negatieve impact hebben op organisaties die al sterke, veilige softwareontwikkelingspraktijken hebben.
- Hierdoor zijn de werkwijzen breed toepasbaar, in plaats van dat ze specifiek zijn voor bepaalde technologieën, platforms, programmeertalen, SDLC-modellen, ontwikkelomgevingen, besturingsomgevingen, tools, enzovoort.
Conclusie
Met de SSDF-architectuur van NIST wordt veilige softwareontwikkeling snel een verplichte prioriteit op grote schaal. Organisaties die SSDF implementeren, blijven hiermee beschermd tegen kwetsbaarheden in SDLC en beschermen hun softwaretoeleveringsketens.
Secure Software Development Framework (SSDF) versie 1.1: aanbevelingen voor het beperken van het risico op softwarekwetsbaarheden
