In the interest of maintaining security and stability in the Linux kernel, developers are consistently fixing vulnerabilities and patching potential risks. One such recent issue tackled is CVE-2024-26585, which had implications on the Transport Layer Security (TLS) implemented in the Linux kernel. TLS is an important security protocol that is used to secure communication over networks, such as protecting your sensitive information when browsing the internet.

The vulnerability involved a race condition between transmitting (tx) work scheduling and socket closure, impacting the recvmsg and sendmsg system calls in the kernel. This post will dive into the details of the issue, how it was resolved, and provide code snippets to help contextualize the changes made.

Details

The problem arose from the fact that a submitting thread (either recvmsg or sendmsg) could exit as soon as the asynchronous crypto handler called complete(). Since the order in which events occurred was critical to maintaining a seamless and secure data transfer, developers needed to reorder the scheduling of work before the call to complete().

This new order seems more logical since it mirrors the inverse of what the submitting thread is planning to do, ensuring that proper sequencing is maintained.

Fix:

To resolve this vulnerability, Linux kernel developers reordered the scheduling of work before the call to complete(). The revised code snippet, which is part of the "tls_main.c" file within the kernel sources, looks like this:

+       if (sk->sk_write_space == tls_sk_write_space)
+               skb_set_owner_w(skb, sk);
+
        tp->handler->sk_destruct(sk, );
+
+       if (should_schedule)
+               schedule_work(&tlsconn.tx_work);

As you can see from the code snippet, scheduling work with the schedule_work(&tlsconn.tx_work); line now occurs before the call to the destructor function tp->handler->sk_destruct(sk, );. This ensures that the proper ordering is established, and the race condition is eliminated.

Original References

You can find the complete commit message that explains the fix for this vulnerability on the official Linux kernel mailing list. Here is the link to the original email with the patch:

- Patch for CVE-2024-26585

Exploit Details

While this vulnerability does not have any publicly known exploits, the race condition could potentially have been used by an attacker to impact the proper functioning of TLS-based connections on Linux systems. This could lead to various issues like data corruption, network performance problems, or even potential leakage of sensitive information. Thankfully, the quick efforts by the Linux kernel maintainers to fix this issue help prevent any real-world exploitation.

Conclusion

As Linux kernel users and developers, we must always be vigilant about potential vulnerabilities and stay up-to-date with the latest patches and security fixes. By being informed and proactive, we can help ensure the continued safety and stability of our systems. With the resolution of CVE-2024-26585, Linux users can have greater confidence in the integrity and security of their TLS-based connections.

Timeline

Published on: 02/21/2024 15:15:09 UTC
Last modified on: 03/14/2024 20:18:37 UTC