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-sampleaan, een privérepository, en commit het voorbeeld erin in één commit doorfremforge. 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:
| Ecosysteem | Pakket | Versie | Advisory | Bereikbaarheid |
|---|---|---|---|---|
| npm | lodash | 4.17.20 | CVE-2021-23337 (command injection in template) | bereikbaar: het voorbeeld roept template aan |
| npm | lodash | 4.17.20 | CVE-2020-28500 (ReDoS) | geen aanroeppad |
| npm | minimist | 1.2.5 | CVE-2021-44906 (prototype pollution) | geen aanroeppad: vermeld, nooit geïmporteerd |
| Go | golang.org/x/text | v0.3.5 | GO-2021-0113 / CVE-2021-38561 (language.ParseAcceptLanguage) | bereikbaar: het voorbeeld roept het aan |
| PyPI | PyYAML | 5.3.1 | CVE-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:
- geen mail met een beveiligingsmelding, niet direct en niet in het dagelijkse overzicht, en niets erover in de wekelijkse beveiligingssamenvatting;
- geen webhook voor meldingen en geen SIEM-gebeurtenis, ook niet de auditgebeurtenissen die van bevindingen zijn afgeleid (inlezen van scans, matches, SLA-overschrijdingen);
- nooit meegeteld in anonieme aantallen, en een organisatie waarvan de enige repository het voorbeeld is, draagt er niets aan bij;
- nooit meegeteld in de eigen metingen van fremforge aan zijn beveiligingsfuncties.
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.