Demystifying and Detecting Cryptographic Defects in Ethereum Smart Contracts
<|reference_start|>Demystifying and Detecting Cryptographic Defects in Ethereum Smart Contracts: Ethereum has officially provided a set of system-level cryptographic APIs to enhance smart contracts with cryptographic capabilities. These APIs have been utilized in over 10% of Ethereum transactions, motivating developers to implement various on-chain cryptographic tasks, such as digital signatures. However, since developers may not always be cryptographic experts, their ad-hoc and potentially defective implementations could compromise the theoretical guarantees of cryptography, leading to real-world security issues. To mitigate this threat, we conducted the first study aimed at demystifying and detecting cryptographic defects in smart contracts. Through the analysis of 2,406 real-world security reports, we defined nine types of cryptographic defects in smart contracts with detailed descriptions and practical detection patterns. Based on this categorization, we proposed CrySol, a fuzzing-based tool to automate the detection of cryptographic defects in smart contracts. It combines transaction replaying and dynamic taint analysis to extract fine-grained crypto-related semantics and employs crypto-specific strategies to guide the test case generation process. Furthermore, we collected a large-scale dataset containing 25,745 real-world crypto-related smart contracts and evaluated CrySol's effectiveness on it. The result demonstrated that CrySol achieves an overall precision of 95.4% and a recall of 91.2%. Notably, CrySol revealed that 5,847 (22.7%) out of 25,745 smart contracts contain at least one cryptographic defect, highlighting the prevalence of these defects.<|reference_end|>
@article{zhang2024demystifying,
    title={Demystifying and Detecting Cryptographic Defects in Ethereum Smart
  Contracts},
    author={Jiashuo Zhang, Yiming Shen, Jiachi Chen, Jianzhong Su, Yanlin Wang,
  Ting Chen, Jianbo Gao, Zhong Chen},
    journal={arXiv preprint arXiv:2408.04939},
    year={2024},
    archivePrefix={arXiv},
    eprint={2408.04939},
    primaryClass={cs.CR cs.SE}
}