Skanning efter skadlig kod
fremforge kör en skanner baserad på ClamAV framför de uppladdningsytor som listas under Ytor. Om en signatur matchar avvisas uppladdningen med HTTP 422 och en fyndrad hamnar i tenantens logg för skanning efter skadlig kod.
Skannern körs utan Cisco Talos och utan abuse.ch. Båda kräver en betald licens för kommersiell användning, och vi vill inte ha ett underbiträde i skanningsvägen som vi inte fullt ut kan redogöra för.
Signaturer
| Flöde | Vad det täcker | Intervall | Licens |
|---|---|---|---|
| SaneSecurity | Vanlig skadlig kod i e-post och makron, nätfiske, JS-droppers | Hämtas var 4:e timme från en spegel i EU | Gratis, finansieras med donationer |
| YARA-Forge Core | Hotaktörers TTP:er, packers, web shells, native payloads. Samlar fler än 45 granskade repon med YARA-regler (Florian Roths signature-base, DidierStevens m.fl.) | Hämtas var 4:e timme, uppströms släpps varje vecka | DRL 1.1, kommersiell användning tillåten med erkännande |
| Linux Malware Detect (LMD) | Payloads på Linux-servrar: web shells, kryptogrävare, bakdörrar. Statiskt dataset från rfxn.com | Hämtas var 4:e timme, uppströms dagligen | GPLv2 |
| EICAR-testsignatur | Standardsignaturen för röktest av skanning efter skadlig kod, läggs in på nytt vid varje uppdatering | Statisk, monterad via ConfigMap | Allmän egendom |
Hur aktuella flödena är övervakas av fremverks drifttekniker; kunderna ser inte signaturernas aktualitet direkt. SLA:n täcker skannerns tillgänglighet.
Erkännande. YARA-Forge Core sammanställs av YARA-Forge från publika repon med YARA-regler, och varje regel krediterar sina upphovspersoner i sin metadata. Den används under Detection Rule License 1.1. Signaturerna i Linux Malware Detect kommer från R-fx Networks. Se meddelanden om tredje part.
Ytor
Skannas, stänger vid fel (uppladdningen avvisas om skannern inte kan nås):
- PUT av LFS-objekt
- POST av bilagor i issues och pull requests
- PUT / POST till paketregistret, alla pakettyper (npm, Maven, PyPI, NuGet, Cargo, container-lager och resten), inklusive publiceringar från jobb på fremforges hostade runners till en organisations register
En uppladdning som är större än 4 GiB kan inte skannas fullständigt och avvisas med HTTP 413.
Skannas bara om din organisation slår på det (avstängt som standard):
- Paket och container-images som hämtas via beroendeproxyn. Se Hämtningar via beroendeproxyn.
Skannas INTE:
- Push via Git-protokollet (git-objekt). Upptäckt av hemligheter vid push hanteras separat av Push-skydd.
- Arbetsflödesartefakter. De är kortlivade, avgränsade till tenanten, och policyn säger redan “ta inte emot artefakter du inte litar på”. Modellfiler bland dem kontrolleras av modellskanning, enbart som fynd.
Hämtningar via beroendeproxyn
Det som beroendeproxyn hämtar från ett uppströmsregister (paketfiler för npm, PyPI, Maven, NuGet, Go, Cargo, Helm och RPM, och lager i container-images) skannas inte med ClamAV som standard. Det motsvarar GitHub och GitLab, som inte heller virusskannar paketnedladdningar: de publika registren fångar skadlig kod när ett paket publiceras och publicerar det som ett säkerhetsmeddelande om skadlig kod.
Det här gäller fortfarande för varje organisation, med eller utan ClamAV-skanning:
- Kända skadliga paket. Varje paketversion som proxyn levererar matchas mot OSV:s säkerhetsmeddelanden om skadlig kod (
MAL-) enligt din paketpolicy. En träff avvisas för varje organisation, oavsett policyns läge (sedan 2026-10-11; för fremforges egna interna organisationer sedan 2026-10-10): nedladdningen svarar403med orsaken, och versionen utelämnas ur den paketmetadata som proxyn levererar, så att pakethanterare väljer en version som inte är skadlig. Se Skadliga paket. - Innehåll som ClamAV redan har funnit infekterat förblir blockerat. En fil eller ett image-lager som en skanning funnit infekterat avvisas för varje organisation, oavsett om den organisationen skannar eller inte.
- Uppladdningar och pushade images skannas alltid, enligt listan under Ytor.
Om du vill att proxyn ska skanna det den hämtar med ClamAV, slå på Proxyns virusskanning: skanna hämtade paket och images (ClamAV) under Organisationens administration → Bygg och driftsätt → Beroendeproxy, eller sätt malware_scan: true med PUT /orgs/{org}/dependency-proxy. När det är på strömmas varje paketfil och image-lager som proxyn hämtar för din organisation genom ClamAV, och en fil som befinns infekterad eller inte kan skannas fullständigt hålls kvar. Det gäller även en fil som är större än 4 GiB, utom ett modellager i safetensors eller GGUF som klarar formatkontrollen. En skanning av ett image-lager som får slut på tid är inget utlåtande: lagret hålls kvar och köas för fremforges lagerskanner i bakgrunden, och en senare hämtning levereras när den skanningen har gått igenom. En paketfil vars skanning får slut på tid hanteras på samma sätt: den hålls kvar från den begäran, skannas i bakgrunden och levereras vid en senare begäran när den skanningen har gått igenom. Medan den väntar lagras och skannas en RPM bara i din organisations eget utrymme, som allt RPM-innehåll. En fil som proxyn cachade för en annan organisation utan skanning hämtas och skannas igen innan den levereras till din organisation.
Håll kvar nya images tills skanningen efter skadlig kod är klar (block_until_scanned) väntar på den skanningen, så den kräver att ClamAV-skanningen är på. En förfrågan som skulle lämna block_until_scanned på med malware_scan av avvisas med 400 scan-pair.
Vad som händer när en signatur matchar
- Proxyn avvisar uppladdningen med HTTP 422 och ett svar som anger signaturen, SHA-256 för de avvisade byten och en hänvisning till flödet för undantag.
- En fyndrad skrivs till
malware_scan_findingsvia api:ets slutpunkt/internal/malware-scan/ingest(ömsesidig autentisering, bearer + IP-tillåtelselista). - Fyndet visas direkt i tenantens administration, Säkerhet, Skanning av uppladdningar, med uppladdningens sökväg, den matchade signaturen, vem som försökte ladda upp och filens storlek.
Undantag (falska positiva)
Vissa signaturer slår till på legitima testfixturer, prover från säkerhetsforskning eller ofarliga artefakter som råkar matcha ett gammalt mönster. Tenantens administratörer kan lägga till ett undantag som vitlistar ett specifikt par av SHA-256-hash och repo.
- Tenantens administration → Säkerhet › Fynd › Skadlig kod. Fäll ut Aktiva undantag och klicka på Lägg till undantag.
- Klistra in SHA-256 för den avvisade filen (visas i 422-svaret).
- Välj omfång: bara det här repot, eller alla repon i organisationen.
- Ange ett utgångsdatum (standard 90 dagar; högst 1 år).
- Lägg till en motivering (fritext, granskas i organisationens granskningslogg).
Ett undantag kortsluter bara beslutet för träffen på just den hashen. Om en annan signatur matchar samma byte avvisas uppladdningen ändå. fremverks drifttekniker går igenom undantagen varje kvartal som en del av säkerhetsgranskningen.
Via REST-API
Fynd och undantag för skanning efter skadlig kod finns i det publika API:et. Använd det när du kopplar varningar om avvisade uppladdningar till ett externt ärendesystem, skriptar undantagens livscykel eller styr från en AI-agent.
- Lista fynd
GET /_app/api/v1/orgs/:slug/malware-scan/findings - Avfärda ett fynd
POST /_app/api/v1/orgs/:slug/malware-scan/findings/:id/dismiss - Lista undantag
GET /_app/api/v1/orgs/:slug/malware-scan/overrides - Skapa undantag
POST /_app/api/v1/orgs/:slug/malware-scan/overridesbody:{ "kind": "file", "signature": "sha256:...", "reason": "test fixture", "expires_at": "2027-01-01T00:00:00Z" } - Återkalla undantag
DELETE /_app/api/v1/orgs/:slug/malware-scan/overrides/:id
Att lista kräver scope findings:read, och att avfärda ett fynd kräver findings:write. Att skapa eller återkalla ett undantag kräver policy:write, eftersom ett undantag undantar uppladdningar från skanningen; en runner-token för ett CI-jobb har aldrig det. Använd en personlig åtkomsttoken (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/overridesSe referensen för det publika REST-API:et för den fullständiga OpenAPI-specifikationen.
SLA och stängning vid fel
Om ClamAV-demonen inte kan nås avvisas uppladdningar med HTTP 503 och en Retry-After. Det är beslutet att stänga vid fel enligt vår policy för acceptabel användning. Alternativet (att släppa igenom under ett skanneravbrott) öppnar ett fönster där åtagandet i policyn för acceptabel användning tyst kringgås; vi anser inte att den avvägningen är värd det. Drifttekniker larmas inom 5 minuter när skannern är nere.
Röktest med EICAR
Ett kanariejobb (CronJob) laddar upp EICAR:s standardtestfil var 30:e minut och kontrollerar att uppladdningen avvisas. Om tre kanariekörningar i rad lyckas (dvs. avvisningen slutar ske) larmas drifttekniker. Det täcker fallet där signaturdatabasen levererades felfri men inte gick att läsa in.