Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
NuGet-klienten, från version 6.7, kan ladda ned känd information om paketsårbarhet som ska användas i scenarier som att kontrollera paket under återställningsåtgärder. Paketmetadataresursen innehåller också känd sårbarhetsinformation, men om en app behöver kontrollera ett stort antal paket för kända sårbarheter är det mycket snabbare att ladda ned en fil med kända sårbarheter och uppslag lokalt i stället för att göra ett stort antal HTTP-begäranden. Detta gör det till exempel möjligt för NuGet-återställning att snabbt kontrollera återställda paket efter kända säkerhetsrisker, som tidigare aldrig laddade ned paketinformation från paketmetadataresursen.
API:et består av minst två filer, sårbarhetsindexet och en eller flera säkerhetssidefiler. Kända sårbarhetsdata kan partitioneras i flera filer, och sårbarhetsindexet ger klienter information som behövs för att cachelagrar filer och uppdaterar cachen effektivt.
Resursen som används för att skapa den här URL:en är den VulnerabilityInfo resurs som finns i -tjänstindexet.
Föreslagen partitioneringsstrategi
Sidorna som anges i sårbarhetsindexet bör helst optimeras för att maximera cachelagringen och därför minimera uppdateringar av stora filer. Detta gör det möjligt för klienter att minimera den frekvens som krävs för att ladda ned uppdateringar.
En föreslagen strategi för partitionering av sårbarhetsdata är att ha två sidor base.json och updates.json.
Filen base.json uppdateras regelbundet (till exempel en gång i månaden) och innehåller alla kända säkerhetsrisker när filen återskapas.
Filen updates.json bör innehålla alla nya rekommendationer som publicerats sedan base.json den senast återskapades.
Detta gör det möjligt för klienter att ladda ned det stora base.json sällan, medan den ofta föränderliga updates.json filen alltid är relativt liten.
NuGet-klienter kombinerar data från flera filer additivt och kan läsa in filerna i valfri ordning.
Datafilschemat tillåter inte ändring eller redigering av kända säkerhetsrisker från en annan fil.
Om en servers sårbarhetsdatakälla (till exempel GitHub Advisories Database) ändrar en befintlig rekommendation, måste NuGet-servern därför ändra den sida som sårbarhetsinformationen tidigare rapporterades på.
Ett sätt att uppnå detta med det föreslagna partitionsschemat är att behandla alla sårbarhetsändringar och borttagningar som en utlösare för att återskapa den fullständiga base.json filen och tömma updates.json.
Om du tänker använda nuget.org:s sårbarhetsdata i din egen NuGet-serverimplementering bör du ta hänsyn till utvecklare som inte har direkt åtkomst till nuget.org. Mer information finns i vår implementeringsguide.
Versioning
Följande @type värden används:
| @type värde | Notes |
|---|---|
| VulnerabilityInfo/6.7.0 | Den första versionen |
Vulnerability index
Sårbarhetsindexet är en JSON-matris med objekt med följande egenskaper:
| Name | Type | Required | Notes |
|---|---|---|---|
| @name | string | yes | Ett kort namn för filen, som används som en cachenyckel. |
| @id | string | yes | Den fullständiga (absoluta) URL:en till en sårbarhetsdatafil. |
| @updated | string | yes | En ISO 8601-sträng som representerar datum och tid då filen senast uppdaterades, helst med UTC-tidszonen. |
| comment | string | no | En valfri beskrivande sträng. |
Följande begränsningar gäller:
- Indexet måste vara en matris med objekt med mellan 1 och 16 objekt.
Om servern inte har några sårbarhetsdata (noll sidor) måste du ta bort resursen
VulnerabilityInfoServiceIndexfrån . -
@namemåste vara unikt i indexet, måste vara mellan 1 och 32 tecken långt och kan bara använda tecknenAtillZ,atillz,0till9,-eller_. -
@idmåste vara en absolut URL, inte en relativ URL.
Vulnerability page
Filer för sårbarhetssidor är ett JSON-objekt som används som en ordlista. Egenskapsnycklar är det gemena paket-ID:t och egenskapsvärden är en matris med följande objekt med följande egenskaper:
| Name | Type | Required | Notes |
|---|---|---|---|
| severity | integer | yes | 0 betyder låg, 1 betyder medel, 2 betyder hög, 3 betyder kritisk. |
| url | string | yes | URL där användarna kan få mer information om säkerhetsrisken. |
| versions | string | yes | Det versionsintervall som är sårbart med hjälp av NuGets syntax för versionsintervall. |
Paket-ID:t (rotobjektets nycklar) måste vara nedsänkta med String.ToLowerInvariant.
Listan över kända säkerhetsrisker för ett paket ska sorteras i fallande ordning efter den högsta versionen av versionsintervallet, följt av fallande version av min-versionen, följt av url:ens stigande ordning. Intervall med null min- eller maxversioner (obundna) i ett versionsintervall ska sorteras till före icke-null-versioner (avgränsade).
En tom sida, en sida som inte ger några kända säkerhetsrisker, måste vara en tom JSON-matris ([]).
Samples
Här är ett exempel på ett sårbarhetsindex:
[
{
"@name": "base",
"@id": "https://nuget.contoso.com/v3/vulnerabilities/3bb6b300-2f74-45bc-af06-746fd21c024b.json",
"@updated": "2023-06-01T06:14:58.4159909Z",
"comment": "The base data for vulnerability update periodically"
},
{
"@name": "update",
"@id": "https://nuget.contoso.com/v3/vulnerabilities/ffd572cd-33f3-4372-8714-a9cab2e86b45.json",
"@updated": "2023-06-14T11:35:30.3155764Z",
"comment": "The patch data for the vulnerability. Contains all the vulnerabilities since base was last updated."
}
]
Här är ett exempel på en säkerhetsriskdatafil:
{
"contoso.library": [
{
"url": "https://cve.contoso.com/advisories/1",
"severity": 1,
"versions": "(, 2.0.0)"
},
{
"url": "https://cve.contoso.com/advisories/2",
"severity": 2,
"versions": "(1.0.0, 2.0.0)"
}
],
"contoso.utilities": [
{
"url": "https://cve.contoso.com/advisories/3",
"severity": 3,
"versions": "(, 1.0.0)"
}
]
}