Title: [Vulnerability] nodejs/node: NULL Pointer Dereference / Memory Corruption · Issue #212 · spaceraccoon/vulnerability-spoiler-alert · GitHub
Open Graph Title: [Vulnerability] nodejs/node: NULL Pointer Dereference / Memory Corruption · Issue #212 · spaceraccoon/vulnerability-spoiler-alert
X Title: [Vulnerability] nodejs/node: NULL Pointer Dereference / Memory Corruption · Issue #212 · spaceraccoon/vulnerability-spoiler-alert
Description: Potential Security Vulnerability Detected Repository: nodejs/node Commit: d8ac301 Author: Junsu Han Date: 2026-05-28T04:56:05Z Commit Message deps: cherry-pick e807d4e379 from SQLite Backport the SQLite session extension fix for corrupt ...
Open Graph Description: Potential Security Vulnerability Detected Repository: nodejs/node Commit: d8ac301 Author: Junsu Han Date: 2026-05-28T04:56:05Z Commit Message deps: cherry-pick e807d4e379 from SQLite Backport the S...
X Description: Potential Security Vulnerability Detected Repository: nodejs/node Commit: d8ac301 Author: Junsu Han Date: 2026-05-28T04:56:05Z Commit Message deps: cherry-pick e807d4e379 from SQLite Backport the S...
Opengraph URL: https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/212
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Vulnerability] nodejs/node: NULL Pointer Dereference / Memory Corruption","articleBody":"## Potential Security Vulnerability Detected\n\n**Repository:** [nodejs/node](https://github.com/nodejs/node)\n**Commit:** [d8ac301](https://github.com/nodejs/node/commit/d8ac30125b39938789630cd307d89c9defec6a9b)\n**Author:** Junsu Han\n**Date:** 2026-05-28T04:56:05Z\n\n### Commit Message\n```\ndeps: cherry-pick e807d4e379 from SQLite\n\nBackport the SQLite session extension fix for corrupt changesets that\nomit old values for primary-key columns. This avoids passing NULL to\nsessionBindValue() while applying UPDATE changesets.\n\nRefs: https://sqlite.org/src/info/e807d4e3798efd53\nSigned-off-by: junius-sec \u003csksch323@naver.com\u003e\nPR-URL: https://github.com/nodejs/node/pull/63525\nRefs: https://hackerone.com/reports/3736889\nRefs: https://github.com/sqlite/sqlite/commit/b869ed6b067d623cb1383549f2a18aa35508385d\nReviewed-By: Antoine du Hamel \u003cduhamelantoine1995@gmail.com\u003e\nReviewed-By: Chemi Atlow \u003cchemi@atlow.co.il\u003e\n```\n\n### Pull Request\n**PR:** [#63525 - deps: cherry-pick e807d4e379 from SQLite](https://github.com/nodejs/node/pull/63525)\n**Labels:** author ready, needs-ci, dependencies, sqlite\n\n**Description:**\nBackport the SQLite session extension fix for malformed changesets that omit\r\nold values for primary-key columns. The upstream fix avoids passing NULL to\r\nsessionBindValue() while applying UPDATE changesets.\r\n\r\nThis adds a regression test for `DatabaseSync#applyChangeset()` to verify that\r\nthe malformed changeset returns `SQLITE_CORRUPT` instead of crashing.\r\n\r\nRefs: https://sqlite.org/src/info/e807d4e3798efd53\r\nRefs: https://hackerone.com/reports/3736889\r\nRefs: https://github.com/sqlite/sqlite/...\n\n### Analysis\n\n**Vulnerability Type:** NULL Pointer Dereference / Memory Corruption\n**Severity:** High\n\n### Description\nThe SQLite session extension had a bug where applying a malformed/corrupt UPDATE changeset that omits old values for primary-key columns would pass NULL to sessionBindValue(). Before the patch, the condition `p-\u0026gt;abPK\\[i\\] || (bPatchset==0 \u0026\u0026 pOld)` would evaluate to true for primary-key columns regardless of whether pOld was NULL, causing NULL to be passed to sessionBindValue() which could crash the process. The fix adds a NULL check on pOld first: `pOld \u0026\u0026 (p-\u0026gt;abPK\\[i\\] || bPatchset==0)`, ensuring NULL is never passed.\n\n### Affected Code\n```\nif( p-\u003eabPK[i] || (bPatchset==0 \u0026\u0026 pOld) ){\n rc = sessionBindValue(pUp, i*2+2, pOld);\n}\n```\n\n### Proof of Concept\n```\nconst { DatabaseSync } = require('node:sqlite');\nconst database = new DatabaseSync(':memory:');\ndatabase.exec('CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c, d)');\n// Malformed changeset that omits old values for primary-key columns\nconst changeset = Buffer.from('540401000000743100177e0072286565286565', 'hex');\n// Before patch: crashes Node.js process due to NULL dereference in sessionBindValue\n// After patch: throws 'database disk image is malformed' error (SQLITE_CORRUPT)\ndatabase.applyChangeset(changeset);\n```\n\n---\n*This issue was automatically created by [Vulnerability Spoiler Alert](https://github.com/spaceraccoon/vulnerability-spoiler-alert-action).*\n*Detected at: 2026-05-28T05:10:24.073Z*\n","author":{"url":"https://github.com/github-actions[bot]","@type":"Person","name":"github-actions[bot]"},"datePublished":"2026-05-28T05:10:24.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/212/vulnerability-spoiler-alert/issues/212"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:48073098-3c60-3018-37a1-4ae9acd5a6a8 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A68C:30DA77:28E6E26:3697595:6A655B0D |
| html-safe-nonce | bfa93505e735293bf6b6e0b010b9ac50b1a308ea0ac37a7c5bdd42f4f7119324 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNjhDOjMwREE3NzoyOEU2RTI2OjM2OTc1OTU6NkE2NTVCMEQiLCJ2aXNpdG9yX2lkIjoiODE4NTk3MTc4NDA2MjE2MzcyNSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 95a3d55f5b53d8ede954b2128f227695083c5b07cb6635908ab371df99da09d5 |
| hovercard-subject-tag | issue:4537885899 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/spaceraccoon/vulnerability-spoiler-alert/212/issue_layout |
| twitter:image | https://opengraph.githubassets.com/1a17e25a773e2dc666f645c22cb12aa8d8a43537129892ffea429374c230e92a/spaceraccoon/vulnerability-spoiler-alert/issues/212 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/1a17e25a773e2dc666f645c22cb12aa8d8a43537129892ffea429374c230e92a/spaceraccoon/vulnerability-spoiler-alert/issues/212 |
| og:image:alt | Potential Security Vulnerability Detected Repository: nodejs/node Commit: d8ac301 Author: Junsu Han Date: 2026-05-28T04:56:05Z Commit Message deps: cherry-pick e807d4e379 from SQLite Backport the S... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | github-actions[bot] |
| hostname | github.com |
| expected-hostname | github.com |
| None | 52c76df668885aaff23b50bdca1fa1ea44ac9c1553e888ebc70ff1e4daa4625b |
| turbo-cache-control | no-preview |
| go-import | github.com/spaceraccoon/vulnerability-spoiler-alert git https://github.com/spaceraccoon/vulnerability-spoiler-alert.git |
| octolytics-dimension-user_id | 18413849 |
| octolytics-dimension-user_login | spaceraccoon |
| octolytics-dimension-repository_id | 1154474130 |
| octolytics-dimension-repository_nwo | spaceraccoon/vulnerability-spoiler-alert |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1154474130 |
| octolytics-dimension-repository_network_root_nwo | spaceraccoon/vulnerability-spoiler-alert |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 309153364422b3c499922d1a2a6404910a58ed8e |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width