CVE-2026-31584

HIGHPre-NVD 7.87.8
EchelonGraph scoreMEDIUM confidence

Score 7.8 from GitHub Security Advisory (severity: HIGH) published 2026-04-24. the CNA's CVSS baseline 7.8; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: cna:linux, epss, ghsa
7.8EG
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS PROB: 0%CVSS: 7.8Exploit: None knownExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

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

media: mediatek: vcodec: fix use-after-free in encoder release path

The fops_vcodec_release() function frees the context structure (ctx) without first cancelling any pending or running work in ctx->encode_work. This creates a race window where the workqueue handler (mtk_venc_worker) may still be accessing the context memory after it has been freed.

Race condition:

CPU 0 (release path) CPU 1 (workqueue) --------------------- ------------------ fops_vcodec_release() v4l2_m2m_ctx_release() v4l2_m2m_cancel_job() // waits for m2m job "done" mtk_venc_worker() v4l2_m2m_job_finish() // m2m job "done" // BUT worker still running! // post-job_finish access: other ctx dereferences // UAF if ctx already freed // returns (job "done") kfree(ctx) // ctx freed

Root cause: The v4l2_m2m_ctx_release() only waits for the m2m job lifecycle (via TRANS_RUNNING flag), not the workqueue lifecycle. After v4l2_m2m_job_finish() is called, the m2m framework considers the job complete and v4l2_m2m_ctx_release() returns, but the worker function continues executing and may still access ctx.

The work is queued during encode operations via: queue_work(ctx->dev->encode_workqueue, &ctx->encode_work) The worker function accesses ctx->m2m_ctx, ctx->dev, and other ctx fields even after calling v4l2_m2m_job_finish().

This vulnerability was confirmed with KASAN by running an instrumented test module that widens the post-job_finish race window. KASAN detected:

BUG: KASAN: slab-use-after-free in mtk_venc_worker+0x159/0x180 Read of size 4 at addr ffff88800326e000 by task kworker/u8:0/12

Workqueue: mtk_vcodec_enc_wq mtk_venc_worker

Allocated by task 47: __kasan_kmalloc+0x7f/0x90 fops_vcodec_open+0x85/0x1a0

Freed by task 47: __kasan_slab_free+0x43/0x70 kfree+0xee/0x3a0 fops_vcodec_release+0xb7/0x190

Fix this by calling cancel_work_sync(&ctx->encode_work) before kfree(ctx). This ensures the workqueue handler is both cancelled (if pending) and synchronized (waits for any running handler to complete) before the context is freed.

Placement rationale: The fix is placed after v4l2_ctrl_handler_free() and before list_del_init(&ctx->list). At this point, all m2m operations are done (v4l2_m2m_ctx_release() has returned), and we need to ensure the workqueue is synchronized before removing ctx from the list and freeing it.

Note: The open error path does NOT need cancel_work_sync() because INIT_WORK() only initializes the work structure - it does not schedule it. Work is only scheduled later during device_run() operations.

CVSS v3
7.8
EG Score
7.8(medium)
EG Risk
40(Track)
EG Risk 40/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity78% × 45%
Exploitation0% × 40%
Automatability30% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
0%
EPSS %ILE
3%
KEV
Not listed

Published

April 24, 2026

Last Modified

August 5, 2026

Advisory Details (6)

Auto-updated Jun 4, 2026
No patch confirmed yet.
generic

media: mediatek: vcodec: fix use-after-free in encoder release path - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/f99353cd0e9f58bf17889049137b8d65fb44ebf1
generic

media: mediatek: vcodec: fix use-after-free in encoder release path - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/f1692337c6fa26e04f89b22a4d84bf5b7ada50d1
generic

media: mediatek: vcodec: fix use-after-free in encoder release path - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/a8a55913552aed45108525d1851c65e1db0cc25b
generic

media: mediatek: vcodec: fix use-after-free in encoder release path - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/9a9bdaf9dc42ccca50e53f82165292f74a365c11
generic

media: mediatek: vcodec: fix use-after-free in encoder release path - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/93d9a58961a9e09306857e999b3ee76aa4be67f0
generic

media: mediatek: vcodec: fix use-after-free in encoder release path - kernel/git/stable/linux.git - Linux kernel stable tree

