CVE-2026-15890
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Domyślny dostawca wartości jednorazowych AEAD dla modułu transformacji PSA Internal Trusted Storage, secure_storage_its_transform_aead_get_nonce() w subsys/secure_storage/src/its/transform/aead_get.c, przechowuje swój licznik nonce w niezsynchronizowanych zmiennych statycznych lokalnych funkcji (s_nonce i s_nonce_initialized). Każdy zapis ITS uzyskuje tutaj swoją wartość jednorazową AES-GCM lub ChaCha20-Poly1305 poprzez secure_storage_its_transform_to_store().
Ponieważ funkcja nie posiada blokady, dwa wątki ją wywołujące ścigają się jednocześnie na współdzielonych statystykach: ścieżka inicjalizacji (psa_generate_random(), po której następuje memcpy()) i nieatomowa ścieżka inkrementacji, a następnie kopiowania może przekazać tę samą wartość jednorazową dwóm odrębnym operacjom szyfrowania i może utracić przyrosty, w związku z czym licznik powtarza wartości, których nigdy nie miał powtarzać. Warstwa ITS (secure_storage_its_set() w subsys/secure_storage/src/its/implementation.c) nie wykonuje własnej serializacji, więc równoczesne zapisy tego samego UID docierają bezpośrednio do dostawcy Racy.
Ponowne użycie elementu jednorazowego z tym samym kluczem w AES-GCM lub ChaCha20-Poly1305 jest katastrofalną awarią AEAD: powoduje wyciek XOR dwóch tekstów jawnych (ITS rutynowo przechowuje sekrety, w tym trwałe klucze PSA), a w przypadku GCM ujawnia klucz uwierzytelniający, umożliwiając fałszowanie przechowywanych wpisów. Ponieważ klucz AEAD jest wyprowadzany na podstawie UID wpisu, kolizja istotna dla bezpieczeństwa polega na tym, że dwa równoczesne zapisy do tego samego UID otrzymują tę samą wartość jednorazową; przeciwnik, który jest w stanie odczytać surową pamięć zapasową, może następnie wykorzystać ponowne wykorzystanie.
Zarówno zaplecze sklepu ITS dostarczane z Zephyr, zms.c, jak i zaplecze ustawień/NVS w pliku settings.c, to magazyny flash o strukturze dziennika z odroczonym usuwaniem elementów bezużytecznych, więc wpis zastąpiony przez ponowne zapisanie pozostaje fizycznie obecny na partycji do czasu odzyskania sektora. Dwa takie same UID piszą, że rasa pozostawia zatem oba szyfrogramy czytelne na surowym obrazie na raz, co jest warunkiem, aby ponowne użycie jednorazowe było możliwe do wykorzystania. Wyzwalacz pozostaje wąski: obaj wbudowani dostawcy kluczy (DEVICE_ID_HASH i ENTRY_UID_HASH) dodają klucz pochodny do wpisu UID, więc ponowne użycie w różnych UID jest nieszkodliwe, a narażenie wymaga aplikacji, która zapisuje ten sam UID jednocześnie z dwóch wątków.
Poprawka serializuje dostawcę z wartością K_MUTEX_DEFINE(s_nonce_mutex) przechowywaną na czas generowania wartości jednorazowej.
>_ Słabości (CWE)
>_ 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