skip to main content
10.1145/3551349.3560428acmotherconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
research-article

Reentrancy Vulnerability Detection and Localization: A Deep Learning Based Two-phase Approach

Published: 05 January 2023 Publication History

Abstract

Smart contracts have been widely and rapidly used to automate financial and business transactions together with blockchains, helping people make agreements while minimizing trusts. With millions of smart contracts deployed on blockchain, various bugs and vulnerabilities in smart contracts have emerged. Following the rapid development of deep learning, many recent studies have used deep learning for vulnerability detection to conduct security checks before deploying smart contracts. These approaches show effective results on detecting whether a smart contract is vulnerable or not whereas their results on locating suspicious statements responsible for the detected vulnerability are still unsatisfactory.
To address this problem, we propose a deep learning based two-phase smart contract debugger for reentrancy vulnerability, one of the most severe vulnerabilities, named as ReVulDL: Reentrancy Vulnerability Detection and Localization. ReVulDL integrates the vulnerability detection and localization into a unified debugging pipeline. For the detection phase, given a smart contract, ReVulDL uses a graph-based pre-training model to learn the complex relationships in propagation chains for detecting whether the smart contract contains a reentrancy vulnerability. For the localization phase, if a reentrancy vulnerability is detected, ReVulDL utilizes interpretable machine learning to locate the suspicious statements in smart contract to provide interpretations of the detected vulnerability. Our large-scale empirical study on 47,398 smart contracts shows that ReVulDL achieves promising results in detecting reentrancy vulnerabilities (e.g., outperforming 16 state-of-the-art vulnerability detection approaches) and locating vulnerable statements (e.g., 70.38% of the vulnerable statements are ranked within Top-10).

References

