Naar de hoofdinhoud

Voorbeeldrepository

Een nieuwe organisatie heeft niets om te scannen totdat ze code pusht. Om daarvoor al te zien wat de beveiligingsfuncties doen, kan een eigenaar van de organisatie het beveiligingsvoorbeeld van fremforge naar de organisatie kopiëren: een kleine repository met bewust verouderde afhankelijkheden, zodat er binnen enkele minuten bevindingen, oordelen over de bereikbaarheid en een pull request met een beveiligingsfix verschijnen.

Aanmaken

Op Beveiliging › Overzicht (/<org>/_admin/security/overview) heeft het onderdeel Scandekking van de checklist voor het instellen een knop Probeer het met een voorbeeldrepository. Eigenaren van de organisatie kunnen hem gebruiken; voor auditors wordt hij geweigerd, zoals elke wijziging.

  • Hij maakt <org>/fremforge-security-sample aan, een privérepository, en commit het voorbeeld erin in één commit door fremforge. De repository wordt gescand zodra hij is aangemaakt.
  • Een organisatie kan één voorbeeldrepository hebben. Klik je nog een keer, dan krijg je te zien dat hij al bestaat.
  • Bestaat er al een repository met de naam fremforge-security-sample, dan wordt er niets aangemaakt; hernoem of verwijder die repository eerst.
  • Elke poging staat in het auditlog als code-security.sample_repo.created, met de uitkomst.

Wat erin staat

De inhoud komt uit een vaste, gereviewde commit van het eigen voorbeeld van fremforge. Hij bevat manifesten, lockfiles en een paar regels code die de kwetsbare functies aanroepen. De broncode van de afhankelijkheden zelf zit er niet in. Niets erin wordt gebouwd, uitgevoerd of uitgerold: er zijn geen workflows en er is geen Dockerfile. Hij heeft de MIT-licentie, en de README noemt de advisories die hij moet laten zien:

EcosysteemPakketVersieAdvisoryBereikbaarheid
npmlodash4.17.20CVE-2021-23337 (command injection in template)bereikbaar: het voorbeeld roept template aan
npmlodash4.17.20CVE-2020-28500 (ReDoS)geen aanroeppad
npmminimist1.2.5CVE-2021-44906 (prototype pollution)geen aanroeppad: vermeld, nooit geïmporteerd
Gogolang.org/x/textv0.3.5GO-2021-0113 / CVE-2021-38561 (language.ParseAcceptLanguage)bereikbaar: het voorbeeld roept het aan
PyPIPyYAML5.3.1CVE-2020-14343 (code-uitvoering via full_load)bereikbaar op importniveau

De vastgezette versies hebben nog een paar advisories meer dan deze. Voor elk ervan bestaat een gefixte versie, dus Fix-PR openen werkt voor allemaal. Heeft je organisatie automatische beveiligingsfixes aanstaan, dan openen fix-pull-requests vanzelf op het voorbeeld, zoals op elke repository.

Alleen in de console

Bevindingen op de voorbeeldrepository verschijnen in de console en de API, zoals alle andere. Ze verlaten fremforge nooit:

Het voorbeeld telt ook nooit als scandekking: het onderdeel van de checklist vraagt nog steeds om een eigen repository.

Wanneer het geen voorbeeld meer is

Het voorbeeld is alleen inhoud van fremforge zolang de standaardbranch is waar fremforge hem heeft achtergelaten. Zodra iemand naar de standaardbranch pusht of erin samenvoegt (het samenvoegen van een van de fix-pull-requests telt ook), wordt het een gewone repository: vanaf dan sturen de bevindingen meldingen, webhooks en SIEM-gebeurtenissen, en tellen ze mee in anonieme aantallen en als scandekking, zoals bij elke andere repository. Dit wordt in het auditlog vastgelegd als code-security.sample_repo.graduated. Pushes naar andere branches, zoals de branch van een fix-pull-request, veranderen niets.

Verwijderen

Verwijder de repository in Forgejo als je klaar bent. fremforge merkt het verwijderen op en vergeet het voorbeeld, zodat je later een nieuw kunt aanmaken. Hernoemen houdt het een voorbeeld.