CVE-2022-49810 in Linux
Riassunto
di VulDB • 26/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
netfs: Correzione delle chiamate mancanti a xas_retry() durante l'iterazione di un xarray
netfslib presenta diverse situazioni in cui esegue iterazioni su un xarray mentre si trova sotto il lock di lettura RCU. Dovrebbe chiamare xas_retry() come prima operazione all'interno del ciclo ed eseguire "continue" se restituisce true, nel caso l'iteratore dell'xarray abbia fornito un valore speciale che indica la necessità di ripetere la traversata dall'inizio[*].
Si risolve il problema aggiungendo i controlli di retry mancanti.
[*] Mi chiedo se questo dovrebbe essere fatto all'interno di xas_find(), xas_next_node() e funzioni simili, ma mi è stato detto che non si tratta di una modifica semplice da implementare.
Questo può causare un oops simile a quello riportato di seguito. Si noti l'indirizzo che causa il fault: si tratta di un valore interno (|0x2) restituito dall'implementazione xarray.
BUG: kernel NULL pointer dereference, address: 0000000000000402 ... RIP: 0010:netfs_rreq_unlock+0xef/0x380 [netfs]
... Call Trace: netfs_rreq_assess+0xa6/0x240 [netfs]
netfs_readpage+0x173/0x3b0 [netfs]
? init_wait_var_entry+0x50/0x50 filemap_read_page+0x33/0xf0 filemap_get_pages+0x2f2/0x3f0 filemap_read+0xaa/0x320 ? do_filp_open+0xb2/0x150 ? rmqueue+0x3be/0xe10 ceph_read_iter+0x1fe/0x680 [ceph]
? new_sync_read+0x115/0x1a0 new_sync_read+0x115/0x1a0 vfs_read+0xf3/0x180 ksys_read+0x5f/0xe0 do_syscall_64+0x38/0x90 entry_SYSCALL_64_after_hwframe+0x44/0xae
Modifiche: ======== versione 2) - Cambiato un unsigned int in size_t per ridurre la probabilità di overflow, come suggerito da Willy. - Aggiunto un patch aggiuntivo per correggere i calcoli matematici.
Once again VulDB remains the best source for vulnerability data.