[1]
Hervé Abdi. 2007. The Bonferonni and Šidák Corrections for Multiple Comparisons. Encyclopedia of measurement and statistics 3 (2007), 103–107.
[2]
Miltiadis Allamanis, Marc Brockschmidt, and Mahmoud Khademi. 2017. Learning to represent programs with graphs. arXiv preprint arXiv:1711.00740(2017).
[3]
Uri Alon, Shaked Brody, Omer Levy, and Eran Yahav. 2018. code2seq: Generating Sequences from Structured Representations of Code. In Proceedings of the International Conference on Learning Representations.
[4]
Karthikeyan Bhargavan, Antoine Delignat-Lavaud, Cédric Fournet, Anitha Gollamudi, Georges Gonthier, Nadim Kobeissi, Natalia Kulatova, Aseem Rastogi, Thomas Sibut-Pinote, Nikhil Swamy, 2016. Formal verification of smart contracts: Short paper. In Proceedings of the 2016 ACM workshop on programming languages and analysis for security. 91–96.
[5]
Umang Bhatt, Alice Xiang, Shubham Sharma, Adrian Weller, Ankur Taly, Yunhan Jia, Joydeep Ghosh, Ruchir Puri, José MF Moura, and Peter Eckersley. 2020. Explainable machine learning in deployment. In Proceedings of the 2020 conference on fairness, accountability, and transparency. 648–657.
[6]
B. Boehmke and B. Greenwell. 2019. Interpretable Machine Learning. Hands-On Machine Learning with R.
[7]
M. Brenner, K. Rohloff, J. Bonneau, A. Miller, Pya Ryan, V. Teague, A. Bracciali, M. Sala, F. Pintore, and M. Jakobsson. 2017. [Defining the Ethereum Virtual Machine for Interactive Theorem Provers. 10.1007/978-3-319-70278-0, Chapter 33 (2017), 520–535.
[8]
Luca Buratti, Saurabh Pujar, Mihaela Bornea, Scott McCarley, Yunhui Zheng, Gaetano Rossiello, Alessandro Morari, Jim Laredo, Veronika Thost, Yufan Zhuang, 2020. Exploring software naturalness through neural language models. arXiv preprint arXiv:2006.12641(2020).
[9]
Vitalik Buterin 2013. Ethereum white paper. GitHub repository 1(2013), 22–23.
[10]
David Chandler. 1987. Introduction to modern statistical. Mechanics. Oxford University Press, Oxford, UK 5 (1987).
[11]
Angelos Chatzimparmpas, Rafael Messias Martins, Ilir Jusufi, Kostiantyn Kucher, Fabrice Rossi, and Andreas Kerren. 2020. The state of the art in enhancing trust in machine learning models with the use of visualizations. In Computer Graphics Forum, Vol. 39. Wiley Online Library, 713–756.
[12]
Jiachi Chen, Xin Xia, David Lo, John Grundy, Xiapu Luo, and Ting Chen. 2022. Defining Smart Contract Defects on Ethereum. IEEE Transactions on Software Engineering (TSE) 48, 1 (2022), 327–345. https://doi.org/10.1109/TSE.2020.2989002
[13]
Weili Chen, Mingjie Ma, Yongjian Ye, Zibin Zheng, and Yuren Zhou. 2018. IoT service based on jointcloud blockchain: The case study of smart traveling. In Proceedings of the 2018 IEEE Symposium on service-oriented system engineering (SOSE). IEEE, 216–221.
[14]
Gregory W. Corder and Dale I. Foreman. 2010. Nonparametric Statistics for Non-Statisticians: A Step-by-Step Approach. Vol. 78. International Statistical Review. 451–452 pages.
[15]
Chris Dannen. 2017. Introducing Ethereum and solidity. Vol. 318. Springer.
[16]
Vidroha Debroy, W. Eric Wong, Xiaofeng Xu, and Byoungju Choi. 2010. A Grouping-Based Strategy to Improve the Effectiveness of Fault Localization Techniques. In Proceedings of the International Conference on Quality Software (QSIC). 13–22.
[17]
Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2018. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805(2018).
[18]
Wesley Dingman, Aviel Cohen, Nick Ferrara, Adam Lynch, Patrick Jasinski, Paul E Black, and Lin Deng. 2019. Classification of smart contract bugs using the nist bugs framework. In Proceedings of the 17th International Conference on Software Engineering Research, Management and Applications (SERA). IEEE, 116–123.
[19]
Finale Doshi-Velez and Been Kim. 2017. Towards a rigorous science of interpretable machine learning. arXiv preprint arXiv:1702.08608(2017).
[20]
Finale Doshi-Velez, Mason Kortz, Ryan Budish, Chris Bavitz, Sam Gershman, David O’Brien, Kate Scott, Stuart Schieber, James Waldo, David Weinberger, 2017. Accountability of AI under the law: The role of explanation. arXiv preprint arXiv:1711.01134(2017).
[21]
M. Du, N. Liu, and X. Hu. 2018. Techniques for Interpretable Machine Learning. (2018).
[22]
Mengnan Du, Ninghao Liu, and Xia Hu. 2019. Techniques for interpretable machine learning. Commun. ACM 63, 1 (2019), 68–77.
[23]
Josselin Feist, Gustavo Grieco, and Alex Groce. 2019. Slither: a static analysis framework for smart contracts. In Proceedings of the 2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB). IEEE, 8–15.
[24]
Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, 2020. Codebert: A pre-trained model for programming and natural languages. arXiv preprint arXiv:2002.08155(2020).
[25]
João F. Ferreira, Pedro Cruz, Thomas Durieux, and Rui Abreu. 2020. SmartBugs: A Framework to Analyze Solidity Smart Contracts. In Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering (ASE). 1349–1352.
[26]
Zhipeng Gao, Vinoj Jayasundara, Lingxiao Jiang, Xin Xia, David Lo, and John Grundy. 2019. Smartembed: A tool for clone and bug detection in smart contracts through structural code embedding. In Proceedings of the 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 394–397.
[27]
Ilya Grishchenko, Matteo Maffei, and Clara Schneidewind. 2018. A semantic framework for the security analysis of ethereum smart contracts. In Proceedings of the International Conference on Principles of Security and Trust. Springer, 243–269.
[28]
Anbang Guo, Xiaoguang Mao, Deheng Yang, and Shangwen Wang. 2018. An empirical study on the effect of dynamic slicing on automated program repair efficiency. In Proceedings of the 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 554–558.
[29]
Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, 2020. Graphcodebert: Pre-training code representations with data flow. arXiv preprint arXiv:2009.08366(2020).
[30]
Vincent J Hellendoorn, Charles Sutton, Rishabh Singh, Petros Maniatis, and David Bieber. 2019. Global relational models of source code. In International conference on learning representations.
[31]
Everett Hildenbrandt, Manasvi Saxena, Nishant Rodrigues, Xiaoran Zhu, Philip Daian, Dwight Guth, Brandon Moore, Daejun Park, Yi Zhang, Andrei Stefanescu, 2018. Kevm: A complete formal semantics of the ethereum virtual machine. In Proceedings of the 31st Computer Security Foundations Symposium (CSF). IEEE, 204–217.
[32]
Joran Honig. 2022. tree-sitter-solidity. https://github.com/JoranHonig/tree-sitter-solidity.
[33]
Hamel Husain, Ho-Hsiang Wu, Tiferet Gazit, Miltiadis Allamanis, and Marc Brockschmidt. 2019. Codesearchnet challenge: Evaluating the state of semantic code search. arXiv preprint arXiv:1909.09436(2019).
[34]
Suzana Ilić, Edison Marrese-Taylor, Jorge A Balazs, and Yutaka Matsuo. 2018. Deep contextualized word representations for detecting sarcasm and irony. arXiv preprint arXiv:1809.09795(2018).
[35]
Bo Jiang, Ye Liu, and WK Chan. 2018. Contractfuzzer: Fuzzing smart contracts for vulnerability detection. In Proceedings of the 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, 259–269.
[36]
Sukrit Kalra, Seep Goel, Mohan Dhawan, and Subodh Sharma. 2018. ZEUS: Analyzing Safety of Smart Contracts. In Ndss. 1–12.
[37]
Aditya Kanade, Petros Maniatis, Gogul Balakrishnan, and Kensen Shi. 2019. Pre-trained contextual embedding of source code. (2019).
[38]
Rafael-Michael Karampatsis and Charles Sutton. 2020. Scelmo: Source code embeddings from language models. arXiv preprint arXiv:2004.13214(2020).
[39]
Seohyun Kim, Jinman Zhao, Yuchi Tian, and Satish Chandra. 2021. Code prediction by feeding trees to transformers. In Proceedings of the 43rd International Conference on Software Engineering (ICSE). IEEE, 150–162.
[40]
Pavneet Singh Kochhar, Xin Xia, David Lo, and Shanping Li. 2016. Practitioners’ expectations on automated fault localization. In Proceedings of the 25th International Symposium on Software Testing and Analysis (ISSTA). 165–176.
[41]
Xia Li, Wei Li, Yuqun Zhang, and Lingming Zhang. 2019. DeepFL: Integrating multiple fault diagnosis dimensions for deep fault localization. In Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA). 169–180.
[42]
Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. 2019. Roberta: A robustly optimized bert pretraining approach. arXiv preprint arXiv:1907.11692(2019).
[43]
Zhenguang Liu, Peng Qian, Xiaoyang Wang, Yuan Zhuang, Lin Qiu, and Xun Wang. 2021. Combining graph neural networks with expert knowledge for smart contract vulnerability detection. IEEE Transactions on Knowledge and Data Engineering (2021).
[44]
Ting-gan Lua. 2022. tree-sitter. https://tree-sitter.github.io/tree-sitter/.
[45]
Loi Luu, Duc-Hiep Chu, Hrishi Olickel, Prateek Saxena, and Aquinas Hobor. 2016. Making smart contracts smarter. In Proceedings of the 2016 ACM SIGSAC conference on computer and communications security. 254–269.
[46]
Christoph Molnar. 2020. Interpretable machine learning. Lulu. com.
[47]
Mark Mossberg, Felipe Manzano, Eric Hennenfent, Alex Groce, Gustavo Grieco, Josselin Feist, Trent Brunson, and Artem Dinaburg. 2019. Manticore: A user-friendly symbolic execution framework for binaries and smart contracts. In Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, 1186–1189.
[48]
B Mueller. 2017. Mythril-Reversing and bug hunting framework for the Ethereum blockchain.
[49]
Satoshi Nakamoto. 2008. Bitcoin: A peer-to-peer electronic cash system. Decentralized Business Review(2008), 21260.
[50]
Chris Parnin and Alessandro Orso. 2011. Are automated debugging techniques actually helping programmers?. In Proceedings of the International Symposium on Software Testing and Analysis (ISSTA). 199–209.
[51]
Peng Qian, Zhenguang Liu, Qinming He, Roger Zimmermann, and Xun Wang. 2020. Towards automated reentrancy detection for smart contracts based on sequential models. IEEE Access 8(2020), 19685–19695.
[52]
Alec Radford, Karthik Narasimhan, Tim Salimans, and Ilya Sutskever. 2018. Improving language understanding by generative pre-training. (2018).
[53]
Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, and Peter J Liu. 2019. Exploring the limits of transfer learning with a unified text-to-text transformer. arXiv preprint arXiv:1910.10683(2019).
[54]
Michael Rodler, Wenting Li, Ghassan O Karame, and Lucas Davi. 2018. Sereum: Protecting existing smart contracts against re-entrancy attacks. arXiv preprint arXiv:1812.05934(2018).
[55]
Noama Fatima Samreen and Manar H Alalfi. 2020. Reentrancy vulnerability identification in Ethereum smart contracts. In 2020 IEEE International Workshop on Blockchain Oriented Software Engineering (IWBOSE). IEEE, 22–29.
[56]
David Siegel. 2016. Understanding the DAO Attack. Retrieved June 13(2016), 2018.
[57]
Alexey Svyatkovskiy, Shao Kun Deng, Shengyu Fu, and Neel Sundaresan. 2020. Intellicode compose: Code generation using transformer. In Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 1433–1443.
[58]
A Tann, Xing Jie Han, Sourav Sen Gupta, and Yew-Soon Ong. 2018. Towards safer smart contracts: A sequence learning approach to detecting vulnerabilities. arXiv preprint arXiv:1811.06632(2018), 1371–1385.
[59]
Sergei Tikhomirov, Ekaterina Voskresenskaya, Ivan Ivanitskiy, Ramil Takhaviev, Evgeny Marchenko, and Yaroslav Alexandrov. 2018. Smartcheck: Static analysis of ethereum smart contracts. In Proceedings of the 1st International Workshop on Emerging Trends in Software Engineering for Blockchain. 9–16.
[60]
Christof Ferreira Torres, Julian Schütte, and Radu State. 2018. Osiris: Hunting for integer bugs in ethereum smart contracts. In Proceedings of the 34th Annual Computer Security Applications Conference. 664–676.
[61]
Christof Ferreira Torres, Mathis Steichen, 2019. The art of the scam: Demystifying honeypots in ethereum smart contracts. In Proceedings of the 28th USENIX Security Symposium (USENIX Security 19). 1591–1607.
[62]
Petar Tsankov, Andrei Dan, Dana Drachsler-Cohen, Arthur Gervais, Florian Buenzli, and Martin Vechev. 2018. Securify: Practical security analysis of smart contracts. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. 67–82.
[63]
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. Advances in neural information processing systems 30 (2017).
[64]
Yaron Velner, Jason Teutsch, and Loi Luu. 2017. Smart contracts make bitcoin mining pools vulnerable. In Proceedings of the International Conference on Financial Cryptography and Data Security. Springer, 298–316.
[65]
Hongjun Wu, Zhuo Zhang, Shangwen Wang, Yan Lei, Bo Lin, Yihao Qin, Haoyu Zhang, and Xiaoguang Mao. 2021. Peculiar: Smart Contract Vulnerability Detection Based on Crucial Data Flow Graph and Pre-training Techniques. In Proceedings of the 32nd International Symposium on Software Reliability Engineering (ISSRE). IEEE, 378–389. https://doi.org/10.1109/ISSRE52982.2021.00047
[66]
X. Xia, L. Bao, D. Lo, and S. Li. 2016. “Automated Debugging Considered Harmful” Considered Harmful: A User Study Revisiting the Usefulness of Spectra-Based Fault Localization Techniques with Professionals Using Real Bugs from Large Systems. In Proceedings of the IEEE International Conference on Software Maintenance and Evolution (ICSME). 267–278. https://doi.org/10.1109/ICSME.2016.67
[67]
Yinxing Xue, Mingliang Ma, Yun Lin, Yulei Sui, Jiaming Ye, and Tianyong Peng. 2020. Cross-Contract Static Analysis for Detecting Practical Reentrancy Vulnerabilities in Smart Contracts. In Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering (ASE). 1029–1040.
[68]
Meng Yan, Xin Xia, Yuanrui Fan, Ahmed E. Hassan, David Lo, and Shanping Li. 2022. Just-In-Time Defect Identification and Localization: A Two-Phase Framework. IEEE Transactions on Software Engineering 48, 1 (2022), 82–101. https://doi.org/10.1109/TSE.2020.2978819
[69]
R. Ying, D. Bourgeois, J. You, M. Zitnik, and J. Leskovec. 2019. GNNExplainer: Generating Explanations for Graph Neural Networks. Advances in neural information processing systems 32 (2019), 9240–9251.
[70]
Zhitao Ying, Dylan Bourgeois, Jiaxuan You, Marinka Zitnik, and Jure Leskovec. 2019. Gnnexplainer: Generating explanations for graph neural networks. Advances in neural information processing systems 32 (2019).
[71]
Zhuo Zhang, Yan Lei, Xiaoguang Mao, and Panpan Li. 2019. CNN-FL: An Effective Approach for Localizing Faults using Convolutional Neural Networks. In Proceedings of the 26th International Conference on Software Analysis, Evolution and Reengineering (SANER). IEEE, 445–455.
[72]
Yuan Zhuang, Zhenguang Liu, Peng Qian, Qi Liu, Xiang Wang, and Qinming He. 2021. Smart contract vulnerability detection using graph neural networks. In Proceedings of the Twenty-Ninth International Conference on International Joint Conferences on Artificial Intelligence (IJCAI). 3283–3290.

