Gå til hovedinnhold

Skadevareskanning

fremforge kjører en ClamAV-basert skanner foran opplastingsflatene som er listet under Flater. Hvis en signatur matcher, avvises opplastingen med HTTP 422, og en funnrad havner i skadevareskanningsloggen for kunden.

Skanneren kjører uten Cisco Talos og uten abuse.ch. Begge krever en betalt lisens for kommersiell bruk, og vi vil ikke ha en underdatabehandler i skanningsveien som vi ikke fullt ut kan gjøre rede for.

Signaturstabel

KildeHva den dekkerKadensLisens
SaneSecurityVanlig skadevare i e-post og makroer, phishing, JS-droppereHentes hver 4. time fra et speil i EUGratis, støttet av donasjoner
YARA-Forge CoreTTP-er for trusselaktører, pakkere, web shells, native nyttelaster. Samler over 45 kontrollerte repositoryer med YARA-regler (Florian Roths signature-base, DidierStevens osv.)Hentes hver 4. time, upstream utgir ukentligDRL 1.1, kommersiell bruk tillatt med kreditering
Linux Malware Detect (LMD)Nyttelaster på Linux-servere: web shells, kryptominere, bakdører. Statisk datasett fra rfxn.comHentes hver 4. time, upstream dagligGPLv2
EICAR-testsignaturStandardsignaturen for røyktester av skadevareskanning, lagt inn på nytt ved hver oppfriskingStatisk, montert fra et ConfigMapAllemannseie

Hvor ferske kildene er, overvåkes av operatørene i fremverk; kundene ser ikke signaturenes ferskhet direkte. SLA-en dekker skannerens tilgjengelighet.

Kreditering. YARA-Forge Core er satt sammen av YARA-Forge fra offentlige repositoryer med YARA-regler, og hver regel krediterer forfatterne sine i metadataene. Den brukes under Detection Rule License 1.1. Signaturene i Linux Malware Detect er laget av R-fx Networks. Se tredjepartsmerknader.

Flater

Skannes, og stenger ved feil (opplastingen avvises hvis skanneren ikke kan nås):

  • PUT av LFS-objekter
  • POST av vedlegg i issues og pull requests
  • PUT / POST til pakkeregisteret, alle pakketyper (npm, Maven, PyPI, NuGet, Cargo, containerlag og resten), inkludert publiseringer fra jobber på fremforges hostede runnere til en organisasjons register

En opplasting større enn 4 GiB kan ikke skannes fullt ut og avvises med HTTP 413.

Skannes bare hvis organisasjonen din slår det på (av som standard):

Skannes IKKE:

  • Push over Git-protokollen (Git-objekter). Oppdagelse av secrets ved push håndteres separat av push-beskyttelse.
  • Workflow-artefakter. De er kortlevde, avgrenset til kunden, og policyen sier allerede «ikke godta artefakter du ikke stoler på». Modellfiler blant dem sjekkes av modellskanning, bare som funn.

Henting via avhengighetsproxyen

Det avhengighetsproxyen henter fra et upstream-register (pakkefiler for npm, PyPI, Maven, NuGet, Go, Cargo, Helm og RPM, og lag i containerimager), blir ikke skannet med ClamAV som standard. Det samsvarer med GitHub og GitLab, som heller ikke virusskanner nedlastinger av pakker: offentlige registre fanger skadevare når en pakke publiseres, og publiserer det som et sårbarhetsvarsel om skadevare.

Dette gjelder fortsatt for alle organisasjoner, med ClamAV-skanning av eller på:

  • Kjente ondsinnede pakker. Hver pakkeversjon som proxyen leverer, matches mot OSVs varsler om skadevare (MAL-) under pakkepolicyen din. Et treff nektes for alle organisasjoner, uansett policyens modus (siden 2026-10-11; for fremforges egne interne organisasjoner siden 2026-10-10): nedlastingen svarer 403 med årsaken, og versjonen utelates fra pakkemetadataene proxyen leverer, slik at pakkebehandlere løser opp til en versjon som ikke er ondsinnet. Se Ondsinnede pakker.
  • Innhold som ClamAV allerede har funnet infisert, forblir blokkert. En fil eller et image-lag som en skanning fant infisert, nektes for alle organisasjoner, uansett om den organisasjonen skanner.
  • Opplastinger og pushede imager skannes alltid, som listet under Flater.

For å få proxyen til å skanne det den henter med ClamAV, slår du på Virusskanning i proxyen: skann hentede pakker og imager (ClamAV) under Organisasjonsadministrasjon → Bygg og utrulling → Avhengighetsproxy, eller setter malware_scan: true med PUT /orgs/{org}/dependency-proxy. Når det er på, strømmes hver pakkefil og hvert image-lag som proxyen henter for organisasjonen din, gjennom ClamAV, og en fil den finner infisert eller ikke kan skanne fullt ut, holdes tilbake. Det gjelder også en fil større enn 4 GiB, unntatt et modell-lag i safetensors eller GGUF som består formatsjekken. En skanning av et image-lag som går tom for tid, er ikke en vurdering: laget holdes tilbake og settes i kø for fremforges bakgrunnsskanner for lag, og en senere pull leveres når den skanningen er bestått. En pakkefil der skanningen går tom for tid, behandles på samme måte: den holdes tilbake fra den forespørselen, skannes i bakgrunnen og leveres ved en senere forespørsel når den skanningen er bestått. Mens den venter, lagres og skannes en RPM bare i organisasjonens eget område, som alt RPM-innhold. En fil som proxyen bufret for en annen organisasjon uten skanning, hentes og skannes på nytt før den leveres til din organisasjon.

