The EC_POINT_* API functions accept invalid curve points and don't do
point verification.

Invalid curve points are one of the major implementation pitfalls in
ECC and can lead to attacks [1]. OpenSSL properly validates points in
the _oct2point functions, but I still find this risky. This looks like
an API behavior that could easily lead to desasters if someone not aware
of that behavior decided to implement a crypto protocol and use
OpenSSL's EC_ functions for it.

BoringSSL changed this recently [2]. They now always do a check with
EC_POINT_is_on_curve() when setting curve coordinates.

I would recommend doing a similar change in OpenSSL and thus make the
API more resistant to misuse that could lead to fatal security issues.

[1]
http://web-in-security.blogspot.dk/2015/09/practical-invalid-curve-attacks.html
[2]
https://boringssl.googlesource.com/boringssl/+/38feb990a183362397ebc62774cc07374d146c83%5E%21/#F0

_______________________________________________
openssl-bugs-mod mailing list
openssl-bugs-...@openssl.org
https://mta.openssl.org/mailman/listinfo/openssl-bugs-mod

_______________________________________________
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to