21
1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: Qualitätsziele kontinuierlich im Auge behalten 1.0 Qualitätsziele kontinuierlich im Auge behalten © Orientation in Objects GmbH Gliederung In the beginning I just have really high standards For security and legal reasons Fail early, fail loudly 2 1 2

Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]:

Qualitätsziele kontinuierlich im Auge behalten

1.0

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Gliederung

• In the beginning

• I just have really high standards

• For security and legal reasons

• Fail early, fail loudly

2

1

2

Page 2: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

2

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Gliederung

• In the beginning

• I just have really high standards

• For security and legal reasons

• Fail early, fail loudly

3

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Been there, done that (1)

4

BuildTool

CI Server

DeveloperTeam

VCS

CI ServerResult Page

Update

Commit

Build

Results

Publish

Inform

3

4

Page 3: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

3

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Been there, done that (2)

5

Test ToolsBuild &

Test ToolsCI Server

DeveloperTeam

VCS

CI ServerResult Page

Update

Commit

BuildBuild & Test

Results

Publish

Inform

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Put it to the test

• „Test“ impliziert in der Regel Code Ausführung (Dynamic Analysis)– Dazu gehören Unit, Integration, System und Acceptance Tests

• Quellcode kann auch statisch analysiert werden

– Entweder durch Menschen im Code Review oder durch Tools

• Eines der ersten Tools ist „lint“ für C von 1978

6

/* might be wrong */

while (x = 1) {

}

5

6

Page 4: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

4

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

While we’re at it…

• Zeitgleich mit CI Servern entstehen neue statische Analyse Tools

– Checkstyle, FindBugs, PMD, Copy/Paste Detector, …

• Oft Kommandozeilen basiert mit IDE Plugins von dritter Seite– Verdopplung von Konfiguration, Einsatz unterschiedlicher Versionen

• Rechenleistung häufig ein Problem– „Schwache“ Entwicklerrechner, CI Anti-Pattern „Slow Hardware“

• Tools haben jeweils eigenen Fokus, überschneiden sich aber auch– Erste Plattformlösungen entstehen, darunter SonarQube

7

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Demonstration – SonarQube

8

7

8

Page 5: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

5

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Gliederung

• In the beginning

• I just have really high standards

• For security and legal reasons

• Fail early, fail loudly

9

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Level up

• Bisherige Analysen sind primär auf Code Ebene

• Object Management Group (OMG) unterscheidet drei Analyse Level– Unit Level – single unit of code

– Technology Level – integrated collection of code units

– System Level – all the different code units and layers of technology

• Für Technology / System Level sind spezialisierte Tools von Vorteil

10

9

10

Page 6: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

6

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Another brick in the wall

• Besonders für Software Architektur ist Qualitätskontrolle wichtig– Initiale Architekturen sind in der Regel gut, …

– … verfallen aber, wenn Projekte wachsen und Entwickler wechseln

• Für Java etwa existieren viele Konvention und (de facto) Standards– Die aber nicht immer jeder kennt oder gerade vor Augen hat

• ArchUnit erlaubt die Einhaltung von Architekturregeln zu prüfen– API zur Erstellung einfacher Java Unit Tests für Java Architekturen

11

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Demonstration – ArchUnit

12

