Zafiyet.live Keşfet. Değerlendir. Düzelt. Doğrula.
  • Son 7 gün

CVE-2026-98952

Linux çekirdeğinde PFCP oturum başlığı okunmadan önce doğrusal bellekte olduğu doğrulanmıyor

Linux

Yüksek 7,3 CVSS 3.1
Yayımlandı
Güncellendi
24 Eki 2026
Açık yaşı
5 gün
Kaydı açan
Linux

ÖzetTürkçe

Linux çekirdeğinde pfcp_encap_recv yalnızca UDP başlığının ve 4 baytlık PFCP başlığının doğrusal bellek alanında olduğunu garanti eder. S bayrağı ayarlandığında pfcp_session_recv fonksiyonu, bundan sonra gelen ve pskb_may_pull kontrolü kapsamında olmayan 8 baytlık SEID alanını okur. Bu nedenle kısa bir PFCP paketinde S bayrağı ayarlıysa ya da oturum başlığı bir parçada (fragment) bulunuyorsa, pfcp_session_recv paket verisinin sonunun ötesini okur ve bulduğu değer, flower'ın sınıflandırma yaptığı tünel meta verisine kaydedilir. Düzeltmede SEID okunmadan önce SEID'in sonuna kadar veri çekilir ve bu alanı içerecek kadar kısa paketler düşürülür. pskb_may_pull skb başlığını yeniden tahsis edebileceği için başlık işaretçisi sonradan yeniden yüklenir. Yapı paketli olmadığından, struct pfcphdr_session boyutu yerine offsetofend kullanılır; çünkü __be64 üyesinin hizalaması nedeniyle bu yapının boyutu 16 bayttır, oysa kablo üzerindeki başlık yalnızca 12 bayttır ve geçerli oturum mesajları yanlışlıkla düşürülürdü. Etkilenen sürüm: 6.10 (= 6.10). Düzeltilmiş sürümler: 6.10'dan önceki sürümler etkilenmez; 6.12.113, 6.18.57 ve 7.2.11 ve sonrası etkilenmez. CVSS 3.1 puanı 7.3 (YÜKSEK), vektör: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L.

Kaynaktaki açıklama (İngilizce)

In the Linux kernel, the following vulnerability has been resolved:

pfcp: make sure the SEID is linear before reading it

pfcp_encap_recv() only makes sure that the UDP header and the 4 byte
PFCP header are in the linear area. When the S flag is set,
pfcp_session_recv() then reads the 8 byte SEID that follows, which is
not covered by the pskb_may_pull() check.

A short PFCP packet with the S flag set, or one whose session header
lies in a fragment, therefore makes pfcp_session_recv() read beyond the
end of the packet data, and whatever it finds there is stored in the
tunnel metadata that flower later classifies on.

Pull up to the end of the SEID before reading it, and drop packets
that are too short to contain it. Reload the header pointer afterwards
since pskb_may_pull() may reallocate the skb head.

Use offsetofend() rather than sizeof(struct pfcphdr_session): the
structure is not packed, so its size is 16 bytes because of the
alignment of the __be64 member, while the header on the wire is only 12
bytes, and valid session messages would be dropped.

Bu açığın açıklamasını Türkçeye çevirdik. Adım adım çözüm önerilerini kritik ve yeni açıklar için hazırlıyoruz; düzeltilmiş sürüm aşağıdaki tabloda, ayrıntılar üreticinin duyurusunda.

Etkilenen sürümler1 yazılım

YazılımEtkilenenDüzeltildiği sürüm
Linux 6.10 –
< 6.10 Etkilenmiyor –
≥ 6.12.113 Etkilenmiyor –
≥ 6.18.57 Etkilenmiyor –
≥ 7.2.11 Etkilenmiyor –

Kaynaklar6 kaynak

Kayıt geçmişi

  1. Yayımlandı

İlgili açıklar

Türkçe metin, resmi kayıtlardaki bilgilerle yapay zekâ yardımıyla yazıldı ve yayından önce otomatik kontrollerden geçti. Bir değişikliği uygulamadan önce üreticinin duyurusuna mutlaka bakın.