Podatności Linux kernel
10 419 znanych podatności CVE w Linux kernel, przetłumaczonych i ocenionych.
- CVE-2026-98666Niskie ryzyko· EPSS 6%
W jądrze Linux w sterowniku iio: gyro: adis16136 wykryto niechronione odczyty debugfs. Operacje pliku serial_number są zakodowane ręcznie i nigdy nie wywołują debugfs_file_get(), co jest wymagane przez debugfs_create_file_unsafe(). W rezultacie debugfs_remove_recursive() nie czeka na trwający odczyt, a odłączenie zwalnia iio_dev pod nim. Należy użyć debugfs_create_file() zamiast tego.
- CVE-2026-98665Niskie ryzyko· EPSS 6%
W jądrze Linux w sterowniku iio: health: max30102 wykryto dereferencję NULL w procedurze obsługi przerwania. Przerwanie jest żądane w max30102_probe() i pozostaje włączone przez cały czas życia urządzenia, ale indio_dev->active_scan_mask jest ważny tylko gdy bufor jest włączony. Gdy przerwanie nadejdzie bez włączonego bufora, procedura obsługi dereferencjonuje NULL active_scan_mask, powodując awarię jądra. Należy wywołać max30102_fifo_count() na początku procedury obsługi i zwrócić wcześnie, chyba że zgłosi gotowość próbki FIFO.
- CVE-2026-98664Niskie ryzyko· EPSS 10%
W jądrze Linux w sterowniku iio: imu: adis16400 wykryto niechronione odczyty debugfs. Struktura adis16400_serial_number_fops jest zakodowana ręcznie i nigdy nie wywołuje debugfs_file_get(), więc debugfs_remove_recursive() nie czeka na trwający odczyt, a odłączenie zwalnia iio_dev pod nim. Poprzednia zmiana przekształciła product_id i flash_count na DEFINE_DEBUGFS_ATTRIBUTE, ale przeniosła wszystkie trzy pliki do debugfs_create_file_unsafe(). Plik serial_number wyświetla trzy rejestry i nie może być przekonwertowany bez zmiany zwracanych danych. Należy użyć debugfs_create_file().
- CVE-2026-98663Niskie ryzyko· EPSS 6%
W jądrze Linux sterownik iio: imu: adis16480 używa otwartych operacji plikowych debugfs dla firmware_revision i firmware_date, które nie wywołują debugfs_file_get() wymaganego przez debugfs_create_file_unsafe(). W efekcie debugfs_remove_recursive() nie czeka na trwający odczyt, a odłączenie urządzenia zwalnia iio_dev pod nim.
- CVE-2026-98662Niskie ryzyko· EPSS 6%
W jądrze Linux sterownik iio: light: gp2ap020a00f kolejkuje pracę przez irq_work_queue(), ale free_irq() nie opróżnia już zakolejkowanej irq_work. Po powrocie z gp2ap020a00f_remove() praca może nadal się wykonać i wywołać iio_trigger_poll() na zwolnionym data->trig, powodując use-after-free.
- CVE-2026-98661Niskie ryzyko· EPSS 6%
W jądrze Linux sterownik iio: light: rohm-bu27034 przy nieudanym odczycie czasu integracji używa kodu błędu do obliczenia czasu uśpienia, co może prowadzić do nieskończonego opóźnienia.
- CVE-2026-98660Niskie ryzyko· EPSS 10%
W jądrze Linux sterownik iio: pressure: bmp280 ma błąd dostępu poza zakresem w wyszukiwaniu częstotliwości próbkowania. Funkcja bmp280_write_sampling_frequency() indeksuje spłaszczoną tablicę jako dwuwymiarową i używa num_sampling_freq_avail jako liczby wierszy, co prowadzi do błędnego indeksowania.
- CVE-2026-98659Niskie ryzyko· EPSS 9%
W jądrze Linux sterownik iio: pressure: rohm-bm1390 ignoruje zapisany kod błędu i bezwarunkowo zwraca 0. Po zatrzymaniu pomiaru należy zwrócić zapisany kod 'ret', aby użytkownik wiedział, że odczyt się nie powiódł, a dane są nieprawidłowe.
- CVE-2026-98658Niskie ryzyko· EPSS 9%
W jądrze Linux sterownik iio: proximity: aw96103 parser firmware odczytuje długość z nagłówka binarnego i używa jej do przechodzenia przez sześciobajtowe wpisy rejestr/wartość. Obcięty obraz firmware może spowodować odczyt poza skopiowanym buforem, a wartość mniejsza niż czterobajtowe pole licznika powoduje niedomiar i bardzo dużą długość.
- CVE-2026-98657Niskie ryzyko· EPSS 6%
W jądrze Linux w sterowniku iio: proximity: pulsedlight, gdy pm_runtime_set_active() zawiedzie w probe(), następuje skok do etykiety error_unreg_buffer, która wywołuje tylko iio_triggered_buffer_cleanup() i nie wyrejestrowuje wcześniej zarejestrowanego urządzenia iio. W efekcie devm zwalnia indio_dev, ale rdzeń iio nadal ma je zarejestrowane, a węzły sysfs/chardev wskazują na zwolnioną pamięć.
- CVE-2026-98656Niskie ryzyko· EPSS 6%
W jądrze Linux funkcja iio_trigger_notify_done_atomic() odkłada wywołanie ->reenable() do trig->reenable_work w kolejce systemowej, a worker odwołuje się do triggera przez container_of(). Ponieważ nic nie anuluje tej pracy przed iio_trig_release(), która zwalnia trigger, worker może przeżyć zwolnienie i odwołać się do zwolnionej pamięci.
- CVE-2026-98655Niskie ryzyko· EPSS 8%
W jądrze Linux zdarzenia perf z exclude_kernel=1 mogą być otwierane bez dostępu do perf jądra, ale exclude_kernel nie tłumi rekordów text-poke. Każdy PERF_RECORD_TEXT_POKE jest oznaczony jako PERF_RECORD_MISC_KERNEL i zawiera surowy adres instrukcji jądra, co pozwala nieuprzywilejowanemu zadaniu ujawnić bazę tekstu jądra w czasie działania mimo KASLR.
- CVE-2026-98653Niskie ryzyko· EPSS 4%
W jądrze Linux w KVM: s390, w pewnych okolicznościach strona pamięci zagnieżdżonego gościa, która jest shadowowana, może nie być obecna w gmap gościa nadrzędnego. dat_entry_walk() nie znajdzie wtedy żadnego wpisu liścia i zwróci -ENOENT, który błędnie zostanie przekazany do przestrzeni użytkownika.
- CVE-2026-98652Niskie ryzyko· EPSS 4%
W jądrze Linux w KVM: s390 funkcja kvm_s390_set_irq_state() wykonuje operację Store status bez wymaganego kvm->srcu lub blokady slotów, w przeciwieństwie do kvm_s390_inject_vcpu(). Brak tej synchronizacji może prowadzić do problemów ze współbieżnością.
- CVE-2026-98651Niskie ryzyko· EPSS 4%
W jądrze Linux w KVM: s390 funkcja dat_cond_set_storage_key() może otrzymać NULL jako oldkey od niektórych wywołujących. Wywołanie page_cond_set_storage_key() spowoduje wtedy dereferencję wskaźnika NULL.
- CVE-2026-98650Niskie ryzyko· EPSS 4%
W jądrze Linux w KVM: s390 istnieje okno wyścigu między dat_entry_walk() a large_crste_to_phys() w funkcjach dat_cond_set_storage_key() i dat_set_storage_key(): duża strona może zostać równolegle rozdzielona, a large_crste_to_phys() może zostać wywołane z crste, które nie wskazuje dużej strony, prowadząc do awarii. Podobne problemy występowały w dat_get_storage_key() i dat_reset_reference_bit().
- CVE-2026-98649Niskie ryzyko· EPSS 8%
W jądrze Linux w KVM: s390 funkcja _destroy_pages_crste() odczytuje crste bez zabezpieczenia przed wielokrotnym dereferencjonowaniem wskaźnika, co może prowadzić do wyścigu.
- CVE-2026-98648Niskie ryzyko· EPSS 5%
W jądrze Linux w s390/uv, gdy system ma więcej niż 85 sekretów, tablica struktur uv_secret_list przechowuje tylko do 85 elementów na stronę, co powoduje odczyt poza granicami w find_secret_in_page, jeśli docelowy sekret znajduje się na następnej stronie lub nie jest przechowywany.
- CVE-2026-98647Niskie ryzyko· EPSS 6%
W jądrze Linux w funkcji btf_struct_walk() występuje błąd dzielenia przez zero. Gdy dostęp wykracza poza strukturę, której ostatnim elementem jest tablica elastyczna, a typ elementu ma rozmiar zero (np. pusta struktura), dochodzi do dzielenia przez zero podczas ładowania programu BPF. Wymaga to wskaźnika PTR_TO_BTF_ID, który nie jest MEM_ALLOC, np. odczytu lokalnego kptr przechowanego w mapie z programu uśpionego.
- CVE-2026-98646Niskie ryzyko· EPSS 6%
W jądrze Linux występuje błąd w funkcji inet_csk_listen_stop(), która wywołuje cond_resched() w kontekście BPF (pod rcu_read_lock). Gdy bpf_sock_destroy() niszczy gniazdo nasłuchujące z dziećmi w kolejce akceptacji, dochodzi do nieprawidłowego uśpienia i ostrzeżenia jądra. Problem dotyczy ścieżki obsługi gniazd nasłuchujących, która nie została objęta wcześniejszym zabezpieczeniem has_current_bpf_ctx().
- CVE-2026-98645Niskie ryzyko· EPSS 8%
W jądrze Linux w sterowniku HID winwing występuje błąd use-after-free podczas niszczenia force feedback. Funkcja winwing_init_ff() przekazuje prywatne dane sterownika zaalokowane przez devm_kzalloc() jako kontekst efektu do input_ff_create_memless(), a rdzeń force feedback zwalnia ten wskaźnik przez kfree(), co jest nieprawidłowym zwolnieniem i prowadzi do podwójnego zwolnienia oraz uszkodzenia pamięci slab. Problem występuje przy odłączaniu, rmmod, hot-unplug oraz zawieszeniu systemu.
- CVE-2026-98644Niskie ryzyko· EPSS 10%
W jądrze Linux naprawiono podatność w funkcji __htab_map_lookup_and_delete_batch() dotyczącej map BPF typu hash. Funkcja nie zawierała punktu przeplanowania, więc pojedyncze wywołanie BPF_MAP_LOOKUP_BATCH mogło przeglądać całą mapę bez oddania procesora, co na dużych mapach (np. 16 mln kubełków) prowadziło do soft lockup i zatrzymania CPU na ponad 77 sekund.
- CVE-2026-98643Niskie ryzyko· EPSS 11%
W jądrze Linux naprawiono podatność w programach BPF typu sock_ops, które odczytują pole rtt_min. Na ścieżce tcp_conn_request() wskaźnik sock_ops->sk wskazuje na request_sock (niepełny socket), a kod rzutuje go na tcp_sock i odczytuje rtt_min poza granicami struktury, ujawniając sąsiednie dane z pamięci jądra.
- CVE-2026-98642Niskie ryzyko· EPSS 6%
W jądrze Linux występuje podatność use-after-free (UAF) w mechanizmie alokacji pamięci BPF (alloc_bulk). Problem wynika z braku synchronizacji między równoległym przetwarzaniem list ttrace (waiting_for_gp_ttrace oraz free_by_rcu_ttrace) a wywołaniami zwalniającymi pamięć po zakończeniu okresu RCU Tasks Trace. Naprawa polega na wprowadzeniu surowego spinlocka synchronizującego dostęp do tych list.
- CVE-2026-98641Niskie ryzyko· EPSS 6%
W jądrze Linux w architekturze arm64 wykryto błąd w obsłudze BPF, dotyczący programów pełniących rolę granicy wyjątków (exception callback). Prolog takiego callbacku nie ustawiał wskaźnika ramki (BPF_REG_FP), przez co rejestr x25 zachowywał wartość z podprogramu, który wywołał bpf_throw(). W efekcie helper mógł otrzymać adres zmiennej lokalnej wskazujący na martwą ramkę stosu i nadpisać własny adres powrotu, co prowadzi do paniki jądra.
- CVE-2026-98640Niskie ryzyko· EPSS 10%
W jądrze Linux sterownik amd_sfh mapuje PCI BAR 2 i uzyskuje dostęp do rejestrów MMIO pod offsetami do 0x10958, nie sprawdzając wcześniej, czy rozmiar BAR jest wystarczający. Jeśli sterownik zostanie powiązany z urządzeniem o mniejszym BAR 2, dochodzi do dostępu poza zakresem pamięci i błędu strony (page fault) podczas funkcji probe.
- CVE-2026-98639Niskie ryzyko· EPSS 5%
W jądrze Linux w KVM dla architektury RISC-V występuje błąd kolejności aktualizacji wpisu NACL hfence. Funkcja __kvm_riscv_nacl_hfence() zapisuje słowo Config przed słowami Page_Number i Page_Count, co jest niezgodne z wymogami specyfikacji SBI v3.0 i może prowadzić do obserwacji wpisu oczekującego ze starymi wartościami pnum/pcount, skutkując nieprawidłowymi zakresami opróżniania TLB.
- CVE-2026-98638Niskie ryzyko· EPSS 5%
W jądrze Linux w KVM dla architektury arm64 funkcja pkvm_vcpu_init_sve() ogranicza tylko górną granicę sve_max_vl dostarczonego przez hosta, przez co nieprawidłowa długość wektora trafia do sve_state_size_from_vl() i wywołuje WARN_ON(), co jest fatalne na poziomie EL2. Istniejący test !sve_state_size odrzuca taką długość, ale dopiero po wykonaniu makra.
- CVE-2026-98637Niskie ryzyko· EPSS 5%
W jądrze Linux w funkcji pkvm_vcpu_init_sve() występuje błąd, który przy niepowodzeniu inicjalizacji SVE dla vCPU czyści flagę KVM_ARM_VCPU_SVE, ale pozostawia ustawioną flagę KVM_ARCH_FLAG_GUEST_HAS_SVE. Kolejne vCPU w tej samej maszynie wirtualnej pomijają wtedy konfigurację SVE i rejestrują się z pustym stanem sve_state, co prowadzi do błędu przy pierwszym dostępie gościa do rejestrów FP.
- CVE-2026-98636Niskie ryzyko· EPSS 7%
W systemie plików squashfs w jądrze Linux brakuje sprawdzenia zakresu rozmiaru słownika, co przy nietypowym obrazie (flaga COMP_OPTS ustawiona, ale rozmiar słownika równy 0) powoduje przesunięcie poza zakres (shift-out-of-bounds). Błąd występuje w funkcji squashfs_xz_comp_opts(), gdzie wykładnik przesunięcia wynosi -1.
- CVE-2026-98635Niskie ryzyko· EPSS 6%
W podsystemie blokowym jądra Linux funkcja blk_revalidate_disk_zones() oblicza rozmiar tablicy zones_cond na podstawie pojemności dysku i rozmiaru strefy, ale indeks używany przez blk_revalidate_zone_cond() pochodzi z urządzenia i nie jest sprawdzany względem rozmiaru tablicy. Urządzenie zgłaszające więcej stref niż mieści się w tablicy powoduje zapis poza zakresem w blk_zone_set_cond().
- CVE-2026-98634Niskie ryzyko· EPSS 6%
W podsystemie SCSI jądra Linux funkcja sd_zbc_read_zones() oblicza liczbę stref w arytmetyce 64-bitowej i zapisuje wynik w polu unsigned int nr_zones struktury zoned_disk_info, co po cichu obcina wartości przekraczające 32 bity. Ponadto sd_zbc_report_zones() zlicza strefy za pomocą signed int zone_idx, co powoduje przepełnienie powyżej INT_MAX.
- CVE-2026-98633Niskie ryzyko· EPSS 5%
W sterowniku Bluetooth btnxpuart jądra Linux, gdy CONFIG_DEV_COREDUMP=n, funkcja hci_devcd_append() zwraca -EOPNOTSUPP bez zwalniania przekazanego skb, co powoduje wyciek sklonowanego skb i uniemożliwia wywołanie nxp_set_ind_reset() w celu odzyskania.
- CVE-2026-98632Niskie ryzyko· EPSS 6%
W podsystemie Bluetooth mgmt jądra Linux funkcja send_cancel() usuwa oczekujące obiekty mesh_tx z listy hdev->mesh_pending i zwalnia je przez mesh_send_complete(), ale jeśli transmisja mesh została już zakolejkowana przez mesh_next(), wpis zachowuje surowy wskaźnik do mesh_tx. Późniejsze przetwarzanie przez hci_cmd_sync_work powoduje użycie zwolnionego wskaźnika (use-after-free).
- CVE-2026-98631Niskie ryzyko· EPSS 11%
W podsystemie XDP socket jądra Linux funkcja xsk_map_gen_lookup() ładuje 32-bitowy klucz i porównuje go z max_entries za pomocą BPF_JMP_IMM. Immediate w BPF są rozszerzane znakowo do 64 bitów, więc wartość max_entries równa 0x80000000 lub większa staje się progiem większym niż każdy zerowo rozszerzony 32-bitowy klucz, co pozwala na pominięcie sprawdzenia zakresu i odczyt poza tablicą xsk_map[].
- CVE-2026-98630Niskie ryzyko· EPSS 9%
W sterowniku Ethernet fbnic jądra Linux wskaźnik puli stron ładunku zawiera wskaźnik błędu, gdy alokacja się nie powiedzie. Ścieżka czyszczenia przekazuje ten wskaźnik błędu do page_pool_destroy() zamiast niszczyć pulę stron nagłówka, co może spowodować dereferencję wskaźnika błędu i pozostawienie puli stron nagłówka zaalokowanej.
- CVE-2026-98628Niskie ryzyko· EPSS 8%
W weryfikatorze BPF jądra Linux po zakończeniu do_check() uruchamiane są passy przepisywania instrukcji, które modyfikują lub usuwają po jednej instrukcji, co powoduje kwadratowy koszt obliczeniowy. Uprzywilejowany program ładujący może przesłać 131072 bezwarunkowych skoków przez zero, co zajmuje dużo czasu w bpf_opt_remove_nops(), a brak sprawdzania sygnałów uniemożliwia przerwanie zadania przez SIGKILL.
- CVE-2026-98627Niskie ryzyko· EPSS 4%
W jądrze Linux w funkcji regsafe() w podsystemie BPF nie zachowywano przesunięcia (displacement) między rejestrami współdzielącymi ten sam identyfikator wskaźnika pakietu. Ponieważ zakres pakietu jest współdzielony przez ID, sprawdzenie granic na jednym elemencie klasy aktualizuje wszystkie elementy, co może pozwolić na dostęp poza zakresem pakietu na ścieżce po przycięciu (pruned path).
- CVE-2026-98626Niskie ryzyko· EPSS 10%
W jądrze Linux funkcja bpf_core_patch_insn() zatruwała (poison) cel relokacji CO-RE przed sprawdzeniem, czy instrukcja jest prawidłowym celem relokacji. Złośliwe metadane mogły zastąpić skoki, wywołania, wyjścia, arytmetykę źródła rejestru lub ładowania nie-natychmiastowe zamiast zgłosić błąd na etapie relokacji.
- CVE-2026-98625Niskie ryzyko· EPSS 11%
W jądrze Linux w podsystemie netfilter flowtable funkcja flow_offload_work_del() ustawiała flagę NF_FLOW_HW_DEAD przed wyczyszczeniem NF_FLOW_HW_PENDING przez procedurę roboczą. Równoległe odśmiecanie (garbage collection) mogło zwolnić przepływ przez RCU, zanim worker zakończył pracę, powodując use-after-free.
- CVE-2026-98624Niskie ryzyko· EPSS 7%
W jądrze Linux w module nfnetlink_queue brakowało serializacji między notyfikatorem zwolnienia (release notifier) a funkcją konfiguracji netlink. Równoległe wywołanie close() mogło wywołać funkcję release podczas gdy inny wątek przetwarzał żądanie UNBIND dla tego samego portid, powodując błąd general protection fault w __instance_destroy.
- CVE-2026-98623Niskie ryzyko· EPSS 7%
W jądrze Linux w sterowniku drm/nouveau/clk funkcja nvkm_clk_ustate_update() używała wskaźnika pstate po zakończeniu pętli list_for_each_entry() bez trafienia break, co czyniło go nieprawidłowym. Luka jest osiągalna z przestrzeni użytkownika przez plik debugfs 'pstate' i powoduje odczyt poza zakresem.
- CVE-2026-98622Niskie ryzyko· EPSS 7%
W jądrze Linux w module net/sched act_ct funkcja flow_offload_alloc() zwraca NULL gdy wpis conntrack jest w trakcie usuwania lub gdy alokacja GFP_ATOMIC zawiedzie, co jest oczekiwane pod obciążeniem. Ścieżka ta wywoływała WARN, więc przy panic_on_warn=1 nieuprzywilejowany użytkownik mógł wywołać panikę jądra, ścigając flush conntrack z klasyfikatorem 'tc ... action ct commit'.
- CVE-2026-98621Niskie ryzyko· EPSS 11%
W jądrze Linux w obsłudze GUE funkcja gue_remcsum() przekazywała absolutne offsety start i pole sumy kontrolnej do skb_remcsum_process(), gdzie przy offset < start dochodziło do niedomiaru w zmiennej u16 skb->csum_offset. Przekazany pakiet mógł zachować CHECKSUM_PARTIAL i trafić do sterownika NETIF_F_HW_CSUM, powodując zapis dwóch bajtów około 64 KiB poza buforem docelowym.
- CVE-2026-98620Niskie ryzyko· EPSS 9%
W jądrze Linux w sterowniku mtk_eth_soc gdy register_netdev() zawiedzie dla jednego z urządzeń MTK_MAX_DEVS w mtk_probe(), ścieżka błędu pomijała mtk_unreg_dev(). Wcześniej zarejestrowane net_devices były zwalniane przez mtk_free_dev() pozostając w stanie NETREG_REGISTERED, co wywoływało BUG_ON.
- CVE-2026-98619Niskie ryzyko· EPSS 4%
W jądrze Linux naprawiono błąd w podsystemie ethtool, gdzie test offline (ETHTOOL_TEST) mógł zamykać i otwierać interfejs sieciowy bez wymaganego rtnl_lock. Dotyczyło to sterowników fbnic i bnxt, które używają tylko blokady instancji netdev. Brak rtnl_lock podczas tych operacji prowadził do ostrzeżeń lockdep i naruszenia ASSERT_RTNL().
- CVE-2026-98618Niskie ryzyko· EPSS 9%
W jądrze Linux w sterowniku fbnic ścieżka alokacji dla kanałów standalone wykluczała FBNIC_MAX_TXQS z układu, używając jednego wektora NAPI na kolejkę Tx i Rx. Konfiguracja 64-Tx/64-Rx rejestrowała 128 wektorów, ale alokowała tylko 64, pozostawiając wpisy NULL, które były dereferencjonowane podczas konfiguracji zasobów.
- CVE-2026-98617Niskie ryzyko· EPSS 8%
W jądrze Linux naprawiono błąd w sterowniku fbnic (eth: fbnic), który dotyczył wyboru wektora NAPI dla kolejki odbiorczej (Rx). Kod używał indeksu modulo liczby wektorów NAPI, co dawało nieprawidłowe przypisanie, gdy istniały samodzielne wektory nadawcze (Tx). Poprawka wykorzystuje wskaźnik NAPI przechowywany w netdev_rx_queue.napi, ustawiany przez fbnic_set_netif_napi() i czyszczony przez fbnic_reset_netif_napi(), co eliminuje potrzebę dzielenia modulo i zapewnia spójność w sytuacjach, gdy datapath jest wyłączony.
- CVE-2026-98616Niskie ryzyko· EPSS 5%
W jądrze Linux w sterowniku fbnic (eth: fbnic) licznik num_napi nie był zerowany przy zwalnianiu wektorów NAPI. W wyniku tego, gdy ścieżka zarządzania energią (PM) lub odzyskiwanie po błędzie PCIe nie odbuduje datapath, num_napi pozostaje dodatnie mimo zwolnionych wektorów, co prowadzi do użycia zwolnionej pamięci i dereferencji NULL w fbnic_dbg_down().
- CVE-2026-98615Niskie ryzyko· EPSS 6%
W jądrze Linux w sterowniku eth: fbnic podczas niszczenia pierścienia Rx skrzynki pocztowej firmware'u funkcja fbnic_mbx_reset_desc_ring() ustawiała tylko bit AW_FLUSH, bez AW_FLUSH_MODE, przez co oczekujące zapisy nie były opróżniane z potoku PUL i flush nigdy się nie kończył. Dodano definicję FLUSH_MODE i ustawianie obu bitów, aby zapisy same się opróżniły, przy zachowaniu wyczyszczonego BME.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

