Hi Team,

We are writing to report a potential security issue about the implementation of Elgamal Encryption in Cryptopp.
 
Specifically, we cloned Cryptopp-8.9 from [cryptopp.com](http://cryptopp.com/) on February 1, 2024 and analyzed the source code of the Elgamal encryption scheme (more precisely, [elgamal.h](https://github.com/weidai11/cryptopp/blob/master/elgamal.h)). Based on our analysis, its decryption implementation (Line 78 in [elgamal.h](https://github.com/weidai11/cryptopp/blob/master/elgamal.h#L78)}) is vulnerable to fault injection.

As you may know, Rowhammer is a software-induced DRAM fault, which can induce bit flips in main memory that runs a commodity system. In our attack scenario, a malicious user process co-resides in the same system with a victim process that runs the Elgamal decryption of Cryptopp. As both processes share the main memory, the adversary can induce bit flips to the secret key before it is used by the victim to decrypt a ciphertext, resulting in a faulty decryption message. With enough faulty decryption messages released, the adversary can recover/leak the secret key. For more details of the analysis and possible countermeasures, they are provided in the attached pdf  [Vulnerability_report.pdf](https://github.com/weidai11/cryptopp/files/14326503/Vulnerability_report.pdf).

Prior to this report, we have reported similar vulnerabilities in RSA encryption and EdDSA signature schemes implemented in WolfSSL. Its security team have acknowledged our findings, fixed RSA encryption via a [commit](https://github.com/wolfSSL/wolfssl/commit/de4a6f9e00f6fbcaa7e20ed7bd89b5d50179e634) and EdDSA signature via another [commit](https://github.com/wolfSSL/wolfssl/commit/c8d0bb0bd8fcd3dd177ec04e9a659a006df51b73). Before our reports to WolfSSL, RSA signature in both WolfSSL and OpenSSL has been proven to be vulnerable to Rowhammer-based attacks. WolfSSL tracked the RSA signature vulnerability via CVE-2019-19962. OpenSSL fixed it by a [commit](https://github.com/openssl/openssl/pull/7225/commits/02534c1ee3e84a1d6c59a887a67bd5ee81bcf6cf). 

If you have any question or need more details, please let us know. We are looking forward to your reply. Thank you.

Best Regards,

Junkai Liang (Peking University)

Zhi Zhang (The University of Western Australia)

Xin Zhang (Peking University)

Qingni Shen (Peking University)
Leak the Secret Key of Elgamal Encryption in Cryptopp via Rowhammer
This is a GitHub Issue
repo:cryptopp
owner:weidai11
Title : Leak the Secret Key of Elgamal Encryption in Cryptopp via Rowhammer
Issue date:

--- start body ---
Hi Team,

We are writing to report a potential security issue about the implementation of Elgamal Encryption in Cryptopp.
 
Specifically, we cloned Cryptopp-8.9 from [cryptopp.com](http://cryptopp.com/) on February 1, 2024 and analyzed the source code of the Elgamal encryption scheme (more precisely, [elgamal.h](https://github.com/weidai11/cryptopp/blob/master/elgamal.h)). Based on our analysis, its decryption implementation (Line 78 in [elgamal.h](https://github.com/weidai11/cryptopp/blob/master/elgamal.h#L78)}) is vulnerable to fault injection.

As you may know, Rowhammer is a software-induced DRAM fault, which can induce bit flips in main memory that runs a commodity system. In our attack scenario, a malicious user process co-resides in the same system with a victim process that runs the Elgamal decryption of Cryptopp. As both processes share the main memory, the adversary can induce bit flips to the secret key before it is used by the victim to decrypt a ciphertext, resulting in a faulty decryption message. With enough faulty decryption messages released, the adversary can recover/leak the secret key. For more details of the analysis and possible countermeasures, they are provided in the attached pdf  [Vulnerability_report.pdf](https://github.com/weidai11/cryptopp/files/14326503/Vulnerability_report.pdf).

Prior to this report, we have reported similar vulnerabilities in RSA encryption and EdDSA signature schemes implemented in WolfSSL. Its security team have acknowledged our findings, fixed RSA encryption via a [commit](https://github.com/wolfSSL/wolfssl/commit/de4a6f9e00f6fbcaa7e20ed7bd89b5d50179e634) and EdDSA signature via another [commit](https://github.com/wolfSSL/wolfssl/commit/c8d0bb0bd8fcd3dd177ec04e9a659a006df51b73). Before our reports to WolfSSL, RSA signature in both WolfSSL and OpenSSL has been proven to be vulnerable to Rowhammer-based attacks. WolfSSL tracked the RSA signature vulnerability via CVE-2019-19962. OpenSSL fixed it by a [commit](https://github.com/openssl/openssl/pull/7225/commits/02534c1ee3e84a1d6c59a887a67bd5ee81bcf6cf). 

If you have any question or need more details, please let us know. We are looking forward to your reply. Thank you.

Best Regards,

Junkai Liang (Peking University)

Zhi Zhang (The University of Western Australia)

Xin Zhang (Peking University)

Qingni Shen (Peking University)
--- end body ---
