Secure validation and witnesses, restore standalone builds, optimize renaming - #6
Merged
Merged
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem and outcome
The decompiler executed supplied JavaScript inside Node VM contexts during validation, treated export shapes or simultaneous failures as equivalence, and generated witnesses before reconstruction changed output bytes. Remote requests and weight tensor dimensions were unbounded. A fresh Rust checkout did not build because its manifest depended on an absent parent workspace.
This change removes input execution, fixes artifact verification, bounds remote and model inputs, repairs standalone builds, and reduces repeated string allocation in renaming.
Changes
functionallyEquivalent: null; runnable mode preserves bytes and rejects unproven edits.Measurements
Node v24.19.0, Linux x64, AMD EPYC 9V74. Two warmups, seven measured runs, baseline commit
c6ca63020687487bf0c07dc43714f10d1996d0b4. Harness asserts exact baseline and independently expected output equality.These are edit-dense microbenchmarks, not whole-decompiler speedups or accuracy results. Single-name replacement improved 1.49x to 1.72x on the same fixtures. The Rust parser measured 14.568 to 14.812 ms for 1 MB and 13,720 declarations; no Rust speedup is claimed.
Local validation
cargo check --locked --features neuralpasses.ce245b91c4c4d5593a967836f869d7b16ca6c767.Research and review evidence
Full review, threat model, scanner triage, audit provenance, benchmarks and reproduction
ADR-138
Research covers CASCADE, JsDeObsBench, JSIMPLIFIER and the August 2026 BinMirror paper. The former unsupported accuracy comparison has been removed: no common held out evaluation establishes a SOTA ranking. Cryptographic hashes are integrity records, not semantic or authenticity proofs.
Compatibility and residual risks
Legacy Node witnesses must be regenerated. Arbitrary URL inputs now fail; pass separately downloaded local files instead. Existing output files are never overwritten and failed writes can leave partial output. Runnable mode withholds heuristic transformations. General readability reconstruction still lacks binding-aware AST guarantees and may change behavior.
Local inputs and regex processing require service-level worker quotas. A caller-owned directory is necessary against concurrent filesystem manipulation. The copied monorepo CLI is not fully packaged in this checkout. ONNX/GPU inference and external behavioral corpora were not executed. Transitive bincode maintenance requires upstream migration.
Merge and rollback
User requested implementation, detailed PR and merge. Merge only after the applicable checks pass and the remote head is verified. Revert the PR as a unit for rollback; do not silently reenable unsafe input execution or downgrade witness verification.
Remote CI result
Security and correctness run 34432853315 passed on head
ee15b1bc0f66f515d3086d502d2db6388c8647ed: Node 22, Node 24 and Rust jobs all succeeded, including audits, builds and benchmark compilation.