CVE-2026-89664
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
nfsd: zwolnij zdekodowane w OPEN listy ACL Posix poprzez op_release
nfsd4_decode_createhow4() wywołuje funkcję nfsd4_decode_fattr4(), która przydziela
refcounted struct obiekty posix_acl za pomocą posix_acl_alloc() i przechowuje
je w open->op_pacl i open->op_dpacl. Te wskazówki muszą być
uwalniany po zakończeniu związku OPEN.
Kiedy funkcja nfsd4_decode_open_claim4() zwraca błąd inny niż mutacja seqid,
dyspozytor powoduje zwarcie przed uruchomieniem op_func:
nfsd4_proc_compound()
if (op->status && op->opnum == OP_OPEN)
op->status = nfsd4_open_omfg(...)
if (!seqid_mutating_err(ntohl(op->status)))
zwróć op->status; /* nfsd4_open() nigdy nie działa */
...
opdesc->op_release(&op->u) /* nadal musi zwolnić op_pacl/op_dpacl */
Przed tą zmianą OP_OPEN nie miał .op_release w nfsd4_ops[], a
release para znajdowała się wewnątrz nfsd4_open() na jej etykiecie out_err:. Na
ścieżka zwarciowa nfsd4_open() nigdy nie jest wywoływana, więc zarówno posix_acl
refs wyciekają na każdym zniekształconym związku OPEN, który zawiera prawidłowy POSIX
ACL createhow4 atrybuty.
Dodaj nfsd4_open_release() i podłącz go jako .op_release dla OP_OPEN.
posix_acl_release() jest bezpieczna dla NULL, więc obejmuje to witryna z pojedynczym wydaniem
zarówno ścieżka normalna, jak i zwarcie nfsd4_open_omfg. Usuń
pasująca para posix_acl_release() z out_err nfsd4_open():
etykietę, aby uniknąć podwójnego zwolnienia.
Pętla złożona ma dwie gałęzie kodowania: nfsd4_encode_operative()
dla normalnych operacji i nfsd4_encode_replay() dla powtarzanych operacji w wersji 4.0.
op_release zostało wywołane tylko z nfsd4_encode_operative(), więc Resources
dołączony do op->u wyciek na ścieżce odtwarzania.
Przenieś wywołanie op_release() z nfsd4_encode_operative() i
replay, umieszczając ją po if-else w nfsd4_proc_compound().
Daje to jedno miejsce wywołania w dość oczywiście właściwym miejscu,
obejmujące zarówno normalne ścieżki kodowania, jak i ścieżki odtwarzania.
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org