Bei der Ent­wick­lung von Soft­ware stel­len sich die Ent­wick­lungs­ver­ant­wort­li­chen die Fra­ge, ob die Soft­ware sicher ist und auch einer tech­ni­schen Prü­fung oder sogar einem Cyber­an­griff stand­hält. Hier soll­ten wir natür­lich nicht an pri­vat ent­wi­ckel­te Soft­ware z.B. für die Heim­au­to­ma­ti­sie­rung oder zum Sor­tie­ren der Urlaubs­fo­tos den­ken, son­dern an kom­mer­zi­el­le Soft­ware für den Ein­satz im eige­nen Unter­neh­men vor­ge­se­hen sind oder sogar über Pro­duk­te, die an Drit­te ver­kauft werden.

Wie beginnt man jedoch eine siche­re Soft­ware zu entwickelt?

Spoi­ler-Alarm: Bereits vor der Planungsphase!

Egal, ob man sei­ne Soft­ware agil z.B. mit Scrum oder klas­sisch mit der Was­ser­fall­me­tho­de oder dem davon abge­lei­te­ten V‑Modell ent­wi­ckelt, muss für eine siche­re Soft­ware-Ent­wick­lung ein Soft­ware Deve­lo­p­ment Life­cy­cle (SDLC) doku­men­tiert wer­den, der in allen Pha­sen die Infor­ma­ti­ons­si­cher­heit über Secu­re Design und Secu­re Coding berück­sich­tigt. Die fol­gen­den acht Pha­sen des SDLC haben sich auch bei klei­nen Ent­wick­ler­teams bewährt:

Software Development Lifecycle - SDLC Prozess in 8 Stufen

Risi­ko­ana­ly­se

1. Risi­ko­ana­ly­se: noch bevor es mit den tech­ni­schen Details und den funk­tio­nel­len Busi­ness­an­for­de­run­gen los geht, müs­sen die Risi­ken in Bezug auf Ver­trau­lich­keit, Inte­gri­tät und Ver­füg­bar­keit erho­ben wer­den und not­wen­di­ge Infor­ma­ti­ons­si­cher­heits­maß­nah­men fest­ge­legt wer­den. Rest­ri­si­ken müs­sen erkannt und vom Pro­dukt­ver­ant­wort­li­chen akzep­tiert werden.

2. Pla­nung: In der Pla­nungs­pha­se müs­sen die zuvor iden­ti­fi­zier­ten Risi­ken ana­ly­siert und Maß­nah­men für deren Besei­ti­gung kon­kre­ti­siert wer­den. Das Haupt­ziel die­ser Pha­se ist, ein fer­ti­ges Kon­zept inkl. Sicher­heits­per­spek­ti­ve und deren Test­fäl­le zu erzeu­gen, dass die zuvor erstell­ten Risi­ken mit einbezieht.

3. Design: Beim Design von Soft­ware sind neben den funk­tio­nel­len Anfor­de­run­gen in Abhän­gig­keit der Kri­ti­k­ali­tät der ver­ar­bei­te­ten Daten und der iden­ti­fi­zier­ten Risi­ken die fol­gen­den Schutz­zie­le zu berücksichtigen:
— Ver­trau­lich­keit, z.B. Authen­ti­sie­rung, Ver­schlüs­se­lung, siche­re Protokolle;
— Inte­gri­tät, z.B. Prüf­sum­men und Signa­tu­ren, Ein­schrän­kung der Zugriffs­rech­te, Über­wa­chung der Ände­run­gen, Transaktionslogs;
— Ver­füg­bar­keit, wie Hard­ware-Red­un­dan­zen, red­un­dan­te Daten­hal­tung, DoS Schutz;
— sowie die erwei­ter­ten Schutz­zie­le Authen­ti­zi­tät, Nicht­ab­streit­bar­keit, Zure­chen­bar­keit und Datenschutz.

4. Ent­wick­lung: In die­ser Pha­se fin­det die tech­ni­sche Umset­zung des Pro­jek­tes statt. Hier­bei müs­sen die vom Unter­neh­men fest­ge­leg­ten tech­ni­sche und orga­ni­sa­to­ri­sche Maß­nah­men (TOMs) berück­sich­tigt wer­den, aber auch von Ent­wick­le­rIn­nen auf­ge­deck­te Schwach­stel­len und der Ein­satz von KI gere­gelt werden.

