CVE-2020-36789
Last modified
CVE-2020-36789 is a medium-severity vulnerability rated 5.5/10 on the CVSS scale. In the Linux kernel, the following vulnerability has been resolved: can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ context If a driver calls can_get_echo_skb() during a hardware IRQ (which is often, but not always, the case), the 'WARN_ON(in_irq)' in net/core/skbuff.c#skb_release_head_state() might be triggered, under network congestion circumstances, together with the potential risk of a NULL pointer dereference. The root cause of this issue is the call to kfree_skb() instead of dev_kfree_skb_irq() in net/core/dev.c#enqueue_to_backlog(). This patch prevents the skb to be freed within the call to netif_rx() by incrementing its reference count with skb_get(). The skb is finally freed by one of the in-irq-context safe functions: dev_consume_skb_any() or dev_kfree_skb_any(). EPSS estimates a 0.15% chance of exploitation in the next 30 days.
Description
In the Linux kernel, the following vulnerability has been resolved: can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ context If a driver calls can_get_echo_skb() during a hardware IRQ (which is often, but not always, the case), the 'WARN_ON(in_irq)' in net/core/skbuff.c#skb_release_head_state() might be triggered, under network congestion circumstances, together with the potential risk of a NULL pointer dereference. The root cause of this issue is the call to kfree_skb() instead of dev_kfree_skb_irq() in net/core/dev.c#enqueue_to_backlog(). This patch prevents the skb to be freed within the call to netif_rx() by incrementing its reference count with skb_get(). The skb is finally freed by one of the in-irq-context safe functions: dev_consume_skb_any() or dev_kfree_skb_any(). The "any" version is used because some drivers might call can_get_echo_skb() in a normal context. The reason for this issue to occur is that initially, in the core network stack, loopback skb were not supposed to be received in hardware IRQ context. The CAN stack is an exeption. This bug was previously reported back in 2017 in [1] but the proposed patch never got accepted. While [1] directly modifies net/core/dev.c, we try to propose here a smoother modification local to CAN network stack (the assumption behind is that only CAN devices are affected by this issue). [1] http://lore.kernel.org/r/57a3ffb6-3309-3ad5-5a34-e93c3fe3614d@cetitec.com
Metrics
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weakness Enumeration
Affected Software
| Vendor | Product | Versions | Update |
|---|---|---|---|
| Linux | Linux Kernel | >= 2.6.31, < 4.4.244 | — |
| Linux | Linux Kernel | >= 4.5, < 4.9.244 | — |
| Linux | Linux Kernel | >= 4.10, < 4.14.207 | — |
| Linux | Linux Kernel | >= 4.15, < 4.19.158 | — |
| Linux | Linux Kernel | >= 4.20, < 5.4.78 | — |
| Linux | Linux Kernel | >= 5.5, < 5.9.9 | — |
| Linux | Linux Kernel | 5.10 | Rc1 |
References
Timeline
- Published
- Last Modified
- Status
- Modified
Frequently Asked Questions
What is CVE-2020-36789?
How severe is CVE-2020-36789?
How do I fix CVE-2020-36789?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2020
- CVE-2020-36783In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2020-36784In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2020-36785In the Linux kernel, the following vulnerability has been re…7.8
- CVE-2020-36786In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2020-36787In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2020-36788In the Linux kernel, the following vulnerability has been re…7.8
- CVE-2020-3679u'During execution after Address Space Layout Randomization …5.5
- CVE-2020-36790In the Linux kernel, the following vulnerability has been re…5.5
- CVE-2020-36791In the Linux kernel, the following vulnerability has been re…7.1
- CVE-2020-36792Rejected reason: ** REJECT ** DO NOT USE THIS CVE RECORD. Co…
- CVE-2020-36793Rejected reason: ** REJECT ** DO NOT USE THIS CVE RECORD. Co…
- CVE-2020-36794Rejected reason: ** REJECT ** DO NOT USE THIS CVE RECORD. Co…
Are you affected by CVE-2020-36789?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
