-
Notifications
You must be signed in to change notification settings - Fork 23
chore: sync quickjs-ng release v0.15.0 #742
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,5 @@ | ||
| QUICKJS_NG_REPO="quickjs-ng/quickjs" | ||
| QUICKJS_NG_TAG="v0.14.0" | ||
| QUICKJS_NG_TARBALL_URL="https://api.github.com/repos/quickjs-ng/quickjs/tarball/v0.14.0" | ||
| QUICKJS_NG_RELEASE_URL="https://github.com/quickjs-ng/quickjs/releases/tag/v0.14.0" | ||
| QUICKJS_NG_RELEASED_AT="2026-04-11T07:37:57Z" | ||
| QUICKJS_NG_TAG="v0.15.0" | ||
| QUICKJS_NG_TARBALL_URL="https://api.github.com/repos/quickjs-ng/quickjs/tarball/v0.15.0" | ||
| QUICKJS_NG_RELEASE_URL="https://github.com/quickjs-ng/quickjs/releases/tag/v0.15.0" | ||
| QUICKJS_NG_RELEASED_AT="2026-05-21T20:51:23Z" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,96 @@ | ||
| # Security Policy | ||
|
|
||
| ## Reporting a Vulnerability | ||
|
|
||
| Please report security vulnerabilities through GitHub's [private vulnerability | ||
| reporting](https://github.com/quickjs-ng/quickjs/security/advisories/new) | ||
| feature, **only if** your report meets the rules below. Reports that do not | ||
| meet these rules should be filed as regular public issues instead. | ||
|
|
||
| ## Out of Scope | ||
|
|
||
| **Bytecode hardening is out of scope.** QuickJS bytecode is not designed for | ||
| adversarial input. Loading untrusted bytecode (e.g. via `JS_ReadObject` with | ||
| `JS_READ_OBJ_BYTECODE`) is equivalent to executing untrusted native code, and | ||
| crashes, memory corruption, or sandbox escapes resulting from malformed or | ||
| malicious bytecode are not considered security vulnerabilities. Only load | ||
| bytecode you produced yourself or obtained from a trusted source. See the | ||
| documentation for `JS_READ_OBJ_BYTECODE` and `JS_READ_OBJ_SAB` for details. | ||
|
|
||
| ## Rules for Private Reports | ||
|
|
||
| Private reporting exists to protect users from issues an attacker could not | ||
| otherwise discover. | ||
|
|
||
| **AI-detected bugs are by definition not secret.** If a publicly available | ||
| tool found a bug by reading our public source, anyone else running the same | ||
| tool will find the same bug. Filing such reports privately just produces | ||
| duplicate work since previous reports of the same issue are not visible. | ||
| The right place for these is a public issue, where duplicates are visible and | ||
| the fix discussion is shared. | ||
|
|
||
| AI tools are welcome, but use them to add value on top of what the tool | ||
| produced. Read the code, confirm the bug, write a patch, write a test. A | ||
| "drive-by" forward of a tool's raw output, with no real understanding behind | ||
| it, is not a useful report. | ||
|
|
||
| Before submitting a private report, ensure all of the following: | ||
|
|
||
| - **You have manually verified the bug.** You understand the code path, you | ||
| have confirmed the issue is real, and you can explain it in your own words | ||
| without referring back to a tool's output. Reports that you cannot defend | ||
| on your own should not be filed. | ||
|
|
||
| - **You have a working reproducer.** Attach a minimal reproducer (a JS file, | ||
| or a short C snippet against the public API) that triggers the bug on a | ||
| recent `master` commit. If you cannot produce one, the report should not be | ||
| filed privately. | ||
|
|
||
| - **Impact is concrete and verifiable.** State what an attacker can actually | ||
| do (e.g. "out-of-bounds read of N bytes from the heap reachable from any | ||
| script"), not speculative consequences. Do not enumerate hypothetical | ||
| downstream impact. | ||
|
|
||
| - **The report is concise and in plain text.** No multi-page write-ups, no | ||
| Markdown decorations, no boilerplate severity tables. Lead with the | ||
| affected file and function, the trigger, and the impact. If a triager has | ||
| to scroll to find what is broken, the report is too long. | ||
|
|
||
| - **The threat model matches QuickJS.** The bug must be reachable from | ||
| untrusted JavaScript source running in an otherwise trusted embedder. Bugs | ||
| that require loading untrusted bytecode, passing crafted values through the | ||
| C API, or otherwise compromiing the embedder are out of scope (see above). | ||
|
|
||
| - **A proposed fix is welcome, and must be tested.** If you include a patch, | ||
| it should compile, pass the existing test suite, and include a regression | ||
| test. Untested patches generated by a tool are worse than no patch. | ||
|
|
||
| Reports that do not meet these rules may be closed without detailed response | ||
| and asked to be refiled publicly. | ||
|
|
||
| ## CVEs | ||
|
|
||
| Not every security-relevant fix in QuickJS requires a CVE. CVE identifiers | ||
| exist to help downstream consumers track issues that meaningfully affect | ||
| their security posture, they are not a scoreboard, and inflating the count | ||
| with marginal or speculative findings makes the catalog less useful for the | ||
| people who actually rely on it. | ||
|
|
||
| We **mnight** request a CVE when an issue: | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
|
||
| - Is reachable from untrusted JavaScript running in an otherwise trusted | ||
| embedder (matches the threat model in "Rules for Private Reports"), | ||
| - Has a concrete, demonstrated high impact (memory corruption, out-of-bounds | ||
| access, etc.), and | ||
| - Affects a released version that downstream users are likely to be running. | ||
|
|
||
| We will generally **not** request a CVE for: | ||
|
|
||
| - Crashes or assertion failures that require malicious bytecode, crafted C | ||
| API input, or other embedder compromise (out of scope, see above). | ||
| - Bugs found purely by running a publicly available AI tool against the code, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| with no additional analysis. By definition, anyone else can run the same | ||
| tool and find the same thing. | ||
| - Issues already discoverable from the public commit history or issue | ||
| tracker by the time the report arrives. | ||
|
|
||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: "compromiing" should be "compromising".