← CVE Veritabanı

CVE-2026-64564

Kritik

Teknik Veri (Otomatik)

CVSS Skoru
9.8
EPSS
0.5%
CWE
—
KEV Durumu
Hayır

Yayım tarihi: 4 Ağustos 2026

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: sctp: DEL-IP işleminde ASCONF'ın kendi taşıma katmanını serbest bırakma sctp_process_asconf(), işlenen ASCONF parçasının taşıma katmanını asconf->transport (== chunk->transport, sctp_rcv() içinde bir kez ayarlanır) içinde önbelleğe alır. __sctp_rcv_asconf_lookup() aracılığıyla bulunan bir ASCONF için önbelleğe alınan taşıma katmanı, Address Parameter ile eşleşir ve bu, paketin kaynak adresi olmak zorunda değildir. sctp_process_asconf_param(), paket kaynak adresi için bir DEL-IP'i (ADDIP D8, SCTP_ERROR_DEL_SRC_IP) reddeder, ancak asconf->transport'ı korumak için hiçbir şey yoktur. Bu nedenle, tek bir ASCONF aşağıdaki sırayla taşınabilir: [Address Parameter L] [DEL-IP L] [DEL-IP 0.0.0.0] burada L, kaynak adresinden farklıdır. L için DEL-IP, D8 kontrolünden geçer ve sctp_assoc_rm_peer() işlevini asconf->transport hala işaret ettiği taşıma katmanında çağırır ve onu serbest bırakır (RCU ertelenir). Ardından gelen joker DEL-IP, sctp_assoc_set_primary() ve sctp_assoc_del_nonprimary_peers() işlevlerinde artık serbest bırakılan asconf->transport'ı yeniden kullanır: set_primary(), serbest bırakılan taşıma katmanını (->ipaddr, ->state) işaret eder ve asoc->peer.primary_path / active_path'e asılı bir işaretçi yerleştirir ve del_nonprimary_peers(), artık listede olmayan işaretçiyi korur, gerçek tüm taşıma katmanlarını kaldırır ve ilişkiyi taşıma_count 0 ve primary_path/active_path'in serbest bırakılan belleğe işaret ettiği şekilde bırakır. ASCONF işlenirken karşılaşılan taşıma katmanına yönelik bir DEL-IP'yi reddederek, mevcut kaynak adresi korumasını yansıtarak, joker dalın asla serbest bırakılan bir taşıma katmanını yeniden kullanmasını önleyin.

Orijinal açıklama (İngilizce)

In the Linux kernel, the following vulnerability has been resolved: sctp: don't free the ASCONF's own transport in DEL-IP processing sctp_process_asconf() caches the transport the ASCONF chunk is processed against in asconf->transport (== chunk->transport, set once in sctp_rcv()). For an ASCONF located through its Address Parameter by __sctp_rcv_asconf_lookup(), that cached transport corresponds to the Address Parameter, which need not be the packet's source address. sctp_process_asconf_param() rejects a DEL-IP for the packet source address (ADDIP D8, SCTP_ERROR_DEL_SRC_IP), but nothing protects asconf->transport. A single ASCONF can therefore carry, in order: [Address Parameter L] [DEL-IP L] [DEL-IP 0.0.0.0] where L differs from the source. The DEL-IP for L passes the D8 check and calls sctp_assoc_rm_peer() on the transport that asconf->transport still points at, freeing it (RCU-deferred). The following wildcard DEL-IP then reuses the now-dangling asconf->transport in sctp_assoc_set_primary() and sctp_assoc_del_nonprimary_peers(): set_primary() dereferences the freed transport (->ipaddr, ->state) and plants the dangling pointer into asoc->peer.primary_path / active_path, and del_nonprimary_peers(), keeping only the pointer that is no longer on the list, removes every real transport, leaving the association with a transport_count of 0 and primary_path/active_path pointing at freed memory. Reject a DEL-IP that targets the transport the ASCONF is being processed against, mirroring the existing source-address guard, so the wildcard branch can never reuse a freed transport.

Bu CVE için henüz editoryal inceleme yapılmadı. Sadece otomatik teknik veri gösteriliyor.