Closed
Bug 1951161
Opened 1 year ago
Closed 1 year ago
SUMMARY: ThreadSanitizer: data race /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c in nssPKIObject_DeleteStoredObject
Categories
(NSS :: Libraries, defect)
NSS
Libraries
Tracking
(firefox-esr115 wontfix, firefox-esr128138+ fixed, firefox136 wontfix, firefox137 wontfix, firefox138 fixed)
People
(Reporter: mdauer, Assigned: mdauer)
References
(Blocks 1 open bug)
Details
(Keywords: csectype-race, sec-moderate, Whiteboard: [post-critsmash-triage][adv-main138+r][adv-esr128.10+r])
Attachments
(2 files)
This was found as part of Bug 1913677. To reproduce, perform the following steps:
- Apply the patch from D226460
- Build with
./build.sh -c --fuzz=tsan --disable-tests - Run
mkdir nsstsandb && certutil -N -d sql:nsstsandb --empty-password - Run
TSAN_OPTIONS="suppressions=/path/to/nss/fuzz/config/tsan.suppressions" /path/to/dist/Debug/bin/nsstsan-database replay /path/to/crash-1740769242/*
Marking this security sensitive as a precaution.
| Assignee | ||
Comment 1•1 year ago
|
||
| Assignee | ||
Comment 2•1 year ago
|
||
WARNING: ThreadSanitizer: data race (pid=264647)
Write of size 4 at 0x727000011900 by thread T2:
#0 nssPKIObject_DeleteStoredObject /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c (nsstsan-database+0x142b01) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#1 NSSCertificate_DeleteStoredObject /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/certificate.c:202:12 (nsstsan-database+0x13b975) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#2 SEC_DeletePermCertificate /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/certdb/stanpcertdb.c:83:13 (nsstsan-database+0x11a339) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#3 NSSCertificateDB_DeleteCertificate(unsigned char) /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:233:9 (nsstsan-database+0x100c33) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#4 TSanThread::SingleRun() /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:304:3 (nsstsan-database+0x100172) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#5 TSanThread::Loop() /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/lib/tsan/thread.cc:61:11 (nsstsan-database+0x105b59) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#6 void std::__invoke_impl<void, void (TSanThread::*)(), TSanThread*>(std::__invoke_memfun_deref, void (TSanThread::*&&)(), TSanThread*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:74:14 (nsstsan-database+0x10623b) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#7 std::__invoke_result<void (TSanThread::*)(), TSanThread*>::type std::__invoke<void (TSanThread::*)(), TSanThread*>(void (TSanThread::*&&)(), TSanThread*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14 (nsstsan-database+0x10623b)
#8 void std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13 (nsstsan-database+0x10623b)
#9 std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11 (nsstsan-database+0x10623b)
#10 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>>::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13 (nsstsan-database+0x10623b)
#11 execute_native_thread_routine /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/src/c++11/../../../../../src/libstdc++-v3/src/c++11/thread.cc:104:18 (libstdc++.so.6+0xecdb3) (BuildId: ca77dae775ec87540acd7218fa990c40d1c94ab1)
Previous read of size 4 at 0x727000011900 by thread T5:
#0 nssPKIObject_GetInstances /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c:335:17 (nsstsan-database+0x142f68) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#1 NSSCertificate_IsPrivateKeyAvailable /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/certificate.c:675:37 (nsstsan-database+0x13c4b1) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#2 nssTrust_GetCERTCertTrustForCert /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pki3hack.c:633:9 (nsstsan-database+0x13fa72) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#3 SEC_DeletePermCertificate /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/certdb/stanpcertdb.c:69:17 (nsstsan-database+0x11a2fb) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#4 NSSCertificateDB_DeleteCertificate(unsigned char) /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:233:9 (nsstsan-database+0x100c33) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#5 TSanThread::SingleRun() /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:304:3 (nsstsan-database+0x100172) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#6 TSanThread::Loop() /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/lib/tsan/thread.cc:61:11 (nsstsan-database+0x105b59) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#7 void std::__invoke_impl<void, void (TSanThread::*)(), TSanThread*>(std::__invoke_memfun_deref, void (TSanThread::*&&)(), TSanThread*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:74:14 (nsstsan-database+0x10623b) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#8 std::__invoke_result<void (TSanThread::*)(), TSanThread*>::type std::__invoke<void (TSanThread::*)(), TSanThread*>(void (TSanThread::*&&)(), TSanThread*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14 (nsstsan-database+0x10623b)
#9 void std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13 (nsstsan-database+0x10623b)
#10 std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11 (nsstsan-database+0x10623b)
#11 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>>::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13 (nsstsan-database+0x10623b)
#12 execute_native_thread_routine /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/src/c++11/../../../../../src/libstdc++-v3/src/c++11/thread.cc:104:18 (libstdc++.so.6+0xecdb3) (BuildId: ca77dae775ec87540acd7218fa990c40d1c94ab1)
Location is heap block of size 2048 at 0x727000011800 allocated by thread T1:
#0 malloc <null> (nsstsan-database+0x7dba0) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#1 PR_Malloc /home/mdauer/mercurial/nss-nspr/nspr/Debug/pr/src/malloc/../../../../pr/src/malloc/prmem.c:425:53 (nsstsan-database+0x4db5ee) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#2 PL_ArenaAllocate /home/mdauer/mercurial/nss-nspr/nspr/Debug/lib/ds/../../../lib/ds/plarena.c:132:21 (nsstsan-database+0x4ce634) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#3 nss_zalloc_arena_locked /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/base/arena.c:751:5 (nsstsan-database+0x131128) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#4 nss_ZAlloc /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/base/arena.c:872:14 (nsstsan-database+0x131128)
#5 nssPKIObject_Create /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c:101:14 (nsstsan-database+0x142082) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#6 add_object_instance /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c:775:24 (nsstsan-database+0x143b73) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#7 nssPKIObjectCollection_AddInstanceAsObject /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c:920:12 (nsstsan-database+0x143e0e) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#8 collector /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/trustdomain.c:978:12 (nsstsan-database+0x149980) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#9 nssToken_TraverseCertificates /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/dev/devtoken.c:1450:23 (nsstsan-database+0x1388dd) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#10 NSSTrustDomain_TraverseCertificates /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/trustdomain.c:1023:23 (nsstsan-database+0x14990c) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#11 PK11_ListCerts /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pk11wrap/pk11cert.c:2810:5 (nsstsan-database+0x16f898) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#12 TSanThread::PrepareRun() /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:266:30 (nsstsan-database+0xffb05) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#13 TSanThread::Loop() /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/lib/tsan/thread.cc:59:11 (nsstsan-database+0x105acb) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#14 void std::__invoke_impl<void, void (TSanThread::*)(), TSanThread*>(std::__invoke_memfun_deref, void (TSanThread::*&&)(), TSanThread*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:74:14 (nsstsan-database+0x10623b) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#15 std::__invoke_result<void (TSanThread::*)(), TSanThread*>::type std::__invoke<void (TSanThread::*)(), TSanThread*>(void (TSanThread::*&&)(), TSanThread*&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:96:14 (nsstsan-database+0x10623b)
#16 void std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>::_M_invoke<0ul, 1ul>(std::_Index_tuple<0ul, 1ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:292:13 (nsstsan-database+0x10623b)
#17 std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>::operator()() /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:299:11 (nsstsan-database+0x10623b)
#18 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (TSanThread::*)(), TSanThread*>>>::_M_run() /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_thread.h:244:13 (nsstsan-database+0x10623b)
#19 execute_native_thread_routine /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/src/c++11/../../../../../src/libstdc++-v3/src/c++11/thread.cc:104:18 (libstdc++.so.6+0xecdb3) (BuildId: ca77dae775ec87540acd7218fa990c40d1c94ab1)
Thread T2 (tid=264650, running) created by main thread at:
#0 pthread_create <null> (nsstsan-database+0x7f54f) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#1 __gthread_create /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:676:35 (libstdc++.so.6+0xeceb0) (BuildId: ca77dae775ec87540acd7218fa990c40d1c94ab1)
#2 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State>>, void (*)()) /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/src/c++11/../../../../../src/libstdc++-v3/src/c++11/thread.cc:172:37 (libstdc++.so.6+0xeceb0)
#3 TSanFramework::Run(char*, int, int) /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/lib/tsan/framework.cc:71:48 (nsstsan-database+0x104e60) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#4 main /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:317:19 (nsstsan-database+0x1002b2) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
Thread T5 (tid=264653, running) created by main thread at:
#0 pthread_create <null> (nsstsan-database+0x7f54f) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#1 __gthread_create /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:676:35 (libstdc++.so.6+0xeceb0) (BuildId: ca77dae775ec87540acd7218fa990c40d1c94ab1)
#2 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State>>, void (*)()) /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/src/c++11/../../../../../src/libstdc++-v3/src/c++11/thread.cc:172:37 (libstdc++.so.6+0xeceb0)
#3 TSanFramework::Run(char*, int, int) /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/lib/tsan/framework.cc:71:48 (nsstsan-database+0x104e60) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#4 main /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:317:19 (nsstsan-database+0x1002b2) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
Thread T1 (tid=264649, running) created by main thread at:
#0 pthread_create <null> (nsstsan-database+0x7f54f) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#1 __gthread_create /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/include/x86_64-linux-gnu/bits/gthr-default.h:676:35 (libstdc++.so.6+0xeceb0) (BuildId: ca77dae775ec87540acd7218fa990c40d1c94ab1)
#2 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State>>, void (*)()) /build/gcc-14-ig5ci0/gcc-14-14.2.0/build/x86_64-linux-gnu/libstdc++-v3/src/c++11/../../../../../src/libstdc++-v3/src/c++11/thread.cc:172:37 (libstdc++.so.6+0xeceb0)
#3 TSanFramework::Run(char*, int, int) /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/lib/tsan/framework.cc:71:48 (nsstsan-database+0x104e60) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
#4 main /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../fuzz/targets/tsan_database.cc:317:19 (nsstsan-database+0x1002b2) (BuildId: 8aa5826af6ffb6ab32990608e47f5673e7732157)
SUMMARY: ThreadSanitizer: data race /home/mdauer/mercurial/nss-nspr/nss/out/Debug/../../lib/pki/pkibase.c in nssPKIObject_DeleteStoredObject
Updated•1 year ago
|
Keywords: csectype-race
Updated•1 year ago
|
Keywords: sec-moderate
| Assignee | ||
Updated•1 year ago
|
Assignee: nobody → mdauer
Status: NEW → ASSIGNED
| Assignee | ||
Comment 3•1 year ago
|
||
Comment 4•1 year ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Updated•1 year ago
|
Group: crypto-core-security → core-security-release
Updated•1 year ago
|
status-firefox136:
--- → wontfix
status-firefox137:
--- → wontfix
status-firefox138:
--- → fixed
status-firefox-esr115:
--- → wontfix
status-firefox-esr128:
--- → affected
Updated•1 year ago
|
Flags: qe-verify-
Whiteboard: [post-critsmash-triage]
Comment 5•1 year ago
|
||
John: is this going to land on the NSS branch used with the upcoming ESR 128.10 release?
tracking-firefox-esr128:
--- → 138+
Flags: needinfo?(jschanck)
Comment 6•1 year ago
|
||
Ben is on point for this release cycle; redirecting the NI to him.
Flags: needinfo?(jschanck) → needinfo?(bbeurdouche)
Updated•1 year ago
|
Blocks: nss-fuzzing-bugs
Comment 7•1 year ago
•
|
||
confirmed with Ben that this is contained in the NSS release. (see bug 1961205)
Updated•1 year ago
|
Flags: needinfo?(bbeurdouche)
Updated•1 year ago
|
Whiteboard: [post-critsmash-triage] → [post-critsmash-triage][adv-main138+r]
Updated•1 year ago
|
Whiteboard: [post-critsmash-triage][adv-main138+r] → [post-critsmash-triage][adv-main138+r][adv-esr128.23+r]
Updated•1 year ago
|
Whiteboard: [post-critsmash-triage][adv-main138+r][adv-esr128.23+r] → [post-critsmash-triage][adv-main138+r][adv-esr128.10+r]
Updated•11 months ago
|
Group: core-security-release
You need to log in
before you can comment on or make changes to this bug.
Description
•