Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
NuGet-client, vanaf versie 6.7, kan bekende informatie over beveiligingsproblemen van pakketten downloaden voor gebruik in scenario's zoals het controleren van pakketten tijdens herstelbewerkingen. Hoewel de resource voor pakketmetagegevens ook bekende informatie over beveiligingsproblemen bevat, is het veel sneller om een bestand met bekende beveiligingsproblemen te downloaden en lokaal op te zoeken in plaats van een groot aantal HTTP-aanvragen te maken. Hierdoor kan NuGet Restore bijvoorbeeld snel herstelde pakketten controleren op bekende beveiligingsproblemen, die nooit pakketgegevens hebben gedownload van de metagegevensresource van het pakket.
De API bestaat uit ten minste twee bestanden, de index voor beveiligingsproblemen en een of meer paginabestanden voor beveiligingsproblemen. Bekende gegevens over beveiligingsproblemen kunnen worden gepartitioneerd in meerdere bestanden en de index voor beveiligingsproblemen biedt clients informatie die nodig is voor het opslaan van bestanden en het efficiƫnt bijwerken van de cache.
De resource die wordt gebruikt voor het bouwen van deze URL, is de VulnerabilityInfo resource in de service-index.
Voorgestelde partitioneringsstrategie
De pagina's in de index voor beveiligingsproblemen moeten idealiter worden geoptimaliseerd om caching te maximaliseren en daarom updates voor grote bestanden te minimaliseren. Hierdoor kunnen clients de frequentie minimaliseren die nodig is om updates te downloaden.
Een voorgestelde strategie voor partitionering van gegevens over beveiligingsproblemen bestaat uit twee pagina's en base.jsonupdates.json.
Het base.json bestand wordt periodiek bijgewerkt (bijvoorbeeld eenmaal per maand) en bevat alle bekende beveiligingsproblemen op het moment dat het bestand opnieuw wordt gegenereerd.
Het updates.json bestand moet nieuwe adviezen bevatten die zijn gepubliceerd sinds base.json het laatst opnieuw is gegenereerd.
Hierdoor kunnen clients de grote base.json onregelmatig downloaden, terwijl het vaak veranderende updates.json bestand altijd relatief klein is.
NuGet-clients combineren de gegevens van meerdere bestanden additief en kunnen de bestanden in elke volgorde laden.
Het gegevensbestandsschema staat niet toe dat bekende beveiligingsproblemen van een ander bestand kunnen worden gewijzigd of gewijzigd.
Als de gegevensbron voor beveiligingsproblemen van een server (bijvoorbeeld de GitHub Advisories Database) een bestaand advies wijzigt, moet de NuGet-server de pagina wijzigen waarop de informatie over beveiligingsproblemen eerder is gerapporteerd.
Een manier om dit te bereiken met het voorgestelde partitieschema is om alle wijzigingen en verwijderingen van beveiligingsproblemen te behandelen als trigger om het volledige base.json bestand opnieuw te genereren en leeg te maken updates.json.
Als u de beveiligingsgegevens van nuget.org in uw eigen NuGet-server-implementatie wilt gebruiken, moet u rekening houden met ontwikkelaars die geen directe toegang hebben tot nuget.org. Zie onze implementatiehandleiding voor meer informatie.
Versioning
De volgende @type waarden worden gebruikt:
| @type waarde | Notes |
|---|---|
| VulnerabilityInfo/6.7.0 | De eerste release |
Vulnerability index
De index voor beveiligingsproblemen is een JSON-matrix met objecten met de volgende eigenschappen:
| Name | Type | Required | Notes |
|---|---|---|---|
| @name | string | yes | Een korte naam voor het bestand, gebruikt als cachesleutel. |
| @id | string | yes | De volledige (absolute) URL naar een gegevensbestand voor beveiligingsproblemen. |
| @updated | string | yes | Een ISO 8601-tekenreeks die de datum en tijd aangeeft waarop het bestand voor het laatst is bijgewerkt, idealiter met de UTC-tijdzone. |
| comment | string | no | Een optionele beschrijvende tekenreeks. |
De volgende beperkingen zijn van toepassing:
- De index moet een matrix van objecten zijn met tussen 1 en 16 items.
Als de server geen gegevens over beveiligingsproblemen bevat (nul pagina's), moet u de
VulnerabilityInforesource verwijderen uit deServiceIndex. -
@namemoet uniek zijn binnen de index, moet tussen de 1 en 32 tekens lang zijn en mag alleen de tekensAgebruiken voorZ,atotz,0aan9,-of_. -
@idmoet een absolute URL zijn, niet een relatieve URL.
Vulnerability page
Paginabestanden met beveiligingsproblemen zijn een JSON-object dat wordt gebruikt als een woordenlijst. Eigenschapssleutels zijn de kleine pakket-id en eigenschapswaarden zijn een matrix van het volgende object met de volgende eigenschappen:
| Name | Type | Required | Notes |
|---|---|---|---|
| severity | integer | yes | 0 betekent laag, 1 gemiddelde, 2 betekent hoog, 3 betekent kritiek. |
| url | string | yes | URL waar gebruikers meer informatie kunnen krijgen over het beveiligingsprobleem. |
| versions | string | yes | Het versiebereik dat kwetsbaar is, met behulp van de syntaxis van het versiebereik van NuGet. |
Pakket-id's (de sleutels van het hoofdobject) moeten worden verlaagd met String.ToLowerInvariant.
De lijst met bekende beveiligingsproblemen voor een pakket moet worden gesorteerd in aflopende volgorde van de maximale versie van het versiebereik, gevolgd door aflopende versie van de minimale versie, gevolgd door de oplopende volgorde van de URL. Bereiken met min- of maximumversies (niet-gebonden) in een versiebereik moeten worden gesorteerd op niet-null-versies (gebonden).
Een lege pagina, een pagina die geen bekende beveiligingsproblemen biedt, moet een lege JSON-matrix ([]) zijn.
Samples
Hier volgt een voorbeeld van een index voor beveiligingsproblemen:
[
{
"@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."
}
]
Hier volgt een voorbeeld van een gegevensbestand voor beveiligingsproblemen:
{
"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)"
}
]
}