Back to Gitlabhq

API Vulnerabilities

doc-locale/fr-fr/api/vulnerabilities.md

19.3.011.7 KB
Original Source

{{< details >}}

  • Édition : Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

{{< history >}}

{{< /history >}}

[!note] L'ancienne API Vulnerabilities a été renommée en API Vulnerability Findings et sa documentation a été déplacée vers un autre emplacement. Ce document décrit désormais la nouvelle API Vulnerabilities qui permet d'accéder aux Vulnerabilities.

Chaque appel d'API REST aux vulnérabilités doit être authentifié.

Si un utilisateur authentifié n'est pas autorisé à consulter le rapport de vulnérabilité, cette requête renvoie un code de statut 403 Forbidden.

[!warning] Cette API est en cours d'obsolescence et est considérée comme instable. Le contenu de la réponse peut être modifié ou rompu d'une release GitLab à l'autre. Utilisez plutôt l'API GraphQL. Pour plus d'informations, consultez les exemples GraphQL.

Récupérer une vulnérabilité {#retrieve-a-vulnerability}

Récupère une vulnérabilité spécifiée.

plaintext
GET /vulnerabilities/:id
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID d'une Vulnerability à récupérer
shell
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/vulnerabilities/1"

Exemple de réponse :

json
{
  "id": 1,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "opened",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "closed_by_id": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "closed_at": null
}

Confirmer une vulnérabilité {#confirm-a-vulnerability}

Confirme une vulnérabilité spécifiée. Renvoie le code de statut 304 si la vulnérabilité est déjà confirmée.

Si un utilisateur authentifié n'est pas autorisé à modifier le statut de la vulnérabilité, cette requête génère un code de statut 403.

plaintext
POST /vulnerabilities/:id/confirm
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID d'une vulnérabilité à confirmer
shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/vulnerabilities/5/confirm"

Exemple de réponse :

json
{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "confirmed",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "closed_by_id": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "closed_at": null
}

Résoudre une vulnérabilité {#resolve-a-vulnerability}

Résout une vulnérabilité spécifiée. Renvoie le code de statut 304 si la vulnérabilité est déjà résolue.

Si un utilisateur authentifié n'est pas autorisé à modifier le statut de la vulnérabilité, cette requête génère un code de statut 403.

plaintext
POST /vulnerabilities/:id/resolve
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID d'une Vulnerability à résoudre
shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/vulnerabilities/5/resolve"

Exemple de réponse :

json
{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "resolved",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "closed_by_id": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "closed_at": null
}

Rejeter une vulnérabilité {#dismiss-a-vulnerability}

Rejette une vulnérabilité spécifiée. Renvoie le code de statut 304 si la vulnérabilité est déjà rejetée.

Si un utilisateur authentifié n'est pas autorisé à modifier le statut de la vulnérabilité, cette requête génère un code de statut 403.

plaintext
POST /vulnerabilities/:id/dismiss
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID d'une vulnérabilité à rejeter
shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/vulnerabilities/5/dismiss"

Exemple de réponse :

json
{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "closed",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "closed_by_id": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "closed_at": null
}

Rétablir une vulnérabilité à l'état détecté {#revert-a-vulnerability-to-the-detected-state}

Rétablit une vulnérabilité spécifiée à l'état détecté. Renvoie le code de statut 304 si la vulnérabilité est déjà dans l'état détecté.

Si un utilisateur authentifié n'est pas autorisé à modifier le statut de la vulnérabilité, cette requête génère un code de statut 403.

plaintext
POST /vulnerabilities/:id/revert
AttributTypeObligatoireDescription
identier ou chaîneouiL'ID d'une vulnérabilité à rétablir à l'état détecté
shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/vulnerabilities/5/revert"

Exemple de réponse :

json
{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "detected",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "closed_by_id": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "closed_at": null
}

Remplacer l'API REST Vulnerability par GraphQL {#replace-vulnerability-rest-api-with-graphql}

Pour vous préparer à la prochaine obsolescence du point de terminaison de l'API REST Vulnerability, utilisez les exemples ci-dessous pour effectuer les opérations équivalentes avec l'API GraphQL.

GraphQL - Vulnérabilité unique {#graphql---single-vulnerability}

Utilisez Query.vulnerability.

graphql
{
  vulnerability(id: "gid://gitlab/Vulnerability/20345379") {
    title
    description
    state
    severity
    reportType
    project {
      id
      name
      fullPath
    }
    detectedAt
    confirmedAt
    resolvedAt
    resolvedBy {
      id
      username
    }
  }
}

Exemple de réponse :

json
{
  "data": {
    "vulnerability": {
      "title": "Improper Input Validation in railties",
      "description": "A remote code execution vulnerability in development mode Rails beta3 can allow an attacker to guess the automatically generated development mode secret token. This secret token can be used in combination with other Rails internals to escalate to a remote code execution exploit.",
      "state": "RESOLVED",
      "severity": "CRITICAL",
      "reportType": "DEPENDENCY_SCANNING",
      "project": {
        "id": "gid://gitlab/Project/6102100",
        "name": "security-reports",
        "fullPath": "gitlab-examples/security/security-reports"
      },
      "detectedAt": "2021-10-14T03:13:41Z",
      "confirmedAt": "2021-12-14T01:45:56Z",
      "resolvedAt": "2021-12-14T01:45:59Z",
      "resolvedBy": {
        "id": "gid://gitlab/User/480804",
        "username": "thiagocsf"
      }
    }
  }
}

GraphQL - Confirmer une vulnérabilité {#graphql---confirm-vulnerability}

Utilisez Mutation.vulnerabilityConfirm.

graphql
mutation {
  vulnerabilityConfirm(input: { id: "gid://gitlab/Vulnerability/23577695"}) {
    vulnerability {
      state
    }
    errors
  }
}

Exemple de réponse :

json
{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "CONFIRMED"
      },
      "errors": []
    }
  }
}

GraphQL - Résoudre une vulnérabilité {#graphql---resolve-vulnerability}

Utilisez Mutation.vulnerabilityResolve.

graphql
mutation {
  vulnerabilityResolve(input: { id: "gid://gitlab/Vulnerability/23577695"}) {
    vulnerability {
      state
    }
    errors
  }
}

Exemple de réponse :

json
{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "RESOLVED"
      },
      "errors": []
    }
  }
}

GraphQL - Rejeter une vulnérabilité {#graphql---dismiss-vulnerability}

Utilisez Mutation.vulnerabilityDismiss.

graphql
mutation {
  vulnerabilityDismiss(input: { id: "gid://gitlab/Vulnerability/23577695"}) {
    vulnerability {
      state
    }
    errors
  }
}

Exemple de réponse :

json
{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "DISMISSED"
      },
      "errors": []
    }
  }
}

GraphQL - Rétablir une vulnérabilité à l'état détecté {#graphql---revert-vulnerability-to-the-detected-state}

Utilisez Mutation.vulnerabilityRevertToDetected.

graphql
mutation {
  vulnerabilityRevertToDetected(input: { id: "gid://gitlab/Vulnerability/20345379"}) {
    vulnerability {
      state
    }
    errors
  }
}

Exemple de réponse :

json
{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "DETECTED"
      },
      "errors": []
    }
  }
}