Erik Zhang releases Neo N3 v3.10.2, patches multisig witness verification bypass

The patch closes a spot in how that test was utilized. Neo N3’s multisig validation logic included a number of code paths to examine a multisig script.
A type of paths totally decoded every public key, a course of that might instantly reject any key that was not a legitimate level on the elliptic curve.
A second path checked solely the script’s structural form (i.e., the right byte lengths and the right variety of keys) with out performing the cryptographic decode. A script containing a malformed public key may due to this fact cross the second path and fail the primary, leaving the 2 paths in disagreement about whether or not the script was legitimate.
The inconsistency was not unknown. The habits had been documented in Neo’s personal check suite since 2024, when Neo SPCC developer Anna Shaleva ported new witness verification code from NeoGo to the C# reference node. A check added in that PR flagged the naked IsMultiSigContract overload as “unfortunate” for skipping key decoding, however handled the end result as anticipated habits fairly than a defect.
The repair resolves it. Now, all paths by means of the validation logic pressure full key decoding earlier than classifying a script as a legitimate multisig contract.
Repair and check protection
The change is a small edit to src/Neo/SmartContract/Helper.cs. The repair decodes the important thing each time, so each path that inspects a multisig script now runs the identical test.
The commit provides two new assessments and updates one current check.
The primary new check feeds a multisig script with a damaged public key to all three validation paths and confirms every one rejects it.
The second builds a full transaction with a damaged multisig witness and confirms the community refuses it. That check runs twice, as soon as with the signer’s handle matching the witness and as soon as with a mismatch, overlaying the “mismatched witness hashes” case within the launch notes.
The up to date check, TestIsMultiSigContract_WrongCurve, beforehand anticipated the shortcut path to simply accept scripts with invalid keys. It now expects all three paths to reject them.
Jimmy Liao, a Neo core developer and founding father of R3E Community, described the discharge on X:
Neo N3 v3.10.2 — safety launch. Fixes a witness-verification bypass from inconsistent public-key validation between `IsMultiSigContract` overloads. Keys are actually validated earlier than multisig classification.
No identified exploit
No formal safety advisory was revealed alongside the discharge. Moreover, neither the discharge notes nor the commit message describe any confirmed exploitation on Neo N3 MainNet.
Node operators and infrastructure suppliers working Neo N3 ought to replace to v3.10.2.
The total launch could be discovered on the hyperlink beneath:
https://github.com/neo-project/neo/releases/tag/v3.10.2





