Persoonlijk zie ik de beweging naar een meer open source cultuur in software development als een positieve. Daarin sta ik zeker niet alleen en ik weet dat veel collega’s hier een zelfde positief gevoel bij krijgen. Maar elke beweging heeft zijn eigen uitdagingen, nu bezocht ik laatst bij de Microsoft TechSummit waar ik een sessie over Ethical Hacking van Milad Aslaner heb bijgewoond. Hierin kwam ter sprake dat hackers zich momenteel vooral focussen op hacken van supply chains.

Onder supply chain verstaan wij de hele aaneenschakeling van ketens om van begin tot eindproduct te komen. Dit kunnen dus allemaal verschillende grondstoffen/ halffabricaten zijn, of in het geval van softwareontwikkeling b.v. reeds bestaande libraries, open source projecten of commerciële producten.

Nu is het hacken van de supply chain een vrij breed begrip, maar het komt erop neer dat alle schakels om tot een eindproduct te komen, vatbaar zijn voor een hack. Dit is natuurlijk niets nieuws maar toch ligt de focus vaak op het beveiligen van een eindproduct en worden de tussenstappen nog wel eens over het hoofd gezien.

Zo valt bijvoorbeeld de stuxnet hack onder een supplychain hack, hierbij wordt middels het beïnvloeden van Siemens PLC’s (welke nucleair materiaal centrifugeren) een poging gedaan om het Iraanse nucleaire project negatief te beïnvloeden. Of denk bijvoorbeeld aan deze waarschuwing over Russische hackers die netwerk apparatuur aanvallen. Dit klinkt wellicht als James Bond scenario’s, maar dichter bij huis zijn er legio voorbeelden van supply chain hacks waar we als softwareontwikkelaars direct last van hebben. Denk hier bijvoorbeeld aan hacks in package managers of Container Base Images. Deze kunnen deel uitmaken van de supply chain voor je softwareproject.

Package managers
Hier komt opensource weer om de hoek kijken, veel van de opensource initiatieven worden aangeboden via 1 van de vele package managers. Zoals b.v. NuGet, maven, bower of npm.

En zo is er in 2017 bijvoorbeeld malware gevonden in een zeer populair npm opensource package.
Als Microsoft ontwikkelaar maak ik persoonlijk veel gebruik van de NuGet Package Manager. We moeten niet naïef zijn, ook NuGet packages kunnen schadelijke code bevatten.

Hoe kun je je wapenen tegen malware en toch gebruik maken van de goede dingen van open source?

Hier zijn gelukkig wel mogelijkheden voor beschikbaar. Vanuit NuGet is er een initiatief op de roadmap gezet om packages te ondertekenen. Dit om de integriteit en authenticiteit van een package te kunnen garanderen.

https://blog.nuget.org/20170914/NuGet-Package-Signing.html

Daarnaast zijn er meerdere 3rd party services beschikbaar die alle dependencies in de code controleren. Voorbeelden hiervan zijn bijvoorbeeld:

Deze of soortgelijke tools kunnen worden opgenomen in de build pipeline. Dit om direct bij elke build feedback te kunnen geven of een dependency is geïntroduceerd met een bekende kwetsbaarheid.

Containers
Naast het gebruik van package managers zijn containers momenteel een hot topic. Ook hier hebben we een potentieel risico aangezien hier vaak gebruik wordt gemaakt van reeds beschikbare door een derde partij gemaakte base images.

Hier hebben Michael Cherny en Sagie Dulce in 2017 een interessant stuk over geschreven.

Buiten het feit dat je hier met infrastructurele oplossingen mitigerende maatregelen kunt nemen zijn hier ook 3rd party mogelijkheden op je te wapenen tegen potentiele hacks. Voorbeelden hiervan zijn bijvoorbeeld:

  • Clair : (https://github.com/coreos/clair) Clair is een open source project wat gebruik maakt van statische analyse van kwetsbaarheden. Clair doet periodieke updates van een database met daarin de bekende kwetsbaarheden.
  • AquaSec: (https://www.aquasec.com/) AquaSec is een commercieel product ontworpen met containers in gedachte. Security audit, container image verificatie, runtime beveiliging, geautomatiseerde policy learning en inbraakbeveiliging mogelijkheden zijn de belangrijkste features.
  • Anchore Navigator: (https://anchore.io/) Commercieel product maar Anchore Navigator biedt wel een gratis service om public Docker images aan een Deep inspection te onderwerpen. Je kunt ook gebuik maken van hun reeds controleerde container repository.

Deze producten werken vaak in combinatie met een specifieke container registry waarin alleen gecontroleerde containers in terecht kunnen komen.

Azure Security Center
Naast het gebruik van tools specifiek voor Package management en Container controle op kwetsbaarheden, is het geen overbodige luxe om de inzet van Azure Security Center te overwegen.

Azure Security Center biedt mogelijkheden om on premise en in de cloud, op basis van grote hoeveelheden telemetrie, abnormale patronen te herkennen. Dit gaat middels Machine Learning algoritmes. Er zijn allerlei verschillende indicatoren welken potentieel schadelijk gedrag zouden kunnen aantonen. Zo wordt er bijvoorbeeld door geavanceerde malware, traditionele malware scanners omzeild door niet meer (of versleuteld) naar schijf te schijven. Azure Security Center gebruikt hier een geheugenanalyse voor om deze malware toch te kunnen herkennen. Daarnaast worden afwijkingen van normaal gedrag gedetecteerd. Als het aantal aanmeldingen of het tijdstip van de aanmeldingen of de locatie van waaruit de aanmeldingen zijn aangevraagd of andere aanmeldingsgerelateerde kenmerken aanzienlijk verschillen van wat normaal is, kan een waarschuwing worden gegenereerd.
Azure Security Center biedt een zeer uitgebreide set aan services welke op hun beurt weer zeer veel mitigerende maatregelen treffen tegen allerlei potentiële kwetsbaarheden.

Be aware!
Wees je er van bewust dat er in het hele ontwikkeltraject meerdere plekken zijn waar zich potentiële kwetsbaarheden bevinden. Het is goed om hier bewust mee om te gaan en indien noodzakelijk hier mitigerende maatregelen te treffen. De hier beschreven services kunnen hier een rol in spelen, want om maar eens een open deur in te gooien: “Voorkomen is beter dan genezen”.

Auteur: Patrick Bes, Bergler Competence Center © 2018