{"api_version":"1","generated_at":"2026-10-22T13:15:58+00:00","cve":"CVE-2026-98287","urls":{"html":"https://cve.report/CVE-2026-98287","api":"https://cve.report/api/cve/CVE-2026-98287.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98287","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98287"},"summary":{"title":"pppoatm: ensure a writable skb header and linear data","description":"In the Linux kernel, the following vulnerability has been resolved:\n\npppoatm: ensure a writable skb header and linear data\n\nIn pppoatm_send(), LLC encapsulation checks whether there is sufficient\nheadroom for the 4-byte LLC header, but does not ensure that the skb header\nis writable.\n\nNormal transmit packets passing through ppp_start_xmit() have their header\nunshared via skb_cow_head(). However, packets can also reach pppoatm_send()\nvia PPP channel bridging (PPPIOCBRIDGECHAN) without going through\nppp_start_xmit().\n\nUse skb_cow_head() to ensure both sufficient headroom and a writable\nheader before pushing the LLC header.\n\nWhile at it:\n- Call pskb_may_pull(skb, 1) before inspecting skb->data[0] to prevent\n  out-of-bounds reads on zero-length or non-linear frames (e.g. from\n  bridging).\n- Defer SC_COMP_PROT protocol compression until after pppoatm_may_send()\n  succeeds. This eliminates the temporary skb allocation on admission failure\n  and completely removes the fragile \"undo\" heuristic at the nospace label,\n  avoiding any risk of reading uninitialized headroom or performing an\n  unbalanced skb_push().","state":"PUBLISHED","assigner":"Linux","published_at":"2026-10-06 09:18:18","updated_at":"2026-10-19 10:18:30"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/ecc7253683a3c55caa868ce0ee530fcb0044bd3c","name":"https://git.kernel.org/stable/c/ecc7253683a3c55caa868ce0ee530fcb0044bd3c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/30992fe39e65589ed8e000425e088fa74994b811","name":"https://git.kernel.org/stable/c/30992fe39e65589ed8e000425e088fa74994b811","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e2f5529b0016db7d34f411408607f5cf395a542e","name":"https://git.kernel.org/stable/c/e2f5529b0016db7d34f411408607f5cf395a542e","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/ffc448eb54f5ba80d4212c1e870cdb92b0f709fa","name":"https://git.kernel.org/stable/c/ffc448eb54f5ba80d4212c1e870cdb92b0f709fa","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e6cd1bba7d113c15c00ac63671213a096fe4d686","name":"https://git.kernel.org/stable/c/e6cd1bba7d113c15c00ac63671213a096fe4d686","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/208ccc4d08b1897451e9ba01c016bf93ff107966","name":"https://git.kernel.org/stable/c/208ccc4d08b1897451e9ba01c016bf93ff107966","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/8e66c5969acd859ba72fb0a7fa895623fc1b3769","name":"https://git.kernel.org/stable/c/8e66c5969acd859ba72fb0a7fa895623fc1b3769","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98287","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98287","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 208ccc4d08b1897451e9ba01c016bf93ff107966 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 e6cd1bba7d113c15c00ac63671213a096fe4d686 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 ffc448eb54f5ba80d4212c1e870cdb92b0f709fa git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 8e66c5969acd859ba72fb0a7fa895623fc1b3769 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 e2f5529b0016db7d34f411408607f5cf395a542e git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 30992fe39e65589ed8e000425e088fa74994b811 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4cf476ced45d7f12df30a68e833b263e7a2202d1 ecc7253683a3c55caa868ce0ee530fcb0044bd3c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 5.11","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.11 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.222 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.189 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.158 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.112 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.54 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.8 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"98287","cve":"CVE-2026-98287","epss":"0.001800000","percentile":"0.069200000","score_date":"2026-10-06","updated_at":"2026-10-07 00:14:55"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/atm/pppoatm.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"208ccc4d08b1897451e9ba01c016bf93ff107966","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"},{"lessThan":"e6cd1bba7d113c15c00ac63671213a096fe4d686","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"},{"lessThan":"ffc448eb54f5ba80d4212c1e870cdb92b0f709fa","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"},{"lessThan":"8e66c5969acd859ba72fb0a7fa895623fc1b3769","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"},{"lessThan":"e2f5529b0016db7d34f411408607f5cf395a542e","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"},{"lessThan":"30992fe39e65589ed8e000425e088fa74994b811","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"},{"lessThan":"ecc7253683a3c55caa868ce0ee530fcb0044bd3c","status":"affected","version":"4cf476ced45d7f12df30a68e833b263e7a2202d1","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/atm/pppoatm.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"5.11"},{"lessThan":"5.11","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.222","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.189","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.158","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.112","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.54","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.8","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.222","versionStartIncluding":"5.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.189","versionStartIncluding":"5.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.158","versionStartIncluding":"5.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.112","versionStartIncluding":"5.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.54","versionStartIncluding":"5.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.8","versionStartIncluding":"5.11","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3","versionStartIncluding":"5.11","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\npppoatm: ensure a writable skb header and linear data\n\nIn pppoatm_send(), LLC encapsulation checks whether there is sufficient\nheadroom for the 4-byte LLC header, but does not ensure that the skb header\nis writable.\n\nNormal transmit packets passing through ppp_start_xmit() have their header\nunshared via skb_cow_head(). However, packets can also reach pppoatm_send()\nvia PPP channel bridging (PPPIOCBRIDGECHAN) without going through\nppp_start_xmit().\n\nUse skb_cow_head() to ensure both sufficient headroom and a writable\nheader before pushing the LLC header.\n\nWhile at it:\n- Call pskb_may_pull(skb, 1) before inspecting skb->data[0] to prevent\n  out-of-bounds reads on zero-length or non-linear frames (e.g. from\n  bridging).\n- Defer SC_COMP_PROT protocol compression until after pppoatm_may_send()\n  succeeds. This eliminates the temporary skb allocation on admission failure\n  and completely removes the fragile \"undo\" heuristic at the nospace label,\n  avoiding any risk of reading uninitialized headroom or performing an\n  unbalanced skb_push()."}],"providerMetadata":{"dateUpdated":"2026-10-19T09:16:58.585Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/208ccc4d08b1897451e9ba01c016bf93ff107966"},{"url":"https://git.kernel.org/stable/c/e6cd1bba7d113c15c00ac63671213a096fe4d686"},{"url":"https://git.kernel.org/stable/c/ffc448eb54f5ba80d4212c1e870cdb92b0f709fa"},{"url":"https://git.kernel.org/stable/c/8e66c5969acd859ba72fb0a7fa895623fc1b3769"},{"url":"https://git.kernel.org/stable/c/e2f5529b0016db7d34f411408607f5cf395a542e"},{"url":"https://git.kernel.org/stable/c/30992fe39e65589ed8e000425e088fa74994b811"},{"url":"https://git.kernel.org/stable/c/ecc7253683a3c55caa868ce0ee530fcb0044bd3c"}],"title":"pppoatm: ensure a writable skb header and linear data","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98287","datePublished":"2026-10-06T08:45:47.998Z","dateReserved":"2026-09-25T10:25:14.336Z","dateUpdated":"2026-10-19T09:16:58.585Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-06 09:18:18","lastModifiedDate":"2026-10-19 10:18:30","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"98287","Ordinal":"1","Title":"pppoatm: ensure a writable skb header and linear data","CVE":"CVE-2026-98287","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98287","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\npppoatm: ensure a writable skb header and linear data\n\nIn pppoatm_send(), LLC encapsulation checks whether there is sufficient\nheadroom for the 4-byte LLC header, but does not ensure that the skb header\nis writable.\n\nNormal transmit packets passing through ppp_start_xmit() have their header\nunshared via skb_cow_head(). However, packets can also reach pppoatm_send()\nvia PPP channel bridging (PPPIOCBRIDGECHAN) without going through\nppp_start_xmit().\n\nUse skb_cow_head() to ensure both sufficient headroom and a writable\nheader before pushing the LLC header.\n\nWhile at it:\n- Call pskb_may_pull(skb, 1) before inspecting skb->data[0] to prevent\n  out-of-bounds reads on zero-length or non-linear frames (e.g. from\n  bridging).\n- Defer SC_COMP_PROT protocol compression until after pppoatm_may_send()\n  succeeds. This eliminates the temporary skb allocation on admission failure\n  and completely removes the fragile \"undo\" heuristic at the nospace label,\n  avoiding any risk of reading uninitialized headroom or performing an\n  unbalanced skb_push().","Type":"Description","Title":"pppoatm: ensure a writable skb header and linear data"}]}}}