Datenleaks und Cyberattacken: Mit der rasend schnell fortschreitenden Digitalisierung nehmen auch die Übergriffe auf Unternehmenssoftware zu. Immer wieder hört man von Datenklau, der Unternehmen und Menschen gefährdet. Ob Kundendaten von Adobe, Facebook und eBay oder Kreditkarten-Daten großer Banken – die Sicherheitsverletzungen durch Datendiebstahl gehen in die Milliarden.

Doch das ist längst nicht alles! Hacker hinterlassen auch in der “echten” Welt gravierende Spuren: Mittlerweile sind Industrieanlagen ein beliebtes Ziel von Schadsoftware geworden. So wurde 2014 das Kontrollzentrum eines Hochofens in einem deutschen Stahlunternehmen massiv beschädigt. Selbst der Deutsche Bundestag wurde schon gehackt. Und sogar Krankenhäuser wurden zeitweise durch Cyberangriffe lahmgelegt. Die Beispiele zeigen, wie schwerwiegend – teuer bis lebensgefährlich – Softwarefehler sein können. Und genau deshalb ist Software Testing bzw. Security Testing so wichtig! Um die Sicherheit von Software, Unternehmen und Menschen zu gewährleisten.

Was ist Software Testing?

Bevor ich auf näher auf Security Testing eingehe, möchte ich Funktion und Ziele von Software Testing noch einmal kurz zusammenfassen. 

Software Testing ist ein wichtiger Teil der Software-Entwicklung und spielt eine entscheidende Rolle für die Softwarequalität. Denn durch das Testen können Software-Fehler im Vorfeld erkannt und rechtzeitig behoben werden. Zudem wird überprüft, ob das System die spezifizierten Anforderungen erfüllt, einschließlich FunktionalitätLeistung und Zuverlässigkeit. So ist bereits vor dem Live-Gang der Anwendung gecheckt: Wurde programmiert, was angefordert war? Und funktioniert die Software einwandfrei? 

Vorteile von Software Testing auf einen Blick

Kosteneffizienz

Rechtzeitiges und kontinuierliches Testen in der Entwicklung spart langfristig Geld. Denn das Beheben von Fehlern in der früheren Phase kostet i. d. R. weniger als später – ganz zu schweigen von finanziellen Auswirkungen an Dritten.

Produktqualität

Jedes Softwareprodukt zielt auf eine hohe Qualität ab. Testen stellt sicher, dass ein Qualitätsprodukt entwickelt und terminiert wird. Besonders wichtig ist hier das organisierte Software Testing.

Sicherheit

Das Testen von Software schafft Vertrauen und Sicherheit auf sämtlichen Ebenen. Software-seitige Risiken, Bedrohungen und Probleme werden frühzeitig behoben und die korrekte Anwendbarkeit gesichert.

Softwaretests können sowohl manuell als auch automatisiert durchgeführt werden. Beim manuellen Testen werden Testfälle manuell durch einen Menschen und ohne Unterstützung durch Werkzeuge oder Skripte ausgeführt. Beim automatisierten Testen werden Tests durch Tools und spezifische Software ausgeführt. Im letzteren Fall schreiben die Entwickler Code, der sicherstellt, dass der Software-Code funktioniert. Es gibt vielzählige Verfahren, um Software zu testen. Zu den gängigsten gehören:

  • Unit-Tests (Modultests)

  • Integrationtests

  • End-to-End-tests

  • Performance tests

  • Smoke tests

Die Art der Prüfung hängt von verschiedenen Faktoren ab. Dazu zählen unter anderem Projektanforderungen, Budget, Zeit und Know-how. Ziel ist, von der Installation über die Funktion und Anwendung bis zur Wartung eine möglichst hohe Testabdeckung zu erreichen. Doch Vorsicht: Nur weil eine Software die Qualitätsanforderungen in Bezug auf Funktionalität und Leistung erfüllt, bedeutet dies nicht unbedingt, dass die Software sicher ist. 

Security Testing: Warum Sicherheitstests so wichtig sind

Security Testing ist eine Art des Software Testing. Es umfasst sämtliche Tests, um das ordnungsgemäße und einwandfreie Funktionieren einer Software bzw. Anwendung in der Software-Entwicklung sicherzustellen. Mit Sicherheitstests lassen sich Bedrohungen und Risiken jeglicher Art im System identifizieren und potenzielle Schwachstellen punktgenau ausloten. Software-Entwickler können dann sicher und schnell reagieren, um die Sicherheitsrisiken durch entsprechende Codierung zu beheben. Und das ist heutzutage wichtiger denn je: Moderne Betriebsabläufe, die wachsende Mobilität und riesige Datenmengen bieten eine Vielzahl an Angriffsmöglichkeiten für Hacker.

Softwaresicherheit: Banken und Versicherungen im Fokus von Hackern

Gerade Unternehmen wie Banken und Versicherungen stehen hier im Fokus, da sie über enorm wichtige und hochsensible Daten (bspw. von Kunden) verfügen. Mit dieser hohen Verantwortung geht die angemessene Softwaresicherheit hier also weit über den notwendigen eigenen Schutz hinaus. Zudem gefährdet unsichere Software die Integrität der Daten sowie die Verfügbarkeit von Anwendungen. Das Ziel von Security Testing ist es also, Unternehmen sowie Anwender vor Risiken zu schützen, die durch das Verwenden fehlerhafter Software entstehen können. 

Sicherheit im Unternehmen: Wann ist eine Software sicher?