https://git.kernel.org/stable/c/76e35091ffc722ba39b303e48bc5d08abb59dd56

Vendor Advisories for CVE-2026-31584(1)

These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.

Patch Availability(1)

Vendor / EcosystemFixed in / PatchReleasedSource
linuxKernel @ 6.6.136osv

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Affected Packages

(2 across 2 ecosystems)
Debian:13(1)
PackageVulnerable rangeFixed inDependents
linux6.12.38-1 ... 6.12.85-1~bpo12+1 (17 versions)6.12.85-1
Debian:14(1)
PackageVulnerable rangeFixed inDependents
linux6.12.100-1 ... 6.19~rc8-1~exp1 (129 versions)6.19.14-1

Weakness Classification(1)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

All Vendor Advisories

(18)

Data Freshness Timeline

(refreshed 5× in last 7d / 31× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

Showing the most recent 100 of 234 total refreshes for this CVE.

  1. 2026-09-13 16:47 UTCEPSS rescore
  2. 2026-09-12 15:01 UTCEPSS rescore
  3. 2026-09-11 14:52 UTCEPSS rescore
  4. 2026-09-10 09:34 UTCEPSS rescore
  5. 2026-09-08 22:00 UTCEPSS rescore
  6. 2026-09-07 16:01 UTCEPSS rescore
  7. 2026-09-06 13:47 UTCEPSS rescore
  8. 2026-09-06 13:47 UTCEPSS rescore
  9. 2026-09-04 05:06 UTCEPSS rescore
  10. 2026-09-04 03:16 UTCOSV refresh
  11. 2026-09-02 14:11 UTCEPSS rescore
  12. 2026-09-01 13:53 UTCEPSS rescore
  13. 2026-09-01 04:39 UTCEPSS rescore
  14. 2026-09-01 04:39 UTCEPSS rescore
  15. 2026-08-30 01:22 UTCEPSS rescore
  16. 2026-08-28 21:41 UTCEPSS rescore
  17. 2026-08-27 14:25 UTCEPSS rescore
  18. 2026-08-26 14:46 UTCEPSS rescore
  19. 2026-08-25 13:49 UTCEPSS rescore
  20. 2026-08-24 14:17 UTCEPSS rescore
  21. 2026-08-23 00:19 UTCEPSS rescore
  22. 2026-08-21 23:49 UTCEPSS rescore
  23. 2026-08-20 22:55 UTCEPSS rescore
  24. 2026-08-20 22:55 UTCEPSS rescore
  25. 2026-08-19 17:03 UTCEPSS rescore
Show 75 more
  1. 2026-08-18 13:48 UTCEPSS rescore
  2. 2026-08-17 14:52 UTCEG score recompute
  3. 2026-08-17 14:52 UTCVendor advisory
  4. 2026-08-17 14:52 UTCGHSA enrichment
  5. 2026-08-17 13:47 UTCEPSS rescore
  6. 2026-08-16 14:56 UTCEPSS rescore
  7. 2026-08-16 05:48 UTCEG score recompute
  8. 2026-08-16 05:48 UTCVendor advisory
  9. 2026-08-16 05:48 UTCGHSA enrichment
  10. 2026-08-16 02:14 UTCEPSS rescore
  11. 2026-08-15 01:30 UTCEPSS rescore
  12. 2026-08-14 15:29 UTCVendor advisory
  13. 2026-08-14 15:29 UTCGHSA enrichment
  14. 2026-08-14 04:08 UTCEG score recompute
  15. 2026-08-14 04:08 UTCVendor advisory
  16. 2026-08-14 04:08 UTCGHSA enrichment
  17. 2026-08-13 22:00 UTCEPSS rescore
  18. 2026-08-13 08:32 UTCVendor advisory
  19. 2026-08-13 08:32 UTCGHSA enrichment
  20. 2026-08-12 17:51 UTCEG score recompute
  21. 2026-08-12 17:51 UTCVendor advisory
  22. 2026-08-12 17:51 UTCGHSA enrichment
  23. 2026-08-12 13:50 UTCEPSS rescore
  24. 2026-08-11 16:42 UTCEG score recompute
  25. 2026-08-11 16:42 UTCVendor advisory
  26. 2026-08-11 16:41 UTCGHSA enrichment
  27. 2026-08-11 02:10 UTCEG score recompute
  28. 2026-08-11 02:10 UTCVendor advisory
  29. 2026-08-11 02:10 UTCGHSA enrichment
  30. 2026-08-11 00:00 UTCEPSS rescore
  31. 2026-08-10 14:01 UTCVendor advisory
  32. 2026-08-10 14:01 UTCGHSA enrichment
  33. 2026-08-10 02:02 UTCVendor advisory
  34. 2026-08-10 02:02 UTCGHSA enrichment
  35. 2026-08-09 14:41 UTCEG score recompute
  36. 2026-08-09 14:41 UTCVendor advisory
  37. 2026-08-09 14:41 UTCGHSA enrichment
  38. 2026-08-09 13:46 UTCEPSS rescore
  39. 2026-08-09 03:20 UTCEG score recompute
  40. 2026-08-09 03:20 UTCVendor advisory
  41. 2026-08-09 03:20 UTCGHSA enrichment
  42. 2026-08-08 16:37 UTCEPSS rescore
  43. 2026-08-08 11:17 UTCVendor advisory
  44. 2026-08-08 11:17 UTCGHSA enrichment
  45. 2026-08-07 23:56 UTCEG score recompute
  46. 2026-08-07 23:56 UTCVendor advisory
  47. 2026-08-07 23:56 UTCGHSA enrichment
  48. 2026-08-07 12:36 UTCEG score recompute
  49. 2026-08-07 12:36 UTCVendor advisory
  50. 2026-08-07 12:36 UTCGHSA enrichment
  51. 2026-08-06 13:46 UTCEPSS rescore
  52. 2026-08-06 11:25 UTCVendor advisory
  53. 2026-08-06 11:25 UTCGHSA enrichment
  54. 2026-08-05 23:58 UTCEG score recompute
  55. 2026-08-05 23:58 UTCVendor advisory
  56. 2026-08-05 23:58 UTCGHSA enrichment
  57. 2026-08-05 19:17 UTCEPSS rescore
  58. 2026-08-05 12:38 UTCEG score recompute
  59. 2026-08-05 12:38 UTCVendor advisory
  60. 2026-08-05 12:38 UTCGHSA enrichment
  61. 2026-08-04 15:10 UTCEPSS rescore
  62. 2026-08-04 10:38 UTCEPSS rescore
  63. 2026-08-03 21:03 UTCEG score recompute
  64. 2026-08-03 21:03 UTCVendor advisory
  65. 2026-08-03 21:03 UTCGHSA enrichment
  66. 2026-08-03 10:36 UTCEPSS rescore
  67. 2026-08-02 22:42 UTCVendor advisory
  68. 2026-08-02 22:42 UTCGHSA enrichment
  69. 2026-08-02 11:22 UTCEG score recompute
  70. 2026-08-02 11:22 UTCVendor advisory
  71. 2026-08-02 11:22 UTCGHSA enrichment
  72. 2026-08-02 02:27 UTCEPSS rescore
  73. 2026-08-01 04:16 UTCEPSS rescore
  74. 2026-07-30 16:27 UTCEPSS rescore
  75. 2026-07-30 01:30 UTCEPSS rescore

Frequently asked(5)

What is CVE-2026-31584?
CVE-2026-31584 is a high vulnerability published on April 24, 2026. In the Linux kernel, the following vulnerability has been resolved: media: mediatek: vcodec: fix use-after-free in encoder release path The fopsvcodecrelease() function frees the context structure (ctx) without first cancelling any pending or running work in ctx->encode_work. This creates a race…
When was CVE-2026-31584 disclosed?
CVE-2026-31584 was first published in the National Vulnerability Database on April 24, 2026, with the most recent update on August 5, 2026. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2026-31584 actively exploited?
CVE-2026-31584 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0% probability of exploitation in the next 30 days, which ranks it in the top 97.4% of all scored CVEs.
What is the CVSS score of CVE-2026-31584?
CVE-2026-31584 has a CVSS v4.0 base score of 7.8 (CNA self-assessment; NVD's own analysis pending).
How do I remediate CVE-2026-31584?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2026-31584, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-31584

Explore →

Is Your Infrastructure Affected by CVE-2026-31584?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.