Cited By

View all
  • (2025)A Universal and Efficient Multi-Modal Smart Contract Vulnerability Detection Framework for Big DataIEEE Transactions on Big Data10.1109/TBDATA.2024.340337611:1(190-207)Online publication date: Feb-2025
  • (2024)Ethereum Smart Contract Vulnerability Detection and Machine Learning-Driven Solutions: A Systematic Literature ReviewElectronics10.3390/electronics1312229513:12(2295)Online publication date: 12-Jun-2024
  • (2024)A Systematic Literature Review on Automated Software Vulnerability Detection Using Machine LearningACM Computing Surveys10.1145/369971157:3(1-36)Online publication date: 11-Nov-2024
  • Show More Cited By

Index Terms

  1. Reentrancy Vulnerability Detection and Localization: A Deep Learning Based Two-phase Approach

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Other conferences
    ASE '22: Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering
    October 2022
    2006 pages
    ISBN:9781450394758
    DOI:10.1145/3551349
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 05 January 2023

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. Smart contract
    2. fault localization
    3. reentrancy vulnerability
    4. vulnerability detection

    Qualifiers

    • Research-article
    • Research
    • Refereed limited

    Funding Sources

    Conference

    ASE '22

    Acceptance Rates

    Overall Acceptance Rate 82 of 337 submissions, 24%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)277
    • Downloads (Last 6 weeks)26
    Reflects downloads up to 05 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2025)A Universal and Efficient Multi-Modal Smart Contract Vulnerability Detection Framework for Big DataIEEE Transactions on Big Data10.1109/TBDATA.2024.340337611:1(190-207)Online publication date: Feb-2025
    • (2024)Ethereum Smart Contract Vulnerability Detection and Machine Learning-Driven Solutions: A Systematic Literature ReviewElectronics10.3390/electronics1312229513:12(2295)Online publication date: 12-Jun-2024
    • (2024)A Systematic Literature Review on Automated Software Vulnerability Detection Using Machine LearningACM Computing Surveys10.1145/369971157:3(1-36)Online publication date: 11-Nov-2024
    • (2024)Skyeye: Detecting Imminent Attacks via Analyzing Adversarial Smart ContractsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695526(1570-1582)Online publication date: 27-Oct-2024
    • (2024)AdvSCanner: Generating Adversarial Smart Contracts to Exploit Reentrancy Vulnerabilities Using LLM and Static AnalysisProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695482(1019-1031)Online publication date: 27-Oct-2024
    • (2024)Enhancing Deep Learning Vulnerability Detection through Imbalance Loss Functions: An Empirical StudyProceedings of the 15th Asia-Pacific Symposium on Internetware10.1145/3671016.3671379(85-94)Online publication date: 24-Jul-2024
    • (2024)A Survey on Security Analysis Methods of Smart ContractsIEEE Transactions on Services Computing10.1109/TSC.2024.3463394(1-18)Online publication date: 2024
    • (2024)EvoFuzzer: An Evolutionary Fuzzer for Detecting Reentrancy Vulnerability in Smart ContractsIEEE Transactions on Network Science and Engineering10.1109/TNSE.2024.344702511:6(5790-5802)Online publication date: Nov-2024
    • (2024)Detecting Unknown Threats in Smart Contracts With Domain Adaptation2024 IEEE International Conference on Software Services Engineering (SSE)10.1109/SSE62657.2024.00027(104-114)Online publication date: 7-Jul-2024
    • (2024)Hybrid Locking: An Effective Measure Against Reentrancy Attacks2024 Parul International Conference on Engineering and Technology (PICET)10.1109/PICET60765.2024.10716087(1-6)Online publication date: 3-May-2024
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    HTML Format

    View this article in HTML Format.

    HTML Format

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media