cve-2021-47131
Vulnerability from cvelistv5
Published
2024-03-15 20:14
Modified
2024-11-04 12:00
Severity ?
Summary
net/tls: Fix use-after-free after the TLS device goes down and up
Impacted products
LinuxLinux
LinuxLinux
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2021-47131",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-03-19T15:23:46.487605Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-04T17:14:12.171Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:24:39.881Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/f1d4184f128dede82a59a841658ed40d4e6d3aa2"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/0f1e6fe66977a864fe850522316f713d7b926fd9"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/net/tls.h",
            "net/tls/tls_device.c",
            "net/tls/tls_device_fallback.c",
            "net/tls/tls_main.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f1d4184f128d",
              "status": "affected",
              "version": "e8f69799810c",
              "versionType": "git"
            },
            {
              "lessThan": "0f1e6fe66977",
              "status": "affected",
              "version": "e8f69799810c",
              "versionType": "git"
            },
            {
              "lessThan": "c55dcdd435aa",
              "status": "affected",
              "version": "e8f69799810c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/net/tls.h",
            "net/tls/tls_device.c",
            "net/tls/tls_device_fallback.c",
            "net/tls/tls_main.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.18"
            },
            {
              "lessThan": "4.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.43",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.12.*",
              "status": "unaffected",
              "version": "5.12.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.13",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tls: Fix use-after-free after the TLS device goes down and up\n\nWhen a netdev with active TLS offload goes down, tls_device_down is\ncalled to stop the offload and tear down the TLS context. However, the\nsocket stays alive, and it still points to the TLS context, which is now\ndeallocated. If a netdev goes up, while the connection is still active,\nand the data flow resumes after a number of TCP retransmissions, it will\nlead to a use-after-free of the TLS context.\n\nThis commit addresses this bug by keeping the context alive until its\nnormal destruction, and implements the necessary fallbacks, so that the\nconnection can resume in software (non-offloaded) kTLS mode.\n\nOn the TX side tls_sw_fallback is used to encrypt all packets. The RX\nside already has all the necessary fallbacks, because receiving\nnon-decrypted packets is supported. The thing needed on the RX side is\nto block resync requests, which are normally produced after receiving\nnon-decrypted packets.\n\nThe necessary synchronization is implemented for a graceful teardown:\nfirst the fallbacks are deployed, then the driver resources are released\n(it used to be possible to have a tls_dev_resync after tls_dev_del).\n\nA new flag called TLS_RX_DEV_DEGRADED is added to indicate the fallback\nmode. It\u0027s used to skip the RX resync logic completely, as it becomes\nuseless, and some objects may be released (for example, resync_async,\nwhich is allocated and freed by the driver)."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2024-11-04T12:00:02.484Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f1d4184f128dede82a59a841658ed40d4e6d3aa2"
        },
        {
          "url": "https://git.kernel.org/stable/c/0f1e6fe66977a864fe850522316f713d7b926fd9"
        },
        {
          "url": "https://git.kernel.org/stable/c/c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4"
        }
      ],
      "title": "net/tls: Fix use-after-free after the TLS device goes down and up",
      "x_generator": {
        "engine": "bippy-9e1c9544281a"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47131",
    "datePublished": "2024-03-15T20:14:34.647Z",
    "dateReserved": "2024-03-04T18:12:48.840Z",
    "dateUpdated": "2024-11-04T12:00:02.484Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2021-47131\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-03-15T21:15:07.623\",\"lastModified\":\"2024-03-17T22:38:29.433\",\"vulnStatus\":\"Awaiting Analysis\",\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet/tls: Fix use-after-free after the TLS device goes down and up\\n\\nWhen a netdev with active TLS offload goes down, tls_device_down is\\ncalled to stop the offload and tear down the TLS context. However, the\\nsocket stays alive, and it still points to the TLS context, which is now\\ndeallocated. If a netdev goes up, while the connection is still active,\\nand the data flow resumes after a number of TCP retransmissions, it will\\nlead to a use-after-free of the TLS context.\\n\\nThis commit addresses this bug by keeping the context alive until its\\nnormal destruction, and implements the necessary fallbacks, so that the\\nconnection can resume in software (non-offloaded) kTLS mode.\\n\\nOn the TX side tls_sw_fallback is used to encrypt all packets. The RX\\nside already has all the necessary fallbacks, because receiving\\nnon-decrypted packets is supported. The thing needed on the RX side is\\nto block resync requests, which are normally produced after receiving\\nnon-decrypted packets.\\n\\nThe necessary synchronization is implemented for a graceful teardown:\\nfirst the fallbacks are deployed, then the driver resources are released\\n(it used to be possible to have a tls_dev_resync after tls_dev_del).\\n\\nA new flag called TLS_RX_DEV_DEGRADED is added to indicate the fallback\\nmode. It\u0027s used to skip the RX resync logic completely, as it becomes\\nuseless, and some objects may be released (for example, resync_async,\\nwhich is allocated and freed by the driver).\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net/tls: corrige el use-after-free despu\u00e9s de que el dispositivo TLS se cae y se enciende. Cuando un netdev con descarga TLS activa se cae, se llama a tls_device_down para detener la descarga y derribarlo. el contexto TLS. Sin embargo, el socket permanece activo y todav\u00eda apunta al contexto TLS, que ahora est\u00e1 desasignado. Si se activa un netdev, mientras la conexi\u00f3n a\u00fan est\u00e1 activa, y el flujo de datos se reanuda despu\u00e9s de varias retransmisiones TCP, se producir\u00e1 un use-after-free del contexto TLS. Esta commit soluciona este error manteniendo vivo el contexto hasta su destrucci\u00f3n normal e implementa las alternativas necesarias para que la conexi\u00f3n pueda reanudarse en modo kTLS de software (no descargado). En el lado TX, tls_sw_fallback se utiliza para cifrar todos los paquetes. El lado RX ya tiene todos los respaldos necesarios, porque se admite la recepci\u00f3n de paquetes no descifrados. Lo que se necesita en el lado RX es bloquear las solicitudes de resincronizaci\u00f3n, que normalmente se producen despu\u00e9s de recibir paquetes no descifrados. Se implementa la sincronizaci\u00f3n necesaria para un desmontaje elegante: primero se implementan los respaldos, luego se liberan los recursos del controlador (antes era posible tener un tls_dev_resync despu\u00e9s de tls_dev_del). Se agrega una nueva bandera llamada TLS_RX_DEV_DEGRADED para indicar el modo de reserva. Se utiliza para omitir completamente la l\u00f3gica de resincronizaci\u00f3n RX, ya que se vuelve in\u00fatil y algunos objetos pueden liberarse (por ejemplo, resync_async, que el controlador asigna y libera).\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0f1e6fe66977a864fe850522316f713d7b926fd9\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f1d4184f128dede82a59a841658ed40d4e6d3aa2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading...

Loading...

Loading...

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.