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ät, Leistung 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
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.
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:
Link zu unserem Git Respository auf Bitbucket
- Öffne die SonarCloud Webseite
- Logge dich mit deinen Atlassian Zugangsdaten ein
- Füge ein neues Projekt hinzu
- Wähle ein Projekt aus
- Wähle deine Analysemethode aus
- Klicke auf ‘I need a pipeline’
- Gehe in die Einstellungen deines Bitbucket-Repositorys und aktiviere Pipelines
- Gehe zu den Repository variables und füge den SonarCloud Token hinzu
- Füge Folgendes in deine Bitbucket Pipeline ein:
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
- 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:
- 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.