Gå til hovedindhold

Eksempel-repository

En ny organisation har intet at scanne, før den pusher kode. For at se, hvad sikkerhedsfunktionerne gør inden da, kan en ejer af organisationen kopiere fremforges sikkerhedseksempel ind i organisationen: et lille repository med bevidst forældede afhængigheder, så fund, vurderinger af nåbarhed og en pull request med en sikkerhedsrettelse dukker op inden for få minutter.

Opret det

På Sikkerhed › Overblik (/<org>/_admin/security/overview) har punktet Scanningsdækning i opsætningstjeklisten knappen Prøv med et eksempel-repository. Ejere af organisationen kan bruge den; revisorer får den afvist, som alle ændringer.

  • Den opretter <org>/fremforge-security-sample, et privat repository, og committer eksemplet ind i det i én commit fra fremforge. Repositoriet scannes, så snart det er oprettet.
  • En organisation kan have ét eksempel-repository. Klikker du igen, får du at vide, at det allerede findes.
  • Findes der allerede et repository ved navn fremforge-security-sample, oprettes intet; omdøb eller slet det repository først.
  • Hvert forsøg står i revisionsloggen som code-security.sample_repo.created sammen med udfaldet.

Hvad det indeholder

Indholdet kommer fra en fast, gennemgået commit af fremforges eget eksempel. Det rummer manifester, lockfiler og nogle få linjer kode, der kalder de sårbare funktioner. Afhængighedernes egen kildekode er ikke med. Intet i det bygges, køres eller udrulles: der er ingen workflows og ingen Dockerfile. Det er licenseret under MIT, og dets README nævner de advisories, det skal vise:

ØkosystemPakkeVersionAdvisoryNåbarhed
npmlodash4.17.20CVE-2021-23337 (command injection i template)nåbar: eksemplet kalder template
npmlodash4.17.20CVE-2020-28500 (ReDoS)ingen kaldesti
npmminimist1.2.5CVE-2021-44906 (prototype pollution)ingen kaldesti: angivet, aldrig importeret
Gogolang.org/x/textv0.3.5GO-2021-0113 / CVE-2021-38561 (language.ParseAcceptLanguage)nåbar: eksemplet kalder den
PyPIPyYAML5.3.1CVE-2020-14343 (kodekørsel gennem full_load)nåbar på importniveau

De fastlåste versioner har et par advisories mere end disse. Hver af dem har en rettet version, så Åbn rettelses-PR virker for dem alle. Har din organisation slået automatiske sikkerhedsrettelser til, åbnes der af sig selv pull requests med rettelser på eksemplet, som på ethvert andet repository.

Kun i konsollen

Fund på eksempel-repositoriet vises i konsollen og API’et som alle andre. De forlader aldrig fremforge:

  • ingen mail med sikkerhedsvarsel, hverken med det samme eller i den daglige oversigt, og intet om dem i det ugentlige sikkerhedssammendrag;
  • ingen alarm-webhook og ingen SIEM-hændelse, heller ikke de revisionshændelser, der udledes af fund (indlæste scanninger, match, overskredne SLA’er);
  • tælles aldrig med i anonyme tal, og en organisation, hvis eneste repository er eksemplet, bidrager intet til dem;
  • tælles aldrig med i fremforges egne målinger af sikkerhedsfunktionerne.

Eksemplet tæller heller aldrig som scanningsdækning: punktet i tjeklisten beder stadig om et repository af dine egne.

Når det holder op med at være et eksempel

Eksemplet er kun fremforges indhold, så længe dets standardbranch står, hvor fremforge efterlod den. Så snart nogen pusher til eller merger ind i standardbranchen (at merge en af dets rettelses-pull requests tæller med), bliver det et almindeligt repository: fra da af sender dets fund varsler, webhooks og SIEM-hændelser og tæller med i anonyme tal og som scanningsdækning, som ethvert andet repository. Det registreres i revisionsloggen som code-security.sample_repo.graduated. Push til andre branches, for eksempel en rettelses-pull requests branch, ændrer intet.

Fjern det

Slet repositoriet i Forgejo, når du er færdig. fremforge opdager sletningen og glemmer eksemplet, så du senere kan oprette et nyt. Omdøber du det, forbliver det et eksempel.