Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sicherheitsprobleme üblicher Build- und Deploymentumgebungen

Sicherheitsprobleme üblicher Build- und Deploymentumgebungen

Der Vortrag zeigt übliche grundlegende Sicherheitsprobleme typischer Build- und Deployment-Umgebungen auf und benennt Konzepte und Lösungsansätze, die zur Verbesserung der Situation beitragen können.

Nicht nur der Sourcecode legt fest, was in Produktion läuft. Verschiedene Artefakte kommen hinzu, die aus den Tiefen des Internet bezogen werden. Die Web-UI des CI-Servers, seine Plug-ins sowie die Plug-ins des Build-Tools bieten ebenfalls Angriffsflächen. In vielen Projekten ist nichts davon sonderlich abgesichert gegenüber böswilligen Änderungen.

Andreas Krüger

November 10, 2015
Tweet

More Decks by Andreas Krüger

Other Decks in Programming

Transcript

  1. Wir lösen das – persönlich! Sicherheitsprobleme üblicher Build- und Deploymentumgebungen

    Dr. Andreas Krüger Senior Consultant bei innoQ Deutschland GmbH für Continous Lifecycle 2015-11-10
  2. © 2015 innoQ Deutschland GmbH übliche Buildumgebung Produktionssystem Sourcecode Angriff

    gewünschte Anwendung Schad- anwendung Angriff (out of scope) Thema hier
  3. © 2015 innoQ Deutschland GmbH Plugins und Libs aus dem

    Internet Buildserver (CI) Libs Plugins Internet • häufig kein HTTPS, und HTTP ist fälschbar • keine Überprüfung • (Angriffe auf den fernen Server?)
  4. © 2015 innoQ Deutschland GmbH Wahre Geschichte Buildserver (CI) Libs

    Plugins Internet • Build kracht • soll: Eine JS-Datei
  5. © 2015 innoQ Deutschland GmbH Wahre Geschichte Buildserver (CI) Libs

    Plugins Internet • Build kracht • soll: Eine JS-Datei • ist: HTML “Domain zu verkaufen”.
  6. © 2015 innoQ Deutschland GmbH „Mission accomplished!” Buildserver (CI) Libs

    WebUI Plugins Produktionssystem gewünschte Anwendung Schad- anwendung Artefakte für Produktion
  7. © 2015 innoQ Deutschland GmbH Buildserver (CI) WebUI • Jeder

    aus dem Entwicklungsteam darf. (Hoffentlich!) • Nachvollziehbar, wer wann was? • Konfigurationsreviews? Buildserverkonfiguration
  8. © 2015 innoQ Deutschland GmbH Buildserver (CI) WebUI Produktionssystem gewünschte

    Anwendung Schad- anwendung Artefakte für Produktion Der Buildserver kann beliebige Artefakte produzieren. „Mission accomplished!” Buildserverkonfiguration
  9. © 2015 innoQ Deutschland GmbH Buildserver (CI) Libs Plugins Produktionssystem

    gewünschte Anwendung Schad- anwendung Artefakte für Produktion Evil plugin von innen angefordert oder von außen untergejubelt „Mission accomplished!” Trojaner-Plugin
  10. © 2015 innoQ Deutschland GmbH Wer einmalig ein Trojaner-Plugin im

    Buildsystem untergebracht hat, hat dort Kontrolle für lange Zeit.
  11. © 2015 innoQ Deutschland GmbH Eroberter Buildserver, viele Möglichkeiten. Sourcecode

    Buildserver (CI) Libs WebUI Plugins Infizierte Artefakte für Produktion (und Entwicklung?) infizierte Libs infizierte Browser infizierte Plugins infizierter Sourcecode
  12. © 2015 innoQ Deutschland GmbH Beispiele: • Maven Repositories mit

    Libraries und Plugins. • RPM Repositories mit Software für die Produktion. • Puppet-Konfiguration auf dem zentralen Puppet-Server. Repositories
  13. © 2015 innoQ Deutschland GmbH Repositories • Der Buildserver schreibt

    viele davon. • Wer den Buildserver kontrolliert, hat Schreibrechte. • Ist Repoinhalt signiert, so hat der Buildserver den Schlüssel. • Gefälschte Artefakt im Repo sind unauffälliger als Hintertüren im Sourcecode. Passen Sie auf ihre Repos auf!
  14. © 2015 innoQ Deutschland GmbH Buildserver (CI) WebUI Buildserverkonfiguration ist

    Software und gehört ins Versionsmanagement. Nachvollziehbarer Buildserver Ich möchte meinen Buildserver bauen können!
  15. © 2015 innoQ Deutschland GmbH Nachvollziehbare Repositories • Bei „append

    only” - Repositories jede Hinzufügungszeit protokollieren • Repositories mit sich änderndem Inhalt versionieren • „Das Internet” ist kein nachvollziehbares Repository (Ausnahmen bei Verträgen) 33
  16. © 2015 innoQ Deutschland GmbH Vielen Dank! Dr. Andreas Krüger

    [email protected] GPG-Key Fingerabdruck 9FA7 EDDE 320B 3B35 006C 2075 BC0D 1E82 2DC1 BE5B
  17. © 2015 innoQ Deutschland GmbH Checkins signieren mit git und

    Signaturen überprüfen git commit -S git log --show-signature git show -s –show-signature git verify-commit Pro: http://mikegerwitz.com/papers/git-horror-story (Veraltetes?) Contra von Linus, „besser Tags unterschreiben”: http://git.661346.n2.nabble.com/GPG-signing-for-git-commit-td2582986.html#a2583316 • anfangs (fast) nicht dokumentiert • Überprüfung automatisieren!
  18. © 2015 innoQ Deutschland GmbH Sourcecode Hintertür im Code „Mission

    accomplished!” • Signed Check-Ins, automatisiert prüfen • Code Reviews flächendeckend • (“Rewriting of history” einschränken)
  19. © 2015 innoQ Deutschland GmbH Hintertür in den Code via

    Buildserver Funktionsuser für Tags? Sourcecode Buildserver (CI) Besser: Buildserver liest den Sourcecode nur. Versionsinfo in die Artefakte einbetten statt Tags.