Skip to content
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

fix: Ensure that input doesn't exceed the modulus, this time for real #37

Merged
merged 1 commit into from
Oct 31, 2023

Conversation

vadorovsky
Copy link
Contributor

Apparently, from_random_bytes doesn't do it reliably, so we have to use F::from_bigint. To be absolutely sure there will be no surprises, let's keep an explicit check.

Fixes: #36

light-poseidon/src/lib.rs Outdated Show resolved Hide resolved
@vadorovsky vadorovsky force-pushed the fix-modulus-check branch 2 times, most recently from 021c5f8 to 133f140 Compare October 30, 2023 20:35
Apparently, `from_random_bytes` doesn't do it reliably. An another
alternative we considered from ark-ff is `F::from_bigint`, but it
can panic...

Therefore, it's just better if we convert an array to `BigUint`
(and then to `F::BigInt`) and do the modulus check ourselves.

Fixes: #36
@vadorovsky vadorovsky merged commit 9746e79 into main Oct 31, 2023
@vadorovsky vadorovsky deleted the fix-modulus-check branch October 31, 2023 19:58
samkim-crypto pushed a commit to solana-labs/solana that referenced this pull request Nov 10, 2023
That new release contains an important change which prevents a
potential DDoS.

* Lightprotocol/light-poseidon#32

Invoking `from_bytes_be` function light-poseidon 0.1.1 inverts all
the inputs before performing a check whether their length exceeds
the modulus of the prime field. Therefore, it was prone to an
attack, where a mailicious user could submit long byte slices just
to DDoS the validator, being stuck on inverting large byte sequences.

The update and mentioned change fixes the same issue as #33363 aims
to address.

The new release contains also few other less important changes like:

* Lightprotocol/light-poseidon#37
* Lightprotocol/light-poseidon#38
* Lightprotocol/light-poseidon#39
mergify bot pushed a commit to solana-labs/solana that referenced this pull request Nov 28, 2023
That new release contains an important change which prevents a
potential DDoS.

* Lightprotocol/light-poseidon#32

Invoking `from_bytes_be` function light-poseidon 0.1.1 inverts all
the inputs before performing a check whether their length exceeds
the modulus of the prime field. Therefore, it was prone to an
attack, where a mailicious user could submit long byte slices just
to DDoS the validator, being stuck on inverting large byte sequences.

The update and mentioned change fixes the same issue as #33363 aims
to address.

The new release contains also few other less important changes like:

* Lightprotocol/light-poseidon#37
* Lightprotocol/light-poseidon#38
* Lightprotocol/light-poseidon#39

(cherry picked from commit 67f8daf)

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	programs/sbf/Cargo.lock
Lichtso pushed a commit to solana-labs/solana that referenced this pull request Nov 28, 2023
That new release contains an important change which prevents a
potential DDoS.

* Lightprotocol/light-poseidon#32

Invoking `from_bytes_be` function light-poseidon 0.1.1 inverts all
the inputs before performing a check whether their length exceeds
the modulus of the prime field. Therefore, it was prone to an
attack, where a mailicious user could submit long byte slices just
to DDoS the validator, being stuck on inverting large byte sequences.

The update and mentioned change fixes the same issue as #33363 aims
to address.

The new release contains also few other less important changes like:

* Lightprotocol/light-poseidon#37
* Lightprotocol/light-poseidon#38
* Lightprotocol/light-poseidon#39

(cherry picked from commit 67f8daf)
samkim-crypto pushed a commit to solana-labs/solana that referenced this pull request Dec 8, 2023
…4247)

chore: Update light-poseidon to 0.2.0 (#33923)

That new release contains an important change which prevents a
potential DDoS.

* Lightprotocol/light-poseidon#32

Invoking `from_bytes_be` function light-poseidon 0.1.1 inverts all
the inputs before performing a check whether their length exceeds
the modulus of the prime field. Therefore, it was prone to an
attack, where a mailicious user could submit long byte slices just
to DDoS the validator, being stuck on inverting large byte sequences.

The update and mentioned change fixes the same issue as #33363 aims
to address.

The new release contains also few other less important changes like:

* Lightprotocol/light-poseidon#37
* Lightprotocol/light-poseidon#38
* Lightprotocol/light-poseidon#39

(cherry picked from commit 67f8daf)

Co-authored-by: vadorovsky <[email protected]>
crossdev24 pushed a commit to crossdev24/solana that referenced this pull request Jun 24, 2024
That new release contains an important change which prevents a
potential DDoS.

* Lightprotocol/light-poseidon#32

Invoking `from_bytes_be` function light-poseidon 0.1.1 inverts all
the inputs before performing a check whether their length exceeds
the modulus of the prime field. Therefore, it was prone to an
attack, where a mailicious user could submit long byte slices just
to DDoS the validator, being stuck on inverting large byte sequences.

The update and mentioned change fixes the same issue as #33363 aims
to address.

The new release contains also few other less important changes like:

* Lightprotocol/light-poseidon#37
* Lightprotocol/light-poseidon#38
* Lightprotocol/light-poseidon#39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

from_random_bytes doesn't check the input and modulus reliably
2 participants