CVE-2023-53778 in Linuxinformation

Résumé

par VulDB • 26/06/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

accel/qaic : Nettoyage de la vérification des dépassements entiers dans map_user_pages()

La fonction encode_dma() effectue certaines validations sur in_trans->size, mais il serait plus clair de déplacer ces contrôles vers find_and_map_user_pages().

encode_dma() comportait deux vérifications :

if (in_trans->addr + in_trans->size < in_trans->addr || !in_trans->size) return -EINVAL;

La variable in_trans->addr est l'adresse de départ. La variable in_trans->size représente la taille totale du transfert. Le transfert peut se produire par parties, et resources->xferred_dma_size suit le nombre d'octets déjà transférés.

Ce patch introduit une nouvelle variable « remaining » qui représente la quantité que nous souhaitons transférer (in_trans->size) moins la quantité déjà transférée (resources->xferred_dma_size).

J'ai modifié la vérification de l'égalité à zéro pour in_trans->size afin de vérifier si in_trans->size est inférieur à resources->xferred_dma_size. Si nous avons déjà transféré plus d'octets que ne le permet in_trans->size, il reste un nombre négatif d'octets à transférer, ce qui n'a pas de sens. S'il reste zéro octet à copier, retournez simplement succès.

La vérification dans encode_dma() s'assurait qu'un dépassement (« addr + size ») ne pouvait pas se produire et devrait fonctionner en l'absence de bug du pilote, mais il est plus facile d'effectuer ce contrôle par parties. Vérifiez d'abord que « in_trans->addr + resources->xferred_dma_size » est sûr. Ensuite, vérifiez que « xfer_start_addr + remaining » est sûr.

Ma dernière préoccupation concernait le fait de manipuler des valeurs u64 alors que sur les systèmes 32 bits, la fonction kmalloc() tronque les tailles à 32 bits. J'ai donc calculé « total = in_trans->size + offset_in_page(xfer_start_addr); » et retourné -EINVAL si ce résultat était >= SIZE_MAX. Cela n'affectera pas les systèmes 64 bits.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Réserver

09/12/2025

Divulgation

09/12/2025

Modérer

accepté

Entrée

VDB-335002

CPE

prêt

EPSS

0.00162

KEV

non

Activités

faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!