On 2024-03-30 13:18, Gordon Messmer wrote:

The write up describing the back door indicates that the malicious xz library "changes the value of rsa_public_decr...@....plt to point to its own code."  So the back door has pointed one of the symbols that should point to a page mapped to OpenSSL's libcrypto.so.3 to a page mapped to liblzma.so.5, instead.

Would it be possible to audit the value of a process's symbols at runtime to look for this kind of shenanigans?  Could this type of auditing be added to functional tests or rpminspect?


As a proof of concept, I extended GEF a tiny bit: https://github.com/gordonmessmer/gef

Now gdb can print the GOT with the paths providing the memory section containing a function.  For example, on a Debian 12 system with liblzma 5.6:

---

got RSA

GOT protection: Full RelRO | GOT functions: 463

[0x555957c780f8] RSA_set0_key@OPENSSL_3.0.0  →  0x7f7bce676c90 : /usr/lib/x86_64-linux-gnu/libcrypto.so.3 [0x555957c78218] RSA_public_decrypt@OPENSSL_3.0.0  → 0x7f7bce948510 : /usr/lib/x86_64-linux-gnu/liblzma.so.5 [0x555957c782a8] EVP_PKEY_set1_RSA@OPENSSL_3.0.0  → 0x7f7bce618f30 : /usr/lib/x86_64-linux-gnu/libcrypto.so.3
...

---


If the full table were collected and logged in functional testing, and compared from build to build, this seems like it could detect this class of attack.  RSA_public_decrypt has clearly moved from libcrypto.so.3 to liblzma.so.5.

Is this worth pursuing?

--
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to