ASAN reports memory leak when used with GnuTLS in Knot
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- cryptography, security
Hướng nghiên cứu
Start by reproducing the leak with the reported keymgr -c knot.conf softhsm keystore-bench 1 ed25519 command and inspect the SoftHSM stack frames around OSSL::byteString2oid in src/lib/crypto/OSSLUtil.cpp:186. Compare the report across SoftHSM versions and trace allocations made during C_SignInit and signing through GnuTLS. Done means identifying whether SoftHSM retains allocated memory and fixing or documenting the cause.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In Knot code, there is call of gnutls_privkey_sign_data2() function.. When used with libsofthsm2.so, ASAN reports memory leaks when running keymgr bench on algorithm ED25519 or ED448 like keymgr -c knot.conf softhsm keystore-bench 1 ed25519
https://gitlab.nic.cz/knot/knot-dns/-/blob/master/src/libknot/dnssec/sign/sign.c?ref_type=heads#L322
They differ based on SoftHSMv2 version.. Under main branch
Direct leak of 266232 byte(s) in 11093 object(s) allocated from:
#0 0x5a5ce71c73a8 in malloc (/home/jhak/Work/knot-dns/build/sbin/keymgr+0x32a3a8) (BuildId: a66f3172de7f0daa2cc3c4584a8c1f9e1615d8c7)
#1 0x7b08f0461d65 in CRYPTO_malloc (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x261d65) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#2 0x7b08f0461ef4 in CRYPTO_zalloc (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x261ef4) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#3 0x7b08f030d0b4 in ASN1_STRING_type_new (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x10d0b4) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#4 0x7b08f0317935 (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x117935) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#5 0x7b08f03183f2 (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1183f2) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#6 0x7b08f03187bd in ASN1_item_d2i_ex (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1187bd) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#7 0x7f0b92babfb6 in OSSL::byteString2oid(ByteString const&) /home/jhak/Work/SoftHSMv2/src/lib/crypto/OSSLUtil.cpp:186:40
#8 0x7f0b92bfb96f in vtable for std::_Vector_base<unsigned char, SecureAllocator<unsigned char>>::_Vector_impl (/home/jhak/Work/SoftHSMv2/build/lib/softhsm/libsofthsm2.so+0xe396f) (BuildId: 9ff1854581b9c235aa7edc53c2d583000f2cac9b)
Indirect leak of 144209 byte(s) in 11093 object(s) allocated from:
#0 0x5a5ce71c73a8 in malloc (/home/jhak/Work/knot-dns/build/sbin/keymgr+0x32a3a8) (BuildId: a66f3172de7f0daa2cc3c4584a8c1f9e1615d8c7)
#1 0x7b08f0461d65 in CRYPTO_malloc (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x261d65) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#2 0x7b08f030cf28 in ASN1_STRING_set (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x10cf28) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#3 0x7b08f03177dd (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1177dd) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#4 0x7b08f03183f2 (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1183f2) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#5 0x7b08f03187bd in ASN1_item_d2i_ex (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1187bd) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#6 0x7f0b92babfb6 in OSSL::byteString2oid(ByteString const&) /home/jhak/Work/SoftHSMv2/src/lib/crypto/OSSLUtil.cpp:186:40
#7 0x7f0b92bfb96f in vtable for std::_Vector_base<unsigned char, SecureAllocator<unsigned char>>::_Vector_impl (/home/jhak/Work/SoftHSMv2/build/lib/softhsm/libsofthsm2.so+0xe396f) (BuildId: 9ff1854581b9c235aa7edc53c2d583000f2cac9b)
and under stable version SoftHSM v2.6.1, I get
Direct leak of 839184 byte(s) in 34966 object(s) allocated from:
#0 0x62d7e56873a8 in malloc (/home/jhak/Work/knot-dns/build/sbin/keymgr+0x32a3a8) (BuildId: a66f3172de7f0daa2cc3c4584a8c1f9e1615d8c7)
#1 0x6c1c2e661d65 in CRYPTO_malloc (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x261d65) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#2 0x6c1c2e661ef4 in CRYPTO_zalloc (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x261ef4) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#3 0x6c1c2e50d0b4 in ASN1_STRING_type_new (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x10d0b4) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#4 0x6c1c2e517935 (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x117935) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#5 0x6c1c2e5183f2 (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1183f2) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#6 0x6c1c2e5187bd in ASN1_item_d2i_ex (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1187bd) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#7 0x701ed0bae2bd (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x942bd) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#8 0x701ed0ba2bed (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x88bed) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#9 0x701ed0b6b8a9 (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x518a9) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#10 0x701ed0b72f86 (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x58f86) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#11 0x701ed0b426af in C_SignInit (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x286af) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#12 0x701ed1c8c56f (/usr/lib/x86_64-linux-gnu/libgnutls.so.30+0x8c56f) (BuildId: 8fd502e8f1079f55b9aa0296c390f968c3b464cf)
#13 0x701ed1c8e244 in gnutls_privkey_sign_data2 (/usr/lib/x86_64-linux-gnu/libgnutls.so.30+0x8e244) (BuildId: 8fd502e8f1079f55b9aa0296c390f968c3b464cf)
#14 0x701ed229f948 in dnssec_sign_write /home/jhak/Work/knot-dns/src/libknot/dnssec/sign/sign.c:322:15
#15 0x62d7e56f07e7 in bench /home/jhak/Work/knot-dns/src/utils/keymgr/keystore.c:291:7
#16 0x62d7e58b96e9 in thread_ep /home/jhak/Work/knot-dns/src/knot/server/dthreads.c:137:4
#17 0x62d7e5684c2a in asan_thread_start(void*) asan_interceptors.cpp.o
#18 0x701ed193772b in __GI___clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Indirect leak of 454558 byte(s) in 34966 object(s) allocated from:
#0 0x62d7e56873a8 in malloc (/home/jhak/Work/knot-dns/build/sbin/keymgr+0x32a3a8) (BuildId: a66f3172de7f0daa2cc3c4584a8c1f9e1615d8c7)
#1 0x6c1c2e661d65 in CRYPTO_malloc (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x261d65) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#2 0x6c1c2e50cf28 in ASN1_STRING_set (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x10cf28) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#3 0x6c1c2e5177dd (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1177dd) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#4 0x6c1c2e5183f2 (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1183f2) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#5 0x6c1c2e5187bd in ASN1_item_d2i_ex (/usr/lib/x86_64-linux-gnu/libcrypto.so.3+0x1187bd) (BuildId: ffa943c825cabf5254c51e779463b97dfdf510c1)
#6 0x701ed0bae2bd (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x942bd) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#7 0x701ed0ba2bed (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x88bed) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#8 0x701ed0b6b8a9 (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x518a9) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#9 0x701ed0b72f86 (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x58f86) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#10 0x701ed0b426af in C_SignInit (/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so+0x286af) (BuildId: 1c3f1e7cc1022e5930f6c11d9474eea9262258b2)
#11 0x701ed1c8c56f (/usr/lib/x86_64-linux-gnu/libgnutls.so.30+0x8c56f) (BuildId: 8fd502e8f1079f55b9aa0296c390f968c3b464cf)
#12 0x701ed1c8e244 in gnutls_privkey_sign_data2 (/usr/lib/x86_64-linux-gnu/libgnutls.so.30+0x8e244) (BuildId: 8fd502e8f1079f55b9aa0296c390f968c3b464cf)
#13 0x701ed229f948 in dnssec_sign_write /home/jhak/Work/knot-dns/src/libknot/dnssec/sign/sign.c:322:15
#14 0x62d7e56f07e7 in bench /home/jhak/Work/knot-dns/src/utils/keymgr/keystore.c:291:7
#15 0x62d7e58b96e9 in thread_ep /home/jhak/Work/knot-dns/src/knot/server/dthreads.c:137:4
#16 0x62d7e5684c2a in asan_thread_start(void*) asan_interceptors.cpp.o
#17 0x701ed193772b in __GI___clone3 misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
I'm not really sure thats problem of GnuTLS, I would say thats SoftHSM bug. Can you take a look at it?
- Ngôn ngữ chính
- C++
- Star
- 1.1k
- Fork
- 434
- Merge trung bình
- 12 ngày 14 giờ
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của softhsm/SoftHSMv2
-
C_DigestKey digests a sensitive EC private key's CKA_VALUE: no check that the object is a secret keyĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 54/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 56/100
Tất cả issue của softhsm/SoftHSMv2
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
charmplusplus/charm#4210 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG] VPN auth dialog spawned by the secret agent fails with "TLS support is not available" on NixOSĐang mởbug nixos umbriel
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
noctalia-dev/noctalia#5310 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area/docdb kind/bug priority/medium status/awaiting-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
yugabyte/yugabyte-db#37426 ·
Maintainer thường phản hồi trong vòng 1 ngày