Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: ovpn: fix use after free in unlock_ovpn() unlock_ovpn() iterates over the release_list using llist_for_each_entry() and drops the peer reference inside the loop body via ovpn_peer_put(). If this drops the last reference, the peer is eventually freed. However, llist_for_each_entry() reads peer->release_entry.next in the loop advance expression, which runs after the body. By that time the peer may have already been freed, resulting in a use after free when advancing to the next list entry. Fix this by using llist_for_each_entry_safe(), which caches the next pointer before executing the loop body.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 80747caef33d77f5c1b3d24644e6d7dae69066b5 before 5b96227c0e8b212b74838424c929fc889aedb555; affected 80747caef33d77f5c1b3d24644e6d7dae69066b5 before 4cdb209f12a89c5faf9be0c45edb90ccdf65db0c; affected 80747caef33d77f5c1b3d24644e6d7dae69066b5 before e1ad6fe5db719874efa45b2caf9934552e09fc43 |
| Linux / Linux | affected 6.16; unaffected 0 before 6.16; unaffected 6.18.42 through 6.18.*; unaffected 7.1.6 through 7.1.*; unaffected 7.2 through * |
CWE
No CWE identifiers supplied.