Wat zijn NuGet-packages?

Voor het .NET ecosysteem zijn NuGet-packages de manier om extra functionaliteiten toe te voegen aan je software. Denk aan deze packages als kant-en-klare bouwstenen voor je applicatie. Het zijn verzamelingen code die andere developers hebben gemaakt en gedeeld. Via NuGet kun je deze eenvoudig toevoegen aan je project. Met één simpele opdracht haal je bijvoorbeeld een complete JSON parser of database-tool binnen.

Packages die je direct gebruikt in je code kunnen weer op zichzelf afhankelijkheden hebben. Hierdoor kan je onbewust een hele boom aan dependencies naar binnen trekken zonder dat je het zelf door hebt.

Gevaren

Er zijn verschillende manieren waarop kwaadwillenden misbruik kunnen maken van dependency management:

Dependency confusion

Stel je voor: je hebt een private NuGet-feed met eigen packages. Een hacker komt erachter welke package namen je gebruikt. Hij publiceert een package met dezelfde naam op de publieke NuGet-feed. Als je niet oplet, download je opeens zijn malafide code in plaats van je eigen package.

Kwetsbaarheden in dependencies

Alle packages in je hele project kunnen kwetsbaarheden bevatten. Een heel groot voorbeeld van een paar jaar geleden was de kwetsbaarheid die gevonden was in Log4J. Veel systemen wisten niet of zij gebruikmaakten van Log4J. Het is dus belangrijk dat je begrijpt hoe jouw dependency boom in elkaar zit, deze controleert op kwetsbaarheden en zoveel mogelijk alles up-to-date houdt.

Licentie-issues

Alle dependencies in je boom hebben een licentie die vertelt onder welke voorwaarden de dependency gebruikt mag worden. De impact van dependencies en de licenties kan een groot effect hebben op jouw software.
Het overkwam Linksys (netwerkhardware) al eens: ze moesten hun routersoftware open source maken omdat ze een package gebruikten met een GPL-licentie. Een dure les over het belang van het checken van licenties.

Aan de slag

Security moet je vanaf het begin meenemen. Maar dat betekent niet dat het moeilijk hoeft te zijn. De .NET tooling maakt het namelijk een stuk eenvoudiger.

Begin klein:

  1. Zet package vulnerability scanning aan in je projecten
  2. Configureer package source mapping
  3. Genereer een Software Bill of Materials (SBOM)
  4. Review de licenties van je dependencies

Meer weten?

In een recente aflevering van dotnetFlix, gaat Tom van den Berg dieper in op dit onderwerp. In een praktische live demo laat hij zien hoe je de nieuwste .NET tooling gebruikt om je supply chain te beveiligen. Van het scannen van vulnerabilities tot het opzetten van package source mapping. Bekijk de volledige aflevering hieronder of via YouTube.

How to secure your NuGet supply chain flow

dotnetFlix is een YouTube kanaal voor ontwikkelaars dat zich richt op softwareontwikkeling met Microsoft technologie. In elke aflevering wordt een gast uit de community uitgenodigd om kennis en inspiratie te delen over verschillende onderwerpen binnen softwareontwikkeling. Het kanaal wordt gesponsord door de dotNed gebruikersgroep en Info Support. Microsoft MVP’s en Info Support collega’s Edwin van Wijk en Sander Molenkamp zijn de hosts van de afleveringen.