Podatność race condition w podsystemie TLS jądra Linux (funkcja tls_sw_cancel_work_tx()) umożliwia odwołanie do już zwolnionego obiektu TLS przez wątek roboczy tx_work_handler(). Błąd ma ocenę CVSS 9.8 i może prowadzić do poważnego naruszenia integralności oraz dostępności systemu.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: tls: Fix race condition in tls_sw_cancel_work_tx() This issue was discovered during a code audit. After cancel_delayed_work_sync() is called from tls_sk_proto_close(), tx_work_handler() can still be scheduled from paths such as the Delayed ACK handler or ksoftirqd. As a result, the tx_work_handler() worker may dereference a freed TLS object. The following is a simple race scenario: cpu0 cpu1 tls_sk_proto_close() tls_sw_cancel_work_tx() tls_write_space() tls_sw_write_space() if (!test_and_set_bit(BIT_TX_SCHEDULED, &tx_ctx->tx_bitmask)) set_bit(BIT_TX_SCHEDULED, &ctx->tx_bitmask); cancel_delayed_work_sync(&ctx->tx_work.work); schedule_delayed_work(&tx_ctx->tx_work.work, 0); To prevent this race condition, cancel_delayed_work_sync() is replaced with disable_delayed_work_sync().
Po wywołaniu cancel_delayed_work_sync() w ramach tls_sk_proto_close() istnieje okno czasowe, w którym tx_work_handler() może zostać ponownie zaplanowany przez inne ścieżki kodu — np. przez obsługę Delayed ACK lub ksoftirqd. W scenariuszu wyścigu: wątek cpu1 sprawdza bit BIT_TX_SCHEDULED i planuje nowe zadanie opóźnione (schedule_delayed_work()) już po tym, jak cpu0 wywołał cancel_delayed_work_sync() i uznał operację za zakończoną. W rezultacie tx_work_handler() może wykonać się na już zwolnionym obiekcie TLS, co prowadzi do użycia zwolnionej pamięci (use-after-free). Poprawka zastępuje cancel_delayed_work_sync() wywołaniem disable_delayed_work_sync(), które zapobiega ponownemu zaplanowaniu zadania.
Atakujący lub złośliwy lokalny użytkownik mogący wywołać odpowiednie ścieżki kodu może doprowadzić do naruszenia poufności, integralności i dostępności systemu — potencjalnie do eskalacji uprawnień lub awarii (kernel panic) poprzez wykorzystanie stanu use-after-free.
Należy zastosować patche dostępne w repozytorium stable jądra Linux zgodnie z referencjami: commity 17153f154f80, 7bb09315f93d, 854cd32bc74f oraz a5de36d6cee7. Zalecana jest aktualizacja do wersji jądra zawierającej poprawkę jak najszybciej.
Jądro Linux zawierające podatną implementację podsystemu TLS (tls_sw_cancel_work_tx()); konkretne wersje wskazane w referencjach producenta (patche dostępne w repozytorium stable kernel).
Podatność została odkryta podczas audytu kodu (code audit) — informacja pochodzi bezpośrednio z opisu CVE.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux5.37.05.3.1 – 6.12.75 (bez)6.13 – 6.18.16 (bez)6.19 – 6.19.6 (bez)
Powiązane podatności
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
IBM Aspera Faspex 4.4.2 Patch Level 1 and earlier could allow a remote attacker to execute arbitrary code on t...
VMware Workspace ONE Access and Identity Manager contain a remote code execution vulnerability due to server-s...
VMware Workspace One Access, Access Connector, Identity Manager, and Identity Manager Connector address have a...