5. Tes­ten und Inte­gra­ti­on: Die­ser ver­pflich­ten­de Schritt vor jedem Release regelt die Soft­ware- und Funk­ti­ons­tests, die opti­mal über auto­ma­ti­sier­te Tests erfol­gen. Berück­sich­ti­gen Sie in die­ser Pha­se auch Unit-Tests / Modul­tests und den Ein­satz von Cloud-basier­ter KI für die Software-Tests.
— Ver­trau­lich­keit, z.B. Authen­ti­sie­rung, Ver­schlüs­se­lung, siche­re Protokolle;
— Inte­gri­tät, z.B. Prüf­sum­men und Signa­tu­ren, Ein­schrän­kung der Zugriffs­rech­te, Über­wa­chung der Ände­run­gen, Transaktionslogs;
— Ver­füg­bar­keit, wie Hard­ware-Red­un­dan­zen, red­un­dan­te Daten­hal­tung, DoS Schutz;
— sowie die erwei­ter­ten Schutz­zie­le Authen­ti­zi­tät, Nicht­ab­streit­bar­keit, Zure­chen­bar­keit und Datenschutz.

6. Frei­ga­be von Release: Die Frei­ga­be von Soft­ware-Releases (Release­builds) erfolgt gemäß einem doku­men­tier­ten Pro­zess und zu jeder Release wird eine Release-Doku­men­ta­ti­on erstellt, die neben den funk­tio­na­len Aspek­ten der Soft­ware auch die Infor­ma­ti­ons­si­cher­heit berück­sich­tigt. Hier­zu zäh­len auch die Soft­ware Bill of Mate­ri­als (SBOM).

7. War­tung und Betrieb: Nach­dem die Soft­ware abge­nom­men und alle Sicher­heits­tests erfolg­reich bestan­den wur­den, erfolgt die Trans­for­ma­ti­on des Ent­wi­ckel­ten in einen Betriebs­zu­stand. Für die Bewah­rung der Inte­gri­tät und War­tung der Soft­ware muss ein Moni­to­ring ein­ge­führt wer­den, dass den Betriebs­zu­stand in Hin­blick auf die Sicher­heit regel­mä­ßig überprüft.

8. Ent­sor­gung: Bereits bei der Ver­öf­fent­li­chung einer Soft­ware-Release soll­te das End-of-Sale und End-of-Life Datum fest­ge­legt wer­den. Fris­ten für die ent­spre­chen­den Ankün­di­gun­gen sind zu regeln und die Metho­de wie Kun­den über EoS und EoL infor­miert wer­den sind zu defi­nie­ren. Hier wird zukünf­tig der EU Cyber Resi­li­ence Act (CRA) eine gro­ße Rol­le spie­len, da gesetz­lich min­des­tens für 5 Jah­re kos­ten­freie Sicher­heits­up­dates ange­bo­ten wer­den müssen.

Was müs­sen Soft­ware ent­wi­ckeln­de Unter­neh­men zur Erfül­lung von ISO 27001, TISAX®, DORA, NIS‑2 oder dem EU Cyber Resi­li­ence Act CRA tun?

  1. Regeln Sie die Ver­ant­wort­lich­kei­ten für Infor­ma­ti­ons­si­cher­heit in Ihrem Entwicklungsteam.
  2. Erstel­len Sie Vor­ga­ben für die siche­re Soft­ware-Ent­wick­lung, Aus­gangs­ba­sis kann die Vor­la­ge Secu­re Coding Manu­al der SEC4YOU sein.
  3. Legen Sie tech­ni­sche und orga­ni­sa­to­ri­sche Maß­nah­men fest, die von den Ent­wick­le­rIn­nen ein­zu­hal­ten sind.
  4. Füh­ren Sie einen SDLC Pro­zess ein, der die Infor­ma­ti­ons­si­cher­heit umfas­send berück­sich­tigt und eta­blie­ren Sie den Pro­zess sowohl in Brownfield‑, als auch Greenfield-Projekten.
  5. Schu­len Sie Ihre Ent­wick­le­rIn­nen und Tes­te­r­In­nen regel­mä­ßig auf Secu­re Coding und Secu­re Design. Ziel­ge­rich­te­te Secu­re Coding Schu­lun­gen fin­den Sie im SEC4YOU Online Shop.

Las­sen Sie uns die Welt ein Stück­chen siche­rer machen! Wir hel­fen ger­ne einen SDLC in Ihrem Team ein­zu­füh­ren und die Sicher­heits­qua­li­tät ihrer Soft­ware zu verbessern.