CVE-2022-49093 Vulnerability Analysis & Exploit Details

CVE-2022-49093
Vulnerability Scoring

7.8
/10
Very High Risk

Highly exploitable, CVE-2022-49093 poses a critical security risk that could lead to severe breaches.

Attack Complexity Details

  • Attack Complexity: Low
    Exploits can be performed without significant complexity or special conditions.
  • Attack Vector: Local
    Vulnerability requires local system access.
  • Privileges Required: Low
    Some privileges are necessary to exploit the vulnerability.
  • Scope: Unchanged
    Exploit remains within the originally vulnerable component.
  • User Interaction: None
    No user interaction is necessary for exploitation.

CVE-2022-49093 Details

Status: Analyzed

Last updated: 🕓 25 Mar 2025, 16:20 UTC
Originally published on: 🕖 26 Feb 2025, 07:00 UTC

Time between publication and last update: 27 days

CVSS Release: version 3

CVSS3 Source

134c704f-9b21-4f2e-91b3-4a467353bcc0

CVSS3 Type

Secondary

CVSS3 Vector

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

CVE-2022-49093 Vulnerability Summary

CVE-2022-49093: In the Linux kernel, the following vulnerability has been resolved: skbuff: fix coalescing for page_pool fragment recycling Fix a use-after-free when using page_pool with page fragments. We encountered this problem during normal RX in the hns3 driver: (1) Initially we have three descriptors in the RX queue. The first one allocates PAGE1 through page_pool, and the other two allocate one half of PAGE2 each. Page references look like this: RX_BD1 _______ PAGE1 RX_BD2 _______ PAGE2 RX_BD3 _________/ (2) Handle RX on the first descriptor. Allocate SKB1, eventually added to the receive queue by tcp_queue_rcv(). (3) Handle RX on the second descriptor. Allocate SKB2 and pass it to netif_receive_skb(): netif_receive_skb(SKB2) ip_rcv(SKB2) SKB3 = skb_clone(SKB2) SKB2 and SKB3 share a reference to PAGE2 through skb_shinfo()->dataref. The other ref to PAGE2 is still held by RX_BD3: SKB2 ---+- PAGE2 SKB3 __/ / RX_BD3 _________/ (3b) Now while handling TCP, coalesce SKB3 with SKB1: tcp_v4_rcv(SKB3) tcp_try_coalesce(to=SKB1, from=SKB3) // succeeds kfree_skb_partial(SKB3) skb_release_data(SKB3) // drops one dataref SKB1 _____ PAGE1 \____ SKB2 _____ PAGE2 / RX_BD3 _________/ In skb_try_coalesce(), __skb_frag_ref() takes a page reference to PAGE2, where it should instead have increased the page_pool frag reference, pp_frag_count. Without coalescing, when releasing both SKB2 and SKB3, a single reference to PAGE2 would be dropped. Now when releasing SKB1 and SKB2, two references to PAGE2 will be dropped, resulting in underflow. (3c) Drop SKB2: af_packet_rcv(SKB2) consume_skb(SKB2) skb_release_data(SKB2) // drops second dataref page_pool_return_skb_page(PAGE2) // drops one pp_frag_count SKB1 _____ PAGE1 \____ PAGE2 / RX_BD3 _________/ (4) Userspace calls recvmsg() Copies SKB1 and releases it. Since SKB3 was coalesced with SKB1, we release the SKB3 page as well: tcp_eat_recv_skb(SKB1) skb_release_data(SKB1) page_pool_return_skb_page(PAGE1) page_pool_return_skb_page(PAGE2) // drops second pp_frag_count (5) PAGE2 is freed, but the third RX descriptor was still using it! In our case this causes IOMMU faults, but it would silently corrupt memory if the IOMMU was disabled. Change the logic that checks whether pp_recycle SKBs can be coalesced. We still reject differing pp_recycle between 'from' and 'to' SKBs, but in order to avoid the situation described above, we also reject coalescing when both 'from' and 'to' are pp_recycled and 'from' is cloned. The new logic allows coalescing a cloned pp_recycle SKB into a page refcounted one, because in this case the release (4) will drop the right reference, the one taken by skb_try_coalesce().

Assessing the Risk of CVE-2022-49093

Access Complexity Graph

The exploitability of CVE-2022-49093 depends on two key factors: attack complexity (the level of effort required to execute an exploit) and privileges required (the access level an attacker needs).

Exploitability Analysis for CVE-2022-49093

CVE-2022-49093 presents an accessible attack vector with minimal effort required. Restricting access controls and implementing security updates are critical to reducing exploitation risks.

Understanding AC and PR