Die Sicherheit von Software ist für die Sicherheit von Unternehmen ein entscheidender Faktor. Sie muss einwandfrei funktionieren und darf dabei keine Sicherheitslücken aufweisen. Doch solange Software noch von Menschen programmiert wird, lassen sich Fehler nicht grundsätzlich ausschließen. Umso wichtiger ist das professionelle Security Testing auf allen Ebenen. Zum Prüfen von 

  • Integrität,

  • Authentizität,

  • Vertraulichkeit,

  • Verwundbarkeit und 

  • Kontinuität.

Neben einer allgemeingültigen Code-Kultur und einer guten Teamorganisation sollten vor allem entsprechende Sicherheitswerkzeuge eingesetzt werden. Mit den richtigen Tools wird die Software-Sicherheit in der Entwicklung sowie im anschließenden Betrieb hoch gehalten.

Setup Beispiel: Bitbucket Pipelines mit SonarCloud

Wie die Sicherheits-Software SonarCloud in einen bestehenden Workflow integriert werden kann, zeigt das nachfolgende Beispiel. Dabei seht ihr, wie schnell und einfach das Ganze funktioniert. Das Beispiel könnt ihr ebenso gut als Anleitung nutzen, um SonarCloud in Bitbucket Pipelines zu integrieren. Außerdem gibt es noch einige weitere nützliche Features, die SonarCloud mit sich bringt.

Kurze Info für alle, die SonarCloud noch nicht kennen

SonarCloud ist ein von SonarSource angebotener Cloud-Service, der auf der Open-Source-Plattform SonarQube basiert. Er dient der Überprüfung und Erkennung von Schwachstellen, Bugs und Code smells im Source Code und unterstützt dabei mehr als 20 Programmiersprachen.

Typischerweise wird SonarCloud in den Deployment Workflow eingebaut und dient als sogenanntes Quality Gate, bevor ein neues Release live geht.

Beispiel und Leitfaden: So funktioniert’s 

  1. Öffne die SonarCloud Webseite

  2. Logge dich mit deinen Atlassian Zugangsdaten ein

  3. Füge ein neues Projekt hinzu

Bitbucket Pipeline + SonarCloud | Jodocus.io
4. Wähle ein Projekt aus
Bitbucket Pipeline + SonarCloud | Jodocus.io
5. Wähle deine Analysemethode aus
Bitbucket Pipeline + SonarCloud | Jodocus.io
6. Klicke auf ‘I need a pipeline’
7. Gehe in die Einstellungen deines Bitbucket-Repositorys und aktiviere Pipelines
Bitbucket Pipeline + SonarCloud | Jodocus.io
8. Gehe zu den Repository variables und füge den SonarCloud Token hinzu
Bitbucket Pipeline + SonarCloud | Jodocus.io

Tipp

Furthermore you should add:
SONAR_SCANNER_OPTS with the value of -Xmx2048m

9. Füge Folgendes in deine Bitbucket Pipeline ein

     image: python:3.8.3 # Choose an image matching your project needs

 

     clone:
                depth: full

 

     definitions:
            caches:
                        sonar: ~/.sonar/cache
            services:
            docker:
                  memory: 2048
          steps:
          – step: &build-test-sonarcloud
                      name: Build, test and analyze on SonarCloud
                      caches:
                      – pip
                      – sonar
                      – docker
                      script:
                     – pipe: sonarsource/sonarcloud-scan:1.2.1
                     variables:
                     DEBUG: ‚true‘
                     services:
                     – docker
         – step: &check-quality-gate-sonarcloud
                      name: Check the Quality Gate on SonarCloud
                      script:
                      – pipe: sonarsource/sonarcloud-quality-gate:0.1.4
                       services:
                      – docker

 

     pipelines:
       branches:
           master:
                – step: *build-test-sonarcloud
                – step: *check-quality-gate-sonarcloud
       pull-requests:
              ‚**‘:
                – step: *build-test-sonarcloud
                – step: *check-quality-gate-sonarcloud

Tipp

  • Unterhalb der definitions müssen wir Docker 2048mb RAM geben

  • Unterhalb der steps müssen wir Docker explizit als Service bekannt machen

10. Während Pipeline ausgeführt wird, analysiert SonarCloud-Analyse deinen Quellcode im Repository. Findet SonarCloud einen der oben aufgeführten Punkte, etwa einen Code Smell, schlägt das bauen der Pipeline fehl und du erhältst innerhalb von SonarCloud auf deinem Dashboard eine Auswertung:

Bitbucket Pipeline + SonarCloud | Jodocus.io

11. Die hier gefundenen Probleme könnten jetzt mittels Automatisierungen innerhalb von SonarCloud noch einzeln als Defects oder Bugs innerhalb von Jira erstellt werden.

Fertig!

Zusammenfassung

Mit der zunehmenden Digitalisierung steigt die Angriffsfläche für Hacker. Gleichermaßen wachsen auch die Möglichkeiten, um sich bestmöglich abzusichern. Besonders Unternehmen, die über viele und sensible Daten verfügen, sollten ihre Systeme optimal schützen. Und auch für Hacker vermeintlich uninteressante Unternehmen sollten mit Ihrer Software-Sicherheit nicht leichtfertig umgehen. Mit einem professionellen Security Testing lässt sich das ordnungsgemäße und einwandfreie Funktionieren einer Software bzw. Anwendung in der Software-Entwicklung sicherzustellen. So können softwareseitige Sicherheitslücken frühzeitig erkannt und behoben werden. Eine schnelle und einfache Option von vielen für Security Testing ist die Integration von SonarCloud in Bitbucket. Sie bietet zwar noch nicht die hundertprozentige Sicherheit, dient aber als zusätzliches Quality Gate. Das Beispiel aus diesem Blogbeitrag kann euch als Anleitung dienen. Gern helfen wir auch persönlich weiter, um eine höhere Softwaresicherheit – und damit die Sicherheit des Unternehmens – zu verbessern.