Hämtade paketversioner
Ett beroendefynd säger att en version är deklarerad någonstans. Hämtningsräkningen säger något annat: vilka paketversioner som faktiskt laddades ned, av vilken konsument och hur nyligen. Den räknas från registrets åtkomstlogg, så den täcker dina egna paket i fremforges register och de paket som din organisation hämtar via beroendeproxyn, inklusive hämtningar från CI utanför fremforge som använder en registerrobot.
Sedan 2026-10-13 räknas en nedladdning som ett Forgejo Actions-jobb gör via beroendeproxyn, och som proxyn levererar från sin cache, direkt här och sparas inte som en händelse i åtkomstloggen (se registrets åtkomstlogg). Hämtningsräkningen är därför registret över de hämtningarna: per UTC-dag, paketversion och repo, med de körningar som hämtade dem.
Vad som räknas som en hämtning
En hämtning är en lyckad nedladdning som anger en version: en npm-tarball, en PyPI-fil, en Maven-artefakt, ett NuGet-paket, en zip-fil för en Go-modul, en generisk fil eller annan registerfil, eller en container-image som hämtas via tagg. Följande räknas inte:
- läsningar av metadata, till exempel ett npm-packument eller ett enkelt PyPI-index;
- avvisade förfrågningar;
- nedladdningar av container-lager, som bara anger en digest.
En nedladdning som en policy i skuggläge skulle ha avvisat, men släppte igenom, räknas som en hämtning.
Konsumenter
Varje hämtning tillskrivs den konsument som åtkomstloggen registrerade:
| Typ | Vem | Anges med |
|---|---|---|
job | En jobbtoken i Forgejo Actions | Jobbets repo, <owner>/<repo>. run_ids listar de Actions-körningar som hämtade versionen |
robot | En registerrobot | Robotens namn. login innehåller dess botanvändare |
bot | En annan systembot i fremforge | Dess inloggningsnamn |
user | En persons token eller session | Personens inloggningsnamn |
anonymous | En förfrågan utan inloggningsuppgifter | Ingenting |
Vilka säkerhetsmeddelanden som kopplas
- Versioner som hämtas via beroendeproxyn (npm, PyPI, Maven, NuGet och Go) matchas mot det OSV-index över säkerhetsmeddelanden som proxyns paketpolicy utvärderar. Versionsintervall utvärderas, inte bara exakta versioner.
sourceäradvisory_index. - Versioner av dina egna registerpaket får de öppna fynden för den paketfilen, samma fynd som paketpolicyn läser. Avfärdade och lösta fynd utelämnas.
sourceärpackage_findings. - Container-images räknas, men den här listan visar inga säkerhetsmeddelanden för dem. Fynd för images finns på sidorna för image-skanning.
I konsolen
Öppna Säkerhet › Komponenter › Hämtade versioner i organisationens administration. Sidan listar samma versioner som API:t, med samma ordning och filter: paketnamn, period (i dag, eller de senaste 7, 30, 90 eller 365 dagarna), lägsta allvarlighetsgrad, ekosystem, källa (ditt eget register eller beroendeproxyn), konsumenttyp och konsument. Kryssa i Ta med versioner utan känd sårbarhet för att se varje hämtad version, inte bara de sårbara. Varje rad visar den värsta allvarlighetsgraden, upp till tre säkerhetsmeddelanden med en åtgärdad version, antalet hämtningar per konsumenttyp, de största konsumenterna och när versionen senast och först hämtades. Raden ovanför tabellen anger fram till när åtkomsthändelser har räknats. Nästa sida och Första sidan bläddrar i listan; Exportera CSV laddar ned alla matchande versioner med de aktuella filtren, i samma kolumner som API:ts CSV.
Läsa den med API:t
Med en API-token som har components:read eller findings:read:
curl -sS -H "Authorization: Bearer $FFP_TOKEN" \
"https://frem.sh/_app/api/v1/orgs/acme/components/pulled?days=30&min_severity=high"Som standard innehåller listan bara sårbara versioner, de allvarligaste först och sedan de senast hämtade. Varje post har versionen och dess purl, den värsta severity, advisories med deras åtgärdade versioner, det totala antalet pulls, hämtningarna per konsumenttyp, first_seen_at och last_seen_at, samt upp till tio consumers med egna antal och tider. En konsument av typen job har dessutom run_ids: upp till 20 id:n för Actions-körningar (GITHUB_RUN_ID) som hämtade versionen under perioden, nyaste först.
| Filter | Betydelse |
|---|---|
days | Hur många UTC-dagar bakåt, i dag inräknad: 1 till 730, standard 30 |
vulnerable | true (standard) för versioner med ett öppet säkerhetsmeddelande; false för varje hämtad version |
min_severity | low, medium, high eller critical |
ecosystem | Pakettypen: npm, pypi, maven, nuget, go, container, … |
origin | registry (dina egna paket) eller proxy (beroendeproxyn) |
name | Ett paketnamn, exakt |
consumer_kind | job, robot, bot, user eller anonymous |
consumer | Ett repo (owner/name), ett robotnamn eller ett inloggningsnamn |
run_id | Ett id för en Actions-körning (GITHUB_RUN_ID): bara de versioner som den körningen hämtade |
Om du vill se vad ett bygge hämtade skickar du dess körnings-id med vulnerable=false:
curl -sS -H "Authorization: Bearer $FFP_TOKEN" \
"https://frem.sh/_app/api/v1/orgs/acme/components/pulled?run_id=123456&vulnerable=false&days=7"Skicka en sidas next_cursor som cursor för att hämta nästa sida, med samma filter, och sluta när den är null. En sida innehåller upp till 500 versioner (limit). Lägg till format=csv för att få alla matchande versioner som CSV. En fråga som matchar fler än 50 000 versioner svarar 413 too-many-rows; begränsa den. Se API-referensen för den fullständiga strukturen.
Hur aktuell den är och hur länge den sparas
Hämtningsräkningen sammanställs från åtkomstloggen varje timme. window.rolled_up_to i svaret anger fram till när åtkomsthändelser har räknats. CI-nedladdningar som levereras från beroendeproxyns cache läggs till när de kommer in, utan att vänta på timsammanställningen.
Hämtningsräkningen följer åtkomstloggens lagring av bevis och tas bort av samma dagliga jobb: en dags antal försvinner när den nyaste nedladdning de räknar är äldre än lagringstiden för access_log, eller lagringstiden för access_log_ci för CI-hämtningar via beroendeproxyn. Så länge ett rättsligt bevarandekrav gäller tas inget bort.
I dataexporten
Varje dataexport innehåller hämtningsräkningen som metadata/pulled-versions.ndjson, en rad per UTC-dag, paketversion och konsument, de rader som den här sidan summerar. Se Exportschema. Säkerhetsmeddelandena finns inte i filen: de kopplas när du läser listan, från data om säkerhetsmeddelanden som ändras över tid.
Begränsningar
- En hämtning är inte en driftsättning. En version kan hämtas av ett bygge och aldrig levereras, eller hämtas en gång och cachas i månader.
- Hämtningar från cacher utanför fremforge syns inte. Bara förfrågningar som når fremforges register eller beroendeproxy räknas.
- Team registreras inte. En användares hämtning tillskrivs användaren.
- Körnings-id:n sparas från och med 2026-10-13. Per UTC-dag, paketversion och repo sparas de 100 nyaste körningarna; ett repo som kör fler än 100 byggen om dagen som hämtar samma version behåller antalet för varje hämtning men bara id:n för de 100 nyaste körningarna.
- Hämtningsräkningen registrerar inte vilket jobb i en körning som hämtade en version, och inte heller den exakta tiden för varje hämtning, bara den första och den sista under dagen.