GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

GHSA-F3C9-5Q5H-57M3

Vulnerability from github – Published: 2024-05-19 12:30 – Updated: 2024-05-19 12:30
VLAI
Details

In the Linux kernel, the following vulnerability has been resolved:

net: skbuff: add overflow debug check to pull/push helpers

syzbot managed to trigger following splat: BUG: KASAN: use-after-free in __skb_flow_dissect+0x4a3b/0x5e50 Read of size 1 at addr ffff888208a4000e by task a.out/2313 [..] __skb_flow_dissect+0x4a3b/0x5e50 __skb_get_hash+0xb4/0x400 ip_tunnel_xmit+0x77e/0x26f0 ipip_tunnel_xmit+0x298/0x410 ..

Analysis shows that the skb has a valid ->head, but bogus ->data pointer.

skb->data gets its bogus value via the neigh layer, which does:

1556 __skb_pull(skb, skb_network_offset(skb));

... and the skb was already dodgy at this point:

skb_network_offset(skb) returns a negative value due to an earlier overflow of skb->network_header (u16). __skb_pull thus "adjusts" skb->data by a huge offset, pointing outside skb->head area.

Allow debug builds to splat when we try to pull/push more than INT_MAX bytes.

After this, the syzkaller reproducer yields a more precise splat before the flow dissector attempts to read off skb->data memory:

WARNING: CPU: 5 PID: 2313 at include/linux/skbuff.h:2653 neigh_connected_output+0x28e/0x400 ip_finish_output2+0xb25/0xed0 iptunnel_xmit+0x4ff/0x870 ipgre_xmit+0x78e/0xbb0

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2024-35941"
  ],
  "database_specific": {
    "cwe_ids": [],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2024-05-19T11:15:49Z",
    "severity": null
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: skbuff: add overflow debug check to pull/push helpers\n\nsyzbot managed to trigger following splat:\nBUG: KASAN: use-after-free in __skb_flow_dissect+0x4a3b/0x5e50\nRead of size 1 at addr ffff888208a4000e by task a.out/2313\n[..]\n  __skb_flow_dissect+0x4a3b/0x5e50\n  __skb_get_hash+0xb4/0x400\n  ip_tunnel_xmit+0x77e/0x26f0\n  ipip_tunnel_xmit+0x298/0x410\n  ..\n\nAnalysis shows that the skb has a valid -\u003ehead, but bogus -\u003edata\npointer.\n\nskb-\u003edata gets its bogus value via the neigh layer, which does:\n\n1556    __skb_pull(skb, skb_network_offset(skb));\n\n... and the skb was already dodgy at this point:\n\nskb_network_offset(skb) returns a negative value due to an\nearlier overflow of skb-\u003enetwork_header (u16).  __skb_pull thus\n\"adjusts\" skb-\u003edata by a huge offset, pointing outside skb-\u003ehead\narea.\n\nAllow debug builds to splat when we try to pull/push more than\nINT_MAX bytes.\n\nAfter this, the syzkaller reproducer yields a more precise splat\nbefore the flow dissector attempts to read off skb-\u003edata memory:\n\nWARNING: CPU: 5 PID: 2313 at include/linux/skbuff.h:2653 neigh_connected_output+0x28e/0x400\n  ip_finish_output2+0xb25/0xed0\n  iptunnel_xmit+0x4ff/0x870\n  ipgre_xmit+0x78e/0xbb0",
  "id": "GHSA-f3c9-5q5h-57m3",
  "modified": "2024-05-19T12:30:39Z",
  "published": "2024-05-19T12:30:39Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-35941"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/1b2b26595bb09febf14c5444c873ac4ec90a5a77"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/219eee9c0d16f1b754a8b85275854ab17df0850a"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/8af60bb2b215f478b886f1d6d302fefa7f0b917d"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/fff05b2b004d9a8a2416d08647f3dc9068e357c8"
    }
  ],
  "schema_version": "1.4.0",
  "severity": []
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…