Naar de hoofdinhoud

Kwaadaardige pakketten

fremforge controleert de pakketten die je echt uitlevert tegen de OSV-advisories MAL-*: pakketten waarvan een registry of onderzoeker heeft bevestigd dat ze opzettelijk kwaadaardig zijn, zoals een typosquat of een gekaapte release die bij installatie inloggegevens steelt. Er worden twee dingen gecontroleerd:

  • Repository’s. De nieuwste SBOM van de standaardbranch van elke repository.
  • Containerimages. De taalpakketten in elk image dat naar het package registry van je organisatie wordt gepubliceerd.

Een kwaadaardig pakket is altijd kritiek. Het is geen kwetsbaarheid met een gefixte versie: verwijder het, en beschouw elke machine die het heeft geïnstalleerd of uitgevoerd als gecompromitteerd.

Dit staat los van de malwarescan, die ClamAV-signaturen over geüploade bestanden laat lopen.

Wanneer de controle draait

WatWanneer het wordt gecontroleerd
De standaardbranch van een repositoryDirect na elke push ernaar (de SBOM wordt binnen ongeveer een minuut gebouwd en vergeleken), en daarnaast elke dag om 05:00 UTC
Een containerimageNa elke push, nieuwe tag of verwijdering in het package registry (binnen ongeveer 15 minuten), en daarnaast elke dag

De dagelijkse run is belangrijk omdat een pakket vaak pas weken na publicatie als kwaadaardig wordt vermeld. Code en images die niet zijn veranderd, worden opnieuw vergeleken met de nieuwste advisories.

Het vergelijken gebeurt op de eigen scanners van fremforge, tegen een offline kopie van de OSV-database. Er wordt niets over je code of images naar osv.dev gestuurd.

Wat er in een image wordt vergeleken

Het image wordt gescand met Trivy, met dezelfde pull die de scan van containerimages gebruikt. De taalpakketten worden vergeleken: npm, PyPI, Maven, Go, crates.io, RubyGems, NuGet, Packagist, Pub en Hex. Besturingssysteempakketten (apk, deb, rpm) niet, omdat MAL-*-advisories over taalregistries gaan.

Bij een image voor meerdere architecturen wordt de variant linux/amd64 gescand.

Bevindingen

Bevindingen staan onder Beveiliging › Bevindingen › Afhankelijkheden › Malware. Filter op bron (Repository’s of Containerimages) en op status:

  • Open. Het pakket staat op de standaardbranch, of in minstens één gepubliceerde digest van het image.
  • Genegeerd. Iemand heeft met een reden besloten dat het acceptabel is.
  • Opgelost. Het is weg: verwijderd van de standaardbranch, of geen gepubliceerde tag of digest van het image bevat het nog. Komt het terug, dan gaat de bevinding weer open.

Een imagebevinding is één rij per imagenaam. Ze toont de tags en digests die het pakket op dit moment bevatten, zodat dezelfde inhoud opnieuw taggen geen tweede bevinding oplevert.

De badge van het tabblad en de tegel Kwaadaardige pakketten op het overzicht van de organisatie tellen de open bevindingen uit beide bronnen.

Meldingen

Een beveiligingsmelding gaat naar de leden van de organisatie die beveiligingsmeldingen hebben aangezet, wanneer een kwaadaardig pakket voor het eerst wordt gevonden, wanneer een opgelost pakket terugkomt en wanneer het negeren zijn einddatum bereikt. Een bevinding die de volgende dag nog bestaat, geeft geen nieuwe melding. Open bevindingen worden ook meegeteld in de beveiligingsdigest.

Een bevinding negeren

Klap Negeren open op de rij, kies een reden en stel eventueel een einddatum in. Na de einddatum gaat de bevinding weer open en volgt opnieuw een melding. In de lijst Open kun je ook in bulk negeren.

  • Repositorybevinding. Negeren zorgt er ook voor dat pull requests in die repository niet meer op de dependency-scan falen voor dezelfde pakketversie en advisory, met dezelfde einddatum.
  • Imagebevinding. Negeren zorgt dat ze pulls van het image niet meer blokkeert (zie hieronder). Ze negeert niet hetzelfde pakket in een repository, ook niet in een repository met dezelfde naam.

Elke keer dat een bevinding wordt genegeerd, wordt dat vastgelegd in de auditlog, met wie, waarom en tot wanneer.

Een image pullen dat een kwaadaardig pakket bevat

Een pull van een containerimage waarvan de digest een open, niet-genegeerde bevinding voor een kwaadaardig pakket heeft, wordt geweigerd met 403 DENIED. De melding noemt het pakket en de advisory en linkt naar het tabblad Malware. Dit geldt voor elke organisatie, ongeacht haar blokkeerinstelling voor de scan van images, en voor pulls op tag en op digest.

Om een pull vrij te geven: push een gefixt image, of negeer de bevinding.

Afgedwongen sinds 2026-10-04. Tussen 2026-10-03 en 2026-10-04 draaide de controle in observatiemodus: een pull die geweigerd zou zijn, werd gelogd maar wel uitgeleverd.

Een registrypakket downloaden dat een kwaadaardig pakket bundelt

Hetzelfde geldt voor elk ander pakkettype in je registry (npm, Maven, PyPI, NuGet, Cargo, Go en de rest): een bestand dat een pakket bundelt dat in een OSV-advisory MAL-* staat, wordt bij het downloaden geweigerd met 403, voor elke organisatie, ongeacht de modus van haar pakketbeleid. Het antwoord noemt de regel. Wil je één bestand doorlaten, vraag dan een uitzondering aan voor de regel malware; die moet door een tweede persoon worden goedgekeurd.

Afgedwongen sinds 2026-10-11. Daarvoor werd zo’n download vastgelegd en wel uitgeleverd.