(Quelle: https://www.archunit.org/userguide/html/000_Index.html#_what_to_check)

11

12

Page 7: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

7

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

And then what?

• Zusammen mit Tools bildet sich Klassifizierung und Kategorisierung

• Ziel ist einheitliche Kommunikation– Welche Fehler gibt es und wie kritisch sind diese?

– Was wurde bei uns in der Entwicklung geprüft?

– Welches Tool kann welche Fehler entdecken?

– Was kann ich machen wenn ein bestimmter Fehler entdeckt wird?

• Entstehung „Common Weakness Enumeration (CWE)“ System– Beinhaltet über 600 Kategorien für Software Schwächen

– Buffer Overflows, Race Conditions, Cross Site Scripting, …

– Tools können als „CWE-compatible“ registriert werden

13

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

The best of the best of the best

14

(Quelle: http://cwe.mitre.org/top25/index.html)

13

14

Page 8: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

8

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

The Times They Are A-Changin'

• Ab 2010 Continuous Delivery und Deployment Pipelines– Jede Pipeline Stage ist ein zu passierendes „Quality Gate“

• Ergebnisse aus Analyse Tools können Teile von „Quality Gates“ sein– Klassifizierungssysteme wie CWE als Basis zur Einschätzung– „Leave this world a little better than you found it”

• CD und SCM Server sind gängige „Andockstellen“

15

(Nach „Continuous Delivery“/J. Humble, D. Farley)

AutomatisierteAutomatisierteAkzeptanz

Tests

Nutzer-abnahme

Releasein Produktion

Artefaktebauen undUnit Tests

Versions-kontrolle

DeliveryTeam

Check inTrigger

Trigger

Manualapproval Manual

approvalFeedback

Feedback

Feedback

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Demonstration – SonarQube Quality Gates

16

15

16

Page 9: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

9

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Gliederung

• In the beginning

• I just have really high standards

• For security and legal reasons

• Fail early, fail loudly

17

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

• „[CD] helps reduce the cost, time and risk of delivering changes... “

• Security kann kein nachgelagertes / orthogonales Thema sein

• Neue Schlagworte wie DevSecOps oder Rugged Manifesto– „[…] I refuse to be a source of vulnerability or weakness.“

• Unser Code wird ja zum Glück getestet und analysiert …

I feel the need – the need for speed

18

Time

Cha

nge

Time

Cha

nge

(Quelle: http://en.wikipedia.org/wiki/Continuous_delivery)

17

18

Page 10: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

10

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

It Wasn't Me

• Anwendungen sind nicht komplett selbst entwickelt (OSSRA Report)– 95% aller Anwendungen verwenden Open Source

– Durchschnittlich 105 Open Source Komponenten je Anwendung

– 67% aller Anwendungen enthielten „Open Source Vulnerabilities“

– 40% dieser Vulnerabilities je Anwendung wurden als „severe“ eingestuft

• Das Problem ist nicht neu– Durchschnittsalter der obigen Vulnerabilities war 1894 Tage (5+ Jahre)

– Häufig gab es neue korrigierte Versionen der jeweiligen Komponenten

• Warum wird nicht gehandelt?– Komponenten Updates sind aufwendig (Code Änderungen, Testing)

– Application Dependencies oft nicht Teil von Ops Patching Aktivitäten

– Dev Teams sind sich der Probleme häufig nicht bewusst

19

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Big Data

• Sammlung aller „Common Vulnerability and Exposures (CVE)“– MITRE Corporation stellt Liste bereit

– Liste wird in „U.S. National Vulnerability Database (NVD)“ synchronisiert

– NVD ergänzt weitere Informationen

• CVE Eintrag in der NVD enthält– Beschreibung der Vulnerability oder Exposure

– Einstufung gemäß „Common Vulnerability Scoring System (CVSS)“

– „Common Platform Enumeration (CPE)“ Liste betroffener Plattformen

20

19

20

Page 11: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

11

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Separation of Concerns

• Klarer Unterschied zwischen CWE und CVE– Common Weakness Enum versus Common Vulnerability & Exposures

– Weakness ist Problem Typ, der zu konkreter Vulnerability führen kann

– CVE-2017-7160 in iOS pre-11.2 ist eine Ausprägung von CWE-119

• Benennung betroffener Ressourcen per CPE oder GAV– Common Platform Enumeration – Namensstandard für IT Komponenten

– Group-Artifact-Version – Unique Artifact Coordinates in Apache Maven

– Keine Mapping Datenbanken öffentlich verfügbar

– cpe:/a:pivotal:spring_framework:3.2.0

– org.springframework:spring-core:3.2.0.RELEASE

21

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

All Together Now

• Verwendete Open Source Komponenten müssen geprüft werden– Komponenten sind bekannt, explizit oder per Dependency Management

– CVE Liste liegt vor und wird fortlaufend aktualisiert

• Tool zur Überprüfung „Dependency-Check“– Open Source „Software Composition Analysis (SCA)“ Tool

– Flagship Project des „Open Web Application Security Project (OWASP)”

• Dependency-Check ermittelt Dependencies durch diverse Analyzer– Anhand der Dependencies werden die CPEs eines Projekts gesammelt

– Für die gesammelten CPEs wird ein Bericht mit allen CVEs erstellt

– Verwendet werden die aktuellen online CVE Daten der NVD

22

21

22

Page 12: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

12

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Demonstration – OWASP Dependency Check

23

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

I Fought The Law

• Komponenten sind nun sicher, aber ist der Einsatz überhaupt legal?

• Unter Umständen sind nicht alle Lizenzbedingungen akzeptabel– Zum Beispiel „Copyleft“ Lizenzen

• „Lizenzkontrolle“ beschränkt sich häufig auf reine Auflistung– „mvn project-info-reports:dependencies“, License Maven Plugin

• Security und Lizenzen besser zentral kontrollieren (Governance)– Komponenten Freigabe unter Aspekten Lizenz, Security, Architektur, …

24

23

24

Page 13: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

13

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Storing JARs in CVS is so yesterday

• Deklarative Dependency Verwaltung seit Maven de facto Standard– Es entstehen Online Repositories für Open Source Komponenten

• Neue Notwendigkeiten für Tooling Infrastruktur– Proxy für öffentliche Repos (Verfügbarkeit, Performance, Bandbreite)

– Betrieb eigener Repositories (für nicht öffentliche und eigene Artefakte)

• Binary Repository Manager Einsatz ist Best Practice– „ application designed to manage repositories of binary components“

• Alternative Bezeichnung Artefakt Repository Manager– Diverse Open Source und kommerzielle Produkte verfügbar

25

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

But wait, there's more!

26

VCS

Commit StageProduktiv

Stage

Performance Test Stage

NutzerabnahmeNutzerabnahmeStage

Artefakt Repository

Infrastruktur- und AnwendungskonfigurationQuellcode

Akzeptanz TestStage

(Nach „Continuous Delivery“/J. Humble, D. Farley)

• Delivery Pipelines unterstreichen Notwendigkeit von Artefakt Repos– „assemble […] binaries and store them in an artifact repository“

25

26

Page 14: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

14

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

You Got Lucky

• Viele Repo Manager bieten Komponenten Policies und Quarantäne– Produkte sind häufig kommerziell (je nach gewünschtem Feature Set)

– Zum Beispiel Sonatype Nexus Firewall / Lifecycle oder JFrog Xray

27

(Quellen: https://www.sonatype.com und https://www.jfrog.com)

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Gliederung

• In the beginning

• I just have really high standards

• For security and legal reasons

• Fail early, fail loudly

28

27

28

Page 15: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

15

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Let me Google that for you (1)

• ACM Paper „Lessons from building static analysis tools at Google”

• „Our experience attempting to integrate static analysis into Google’s

workflow […]”

• Versuch hat diverse Erkenntnisse geliefert– Finding bugs is easy – Einfaches Tooling ist ausreichend

– Developers will not go out of their way – Dashboards bringen nichts

– Developer happiness is key – Nutzen muss klar erkennbar sein

– Do not just find bugs, fix them – Fehler fixen nicht finden ist das Ziel

– Crowdsource analysis development – Devs dürfen beitragen

• Welches Fazit kann daraus gezogen werden?

29

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Let me Google that for you (2)

• „We advocate […] pushing workflow integration as early as possible“

• „When possible, checks are enabled as compiler errors“– „[…] while [developers] are still amenable to making changes“

• „Code Review is a sweet spot for displaying analysis warnings“– „[…] present(s) issues only when […] changing the code in question“

30

29

30

Page 16: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

16

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Tool Time

• Code Insight in Atlassian Bitbucket Server

– „presenting important development information directly on pull requests“

• Open Source Tool namens „Error Prone“ von Google

– Integriert sich in Java Compiler und findet Fehler zur Compile Zeit

– Bietet Plugin Mechanismus für eigene Checks

– Unterstützt automatisches Patching und Refactoring

31

(Quelle: https://community.developer.atlassian.com)

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Demonstration – Error Prone

32

31

32

Page 17: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

17

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Zusammenfassung

• Zahlreiche Toolsuiten für Code und System Analyse verfügbar

• Klassifizierungssysteme für Priorisierung und Quality Gates nutzbar

• Auch verwendete Komponenten und nicht nur eigenen Code prüfen

• Security und Lizenz Richtlinien für externe Komponenten definieren

• Für Richtlinien Einhaltung bei Komponenten Bereitstellung sorgen

• Erfolgskontrolle nicht anhand gefundener sondern beseitigter Fehler

• Entwickler überzeugen und guten Analyse Output früh bereit stellen

33

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

If you remember one thing

34

„A fool with a tool is still a fool.”

(Grady Booch)

33

34

Page 18: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

18

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Links (1)

• SonarQube: Continuous Inspection– https://www.sonarqube.org/

• How to Deliver Resilient, Secure, Efficient, and Easily Changed IT Systems in Line with CISQ Recommendations– https://www.omg.org/news/whitepapers/CISQ_compliant_IT_Systemsv.4-

3.pdf

• ArchUnit: Unit test your Java architecture– https://www.archunit.org/

• Common Weakness Enumeration: CWE– https://cwe.mitre.org/

• Rugged Software– https://ruggedsoftware.org/

35

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Links (2)

• The State of Open Source Security in Commercial Applications– https://www.blackducksoftware.com/sites/default/files/images/Download

s/Reports/USA/OSSA16_Rpt_UL.pdf

• CVE - Common Vulnerabilities and Exposures (CVE)– https://cve.mitre.org/

• National Vulnerability Database (NVD)– https://nvd.nist.gov/

• Common Vulnerability Scoring System (CVSS)– https://www.first.org/cvss/

• Common Platform Enumeration (CPE) Dictionary– https://nvd.nist.gov/products/cpe/

36

35

36

Page 19: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

19

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Links (3)

• Guide to naming conventions on groupId, artifactId, and version– https://maven.apache.org/guides/mini/guide-naming-conventions.html

• Open Web Application Security Project (OWASP)– https://www.owasp.org/

• OWASP Dependency Check– https://www.owasp.org/index.php/OWASP_Dependency_Check/

• Apache Maven Project Info Reports Plugin– https://maven.apache.org/plugins/maven-project-info-reports-plugin/

• License Maven Plugin– https://www.mojohaus.org/license-maven-plugin/

37

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Links (4)

• Best Practice - Using a Repository Manager– https://maven.apache.org/repository-management.html

• Nexus Platform Overview– https://www.sonatype.com/products-overview/

• JFrog - Universal Artifact Management for DevOps Acceleration– https://jfrog.com/

• Lessons from Building Static Analysis Tools at Google– https://cacm.acm.org/magazines/2018/4/226371-lessons-from-building-

static-analysis-tools-at-google/fulltext/

38

37

38

Page 20: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

20

Qualitätsziele kontinuierlich im Auge behalten© Orientation in Objects GmbH

Links (5)

• Introducing Code Insights for Bitbucket Server, continuously improve code quality with quick actionable feedback from apps– https://community.developer.atlassian.com/t/introducing-code-insights-

for-bitbucket-server-continuously-improve-code-quality-with-quick-

actionable-feedback-from-apps/23148

• Error Prone– http://errorprone.info/

39

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

??

? ?

????

Fragen ?

40

39

40

Page 21: Qualitaetsziele kontinuierlich im Auge behalten · 2020-05-25 · – Beinhaltet über 600 Kategorien für Software Schwächen – Buffer Overflows, Race Conditions, Cross Site Scripting,

21

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für Ihre Aufmerksamkeit !

41