Hold nye imager tilbake til skadevareskanningen er ferdig (block_until_scanned) venter på den skanningen, så den krever at ClamAV-skanning er slått på. En forespørsel som ville latt block_until_scanned være på med malware_scan av, avvises med 400 scan-pair.

Hva som skjer når en signatur slår til

  1. Proxyen avviser opplastingen med HTTP 422 og et svar som navngir signaturen, SHA-256 for de avviste bytene og en henvisning til fremgangsmåten for overstyring.
  2. En funnrad skrives til malware_scan_findings via API-ets endepunkt /internal/malware-scan/ingest (gjensidig autentisering, bearer + tillatelsesliste for IP).
  3. Funnet vises umiddelbart i organisasjonsadministrasjonen under Security, Malware scan, med opplastingsstien, signaturen som matchet, hvem som forsøkte opplastingen, og filstørrelsen.

Overstyringer (falske positiver)

Noen signaturer slår til på legitime testfiksturer, prøver fra sikkerhetsforskning eller harmløse artefakter som tilfeldigvis matcher et gammelt mønster. Kundens administratorer kan legge til en overstyring som hvitelister et bestemt par av SHA-256-hash og repository.

  1. Organisasjonsadministrasjon → Sikkerhet › Funn › Skadevareskanning av opplastinger. Utvid Aktive overstyringer og klikk Legg til overstyring.
  2. Lim inn SHA-256 for den avviste filen (vises i 422-svaret).
  3. Velg omfang: bare dette repositoryet, eller alle repositoryer i organisasjonen.
  4. Sett en utløpstid (standard 90 dager; maks 1 år).
  5. Legg til en begrunnelse (fritekst, revideres i organisasjonens revisjonslogg).

En overstyring kortslutter bare avgjørelsen om treff på hash. Hvis en annen signatur matcher de samme bytene, avvises opplastingen fortsatt. Operatørene i fremverk går gjennom overstyringer hvert kvartal som en del av sikkerhetsgjennomgangen.

Via REST-API-et

Funn og overstyringer fra skadevareskanningen er tilgjengelige i det offentlige API-et. Bruk det når du kobler varsler om avviste opplastinger til et eksternt ticket-system, skripter livssyklusen for overstyringer eller styrer det fra en AI-agent.

  • List funn GET /_app/api/v1/orgs/:slug/malware-scan/findings
  • Avvis et funn POST /_app/api/v1/orgs/:slug/malware-scan/findings/:id/dismiss
  • List overstyringer GET /_app/api/v1/orgs/:slug/malware-scan/overrides
  • Opprett overstyring POST /_app/api/v1/orgs/:slug/malware-scan/overrides body: { "kind": "file", "signature": "sha256:...", "reason": "test fixture", "expires_at": "2027-01-01T00:00:00Z" }
  • Tilbakekall overstyring DELETE /_app/api/v1/orgs/:slug/malware-scan/overrides/:id

Å liste krever scope findings:read, og å avvise et funn krever findings:write. Å opprette eller tilbakekalle en overstyring krever policy:write, fordi en overstyring unntar opplastinger fra skanningen; en CI-jobbs runnertoken har aldri det scopet. Bruk et personlig tilgangstoken (PAT):

curl -X POST \
  -H "Authorization: Bearer ${FREMFORGE_PAT}" \
  -H "Content-Type: application/json" \
  -d '{"kind":"file","signature":"sha256:abc123...","reason":"known-clean test artefact","expires_at":"2027-01-01T00:00:00Z"}' \
  https://frem.sh/_app/api/v1/orgs/acme/malware-scan/overrides

Se referansen for det offentlige REST-API-et for den fullstendige OpenAPI-spesifikasjonen.

SLA og stenging ved feil

Hvis ClamAV-daemonen ikke kan nås, avvises opplastinger med HTTP 503 og en Retry-After. Det er avgjørelsen om å stenge ved feil i henhold til vår policy for akseptabel bruk (AUP). Alternativet (å åpne ved feil under et skannerbrudd) åpner et vindu der AUP-forpliktelsen omgås i det stille; vi mener ikke den avveiningen er verdt det. Operatørene varsles innen 5 minutter når skanneren er nede.

Røyktest med EICAR

En kanarijobb (CronJob) laster opp standardtestfilen fra EICAR hvert 30. minutt og verifiserer at opplastingen avvises. Hvis tre kanarikjøringer på rad lykkes (det vil si at avvisningen slutter å skje), varsles operatørene. Det dekker tilfellet der signaturdatabasen ble levert uten feil, men ikke ble lastet inn.