A lower complexity and fewer privilege requirements make exploitation easier. Security teams should evaluate these aspects to determine the urgency of mitigation strategies, such as patch management and access control policies.

Attack Complexity (AC) measures the difficulty in executing an exploit. A high AC means that specific conditions must be met, making an attack more challenging, while a low AC means the vulnerability can be exploited with minimal effort.

Privileges Required (PR) determine the level of system access necessary for an attack. Vulnerabilities requiring no privileges are more accessible to attackers, whereas high privilege requirements limit exploitation to authorized users with elevated access.

CVSS Score Breakdown Chart

Above is the CVSS Sub-score Breakdown for CVE-2022-49093, illustrating how Base, Impact, and Exploitability factors combine to form the overall severity rating. A higher sub-score typically indicates a more severe or easier-to-exploit vulnerability.

CIA Impact Analysis

Below is the Impact Analysis for CVE-2022-49093, showing how Confidentiality, Integrity, and Availability might be affected if the vulnerability is exploited. Higher values usually signal greater potential damage.

  • Confidentiality: High
    Exploiting CVE-2022-49093 can result in unauthorized access to sensitive data, severely compromising data privacy.
  • Integrity: High
    CVE-2022-49093 could allow unauthorized modifications to data, potentially affecting system reliability and trust.
  • Availability: High
    CVE-2022-49093 can disrupt system operations, potentially causing complete denial of service (DoS).

Exploit Prediction Scoring System (EPSS)

The EPSS score estimates the probability that this vulnerability will be exploited in the near future.

EPSS Score: 0.045% (probability of exploit)

EPSS Percentile: 18.4% (lower percentile = lower relative risk)
This vulnerability is less risky than approximately 81.6% of others.

CVE-2022-49093 References

External References

CWE Common Weakness Enumeration

CWE-416

Vulnerable Configurations

  • cpe:2.3:o:linux:linux_kernel:5.15:-:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15:-:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.0:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.0:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.0-58:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.0-58:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.1:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.1:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.2:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.2:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.3:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.3:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.3:-:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.3:-:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.4:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.4:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.5:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.5:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.6:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.6:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.7:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.7:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.8:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.8:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.9:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.9:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.10:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.10:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.11:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.11:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.12:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.12:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.13:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.13:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.14:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.14:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.15:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.15:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.16:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.16:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.17:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.17:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.18:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.18:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.19:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.19:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.20:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.20:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.21:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.21:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.22:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.22:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.23:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.23:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.24:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.24:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.25:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.25:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.26:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.26:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.27:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.27:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.28:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.28:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.29:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.29:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.30:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.30:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.31:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.31:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.32:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.32:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.15.33:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.15.33:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16:-:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16:-:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.1:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.1:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.2:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.2:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.3:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.3:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.4:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.4:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.5:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.5:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.6:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.6:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.7:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.7:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.8:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.8:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.9:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.9:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.10:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.10:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.11:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.11:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.12:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.12:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.13:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.13:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.14:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.14:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.15:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.15:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.16:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.16:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.17:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.17:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.18:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.18:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.16.19:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.16.19:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.17:-:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.17:-:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.17.1:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.17.1:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.17.2:*:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.17.2:*:*:*:*:*:*:*
  • cpe:2.3:o:linux:linux_kernel:5.18:rc1:*:*:*:*:*:*
    cpe:2.3:o:linux:linux_kernel:5.18:rc1:*:*:*:*:*:*

Protect Your Infrastructure against CVE-2022-49093: Combat Critical CVE Threats

Stay updated with real-time CVE vulnerabilities and take action to secure your systems. Enhance your cybersecurity posture with the latest threat intelligence and mitigation techniques. Develop the skills necessary to defend against CVEs and secure critical infrastructures. Join the top cybersecurity professionals safeguarding today's infrastructures.

Other 5 Recently Published CVEs Vulnerabilities

  • CVE-2025-43903 – NSSCryptoSignBackend.cc in Poppler before 25.04.0 does not verify the adbe.pkcs7.sha1 signatures on documents, resulting in potential signature forgeries.
  • CVE-2025-3796 – A vulnerability classified as critical has been found in PHPGurukul Men Salon Management System 1.0. This affects an unknown part of the file /admi...
  • CVE-2025-32953 – z80pack is a mature emulator of multiple platforms with 8080 and Z80 CPU. In version 1.38 and prior, the `makefile-ubuntu.yml` workflow file uses `...
  • CVE-2025-29058 – An issue in Qimou CMS v.3.34.0 allows a remote attacker to execute arbitrary code via the upgrade.php component.
  • CVE-2024-53591 – An issue in the login page of Seclore v3.27.5.0 allows attackers to bypass authentication via a brute force attack.