
Solidity और Vyper के लिए स्थैतिक विश्लेषक
एम्पायर हैकिंग स्लैक में शामिल हों
- चर्चाएँ और सहायता
Slither एक Solidity और Vyper स्टैटिक विश्लेषण फ्रेमवर्क है जो Python3 में लिखा गया है। यह भेद्यता डिटेक्टरों का एक सेट चलाता है, कॉन्ट्रैक्ट विवरणों के बारे में दृश्य जानकारी प्रिंट करता है, और आसानी से कस्टम विश्लेषण लिखने के लिए एक API प्रदान करता है। Slither डेवलपर्स को कमजोरियों का पता लगाने, अपनी कोड समझ को बढ़ाने और तेज़ी से कस्टम विश्लेषणों का प्रोटोटाइप बनाने में सक्षम बनाता है।
किसी Hardhat/Foundry/Dapp/Brownie एप्लिकेशन पर Slither चलाएँ:```console slither .
यह पसंदीदा विकल्प है यदि आपके प्रोजेक्ट में निर्भरताएँ हैं क्योंकि Slither स्रोत कोड संकलित करने के लिए अंतर्निहित संकलन ढांचे पर निर्भर करता है।
हालांकि, आप Slither को एक एकल फ़ाइल पर चला सकते हैं जो निर्भरताएँ आयात नहीं करती:```console
slither tests/uninitialized.sol
नोट Slither को Python 3.10+ की आवश्यकता है। यदि आप नहीं हैं समर्थित संकलन फ्रेमवर्क में से किसी एक का उपयोग करने जा रहे हैं, तो आपको solc, Solidity कंपाइलर की आवश्यकता है; हम solc संस्करणों के बीच सुविधाजनक रूप से स्विच करने के लिए solc-select का उपयोग करने की सलाह देते हैं।
uv एक तेज़ Python पैकेज मैनेजर है जो pip से 10-100x तेज़ है।```console
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install slither-analyzer
uvx --from slither-analyzer slither
अपग्रेड करने के लिए:```console
uv tool upgrade slither-analyzer
python3 -m pip install slither-analyzer
अपग्रेड करने के लिए:```console
python3 -m pip install --upgrade slither-analyzer
brew install slither-analyzer
### Git का उपयोग (विकास)```bash
git clone https://github.com/crytic/slither.git && cd slither
# Install as editable for development
uv tool install -e .
# Or use uv run for testing without installation
uv run slither <target>
The -e फ़्लैग एडिटेबल मोड में इंस्टॉल करता है, जिसका अर्थ है कि स्रोत कोड में किए गए परिवर्तन बिना पुनः इंस्टॉल किए तुरंत प्रभावी हो जाते हैं।
Docker इमेज eth-security-toolbox का उपयोग करें। इसमें हमारे सभी सुरक्षा उपकरण और Solidity के हर प्रमुख संस्करण एक ही इमेज में शामिल हैं। /home/share को कंटेनर में /share पर माउंट किया जाएगा।```bash
docker pull trailofbits/eth-security-toolbox
कंटेनर में एक निर्देशिका साझा करने के लिए:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
$GIT_TAG को वास्तविक टैग से बदलें) ```YAML
slither [target] --checklist का उपयोग करें।slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/ का उपयोग करें (ORG, REPO, COMMIT को बदलें)अधिक जानकारी के लिए देखें
human-summary: कॉन्ट्रैक्ट का मानव-पठनीय सारांश प्रिंट करेंinheritance-graph: प्रत्येक कॉन्ट्रैक्ट के वंशानुक्रम ग्राफ़ को डॉट फ़ाइल में निर्यात करेंcontract-summary: कॉन्ट्रैक्ट का सारांश प्रिंट करेंloc: स्रोत फ़ाइलों (SRC), निर्भरताओं (DEP), और परीक्षण फ़ाइलों (TEST) में पाई गई कोड की कुल पंक्तियों (LOC), स्रोत कोड की पंक्तियों (SLOC), और टिप्पणी कोड की पंक्तियों (CLOC) की गणना करें।entry-points: कॉन्ट्रैक्ट के सभी अवस्था-परिवर्तन प्रवेश बिंदु फंक्शन और उनके चर प्रिंट करेंcall-graph: अनुबंधों का कॉल-ग्राफ़ एक डॉट फ़ाइल में निर्यात करेंcfg: प्रत्येक फ़ंक्शन का CFG निर्यात करेंfunction-summary: फ़ंक्शनों का सारांश प्रिंट करेंvars-and-auth: लिखे गए स्टेट वेरिएबल और फ़ंक्शनों का प्राधिकरण प्रिंट करेंnot-pausable: उन फ़ंक्शनों को प्रिंट करें जो whenNotPaused मॉडिफ़ायर का उपयोग नहीं करते.प्रिंटर चलाने के लिए, --print और अल्पविराम से अलग किए गए प्रिंटरों की सूची का उपयोग करें।
पूरी सूची के लिए प्रिंटर दस्तावेज़ीकरण देखें।
slither-check-upgradeability: delegatecall-आधारित अपग्रेडेबिलिटी की समीक्षा करेंslither-prop: स्वचालित यूनिट परीक्षण और प्रॉपर्टी जनरेशनslither-flat: कोडबेस को फ़्लैट करेंslither-check-erc: ERC की अनुरूपता जाँचेंslither-read-storage: अनुबंधों से स्टोरेज मान पढ़ेंslither-interface: एक अनुबंध के लिए इंटरफ़ेस जनरेट करेंअतिरिक्त उपकरणों के लिए उपकरण दस्तावेज़ीकरण देखें।
कस्टम उपकरण बनाने में सहायता प्राप्त करने के लिए हमसे संपर्क करें.
Slither के आंतरिक भागों पर दस्तावेज़ीकरण यहाँ उपलब्ध है।
Slither का उपयोग या विस्तार करने में सहायता के लिए हमारे Slack चैनल (#ethereum) पर आने के लिए स्वतंत्र महसूस करें।
मैं मॉक या परीक्षणों को कैसे बाहर करूं?
मैं "अज्ञात फ़ाइल" या संकलन संबंधी समस्याओं को कैसे ठीक करूं?
slither contract.sol विफल हो जाएगा।
इसके बजाय, contracts/ के पैरेंट डायरेक्टरी में slither . का उपयोग करें (जब आप ls चलाते हैं तो आपको contracts/ दिखाई देना चाहिए)।
यदि आपके पास node_modules/ फ़ोल्डर है, तो यह contracts/ के समान डायरेक्टरी में होना चाहिए। यह सत्यापित करने के लिए कि यह समस्या slither से संबंधित है,
आप जिस फ्रेमवर्क का उपयोग कर रहे हैं उसके लिए संकलन कमांड चलाएं, जैसे npx hardhat compile। यह सफलतापूर्वक काम करना चाहिए;
अन्यथा, slither का संकलन इंजन, crytic-compile, AST उत्पन्न नहीं कर सकता।Slither AGPLv3 लाइसेंस के तहत लाइसेंस प्राप्त और वितरित है। यदि आप शर्तों के अपवाद की तलाश में हैं तो हमसे संपर्क करें.
यदि आप किसी शैक्षणिक कार्य पर Slither का उपयोग कर रहे हैं, तो Crytic $10k अनुसंधान पुरस्कार के लिए आवेदन करने पर विचार करें।
| संख्या | डिटेक्टर | यह क्या पता लगाता है | प्रभाव | विश्वास |
|---|
| शीर्षक | उपयोग | लेखक | प्रकाशन | कोड |
|---|
| ReJection: AST-आधारित पुनःप्रवेश भेद्यता पहचान विधि | Slither के ऊपर निर्मित AST-आधारित विश्लेषण | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | - |
| MPro: स्मार्ट कॉन्ट्रैक्ट के स्केलेबल परीक्षण के लिए स्थैतिक और प्रतीकात्मक विश्लेषण का संयोजन | Slither के माध्यम से डेटा निर्भरता का लाभ उठाएं | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: फ़ज़िंग से स्मार्ट कॉन्ट्रैक्ट्स के विरुद्ध कुशल एक्सप्लॉइट जनरेशन तक | Slither के माध्यम से डेटा निर्भरता का लाभ उठाएं | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Ethereum स्मार्ट कॉन्ट्रैक्ट्स का सत्यापन: एक मॉडल जाँच दृष्टिकोण | Slither के CFG के ऊपर निर्मित प्रतीकात्मक निष्पादन | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| स्मार्ट कॉन्ट्रैक्ट मरम्मत | Slither के भेद्यता डिटेक्टरों पर निर्भर करें | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| स्मार्ट कॉन्ट्रैक्ट्स में लूप्स को डिमिस्टिफाई करना | Slither के माध्यम से डेटा निर्भरता का लाभ उठाएं | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| स्मार्ट कॉन्ट्रैक्ट्स में लूप्स का ट्रेस-आधारित डायनेमिक गैस अनुमान | लूप्स का पता लगाने के लिए Slither के CFG का उपयोग करें | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | - |
| SAILFISH: सेकंड्स में स्मार्ट कॉन्ट्रैक्ट स्थिति-असंगति बग्स की जाँच | एक स्टोरेज निर्भरता ग्राफ़ बनाने के लिए SlithIR पर निर्भर करें | Priyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni Vigna | S&P 22 | Sailfish |
| SolType: Solidity में अंकगणितीय अतिप्रवाह के लिए रिफाइनमेंट प्रकार | रिफाइनमेंट प्रकार प्रणाली बनाने के लिए Slither का फ्रंटएंड के रूप में उपयोग करें | Bryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu Feng | POPL 22 | - |
| Do Not Rug on Me: स्वचालित स्कैम पहचान के लिए मशीन लर्निंग तकनीकों का लाभ उठाना | टोकन की विशेषताएँ निकालने के लिए Slither का उपयोग करें (मिंटेबल, पॉज़ेबल, ..) | Mazorra, Bruno, Victor Adan, and Vanesa Daza | Mathematics 10.6 (2022) | - |
| MANDO: स्मार्ट कॉन्ट्रैक्ट भेद्यताओं की सूक्ष्म-स्तरीय पहचान के लिए बहु-स्तरीय विषम ग्राफ एम्बेडिंग | CFG और कॉल ग्राफ़ निकालने के लिए Slither का उपयोग करें | Hoang Nguyen, Nhat-Minh Nguyen, Chunyao Xie, Zahra Ahmadi, Daniel Kudendo, Thanh-Nam Doan and Lingxiao Jiang | IEEE 9th International Conference on Data Science and Advanced Analytics (DSAA, 2022) | ge-sc |
| स्मार्ट कॉन्ट्रैक्ट्स में मूल्य वृद्धि TOD भेद्यताओं का स्वचालित ऑडिटिंग | CFG और डेटा निर्भरताएँ निकालने के लिए Slither का उपयोग करें | Sidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long | 2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC) | Smart-Contract-Repair |
| स्मार्ट कॉन्ट्रैक्ट्स के लिए एक्सेस कंट्रोल नीतियों का मॉडलिंग और प्रवर्तन | Slither की डेटा निर्भरताओं का विस्तार करें | Jan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf Reussner | IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022 | SolidityAccessControlEnforcement |
| डीप लर्निंग और मल्टीमॉडल निर्णय फ्यूजन पर आधारित स्मार्ट कॉन्ट्रैक्ट भेद्यता पहचान | CFG निकालने के लिए Slither का उपयोग करें | Weichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan Hu | Sensors 2023, 23, 7246 | - |
| स्मार्ट कॉन्ट्रैक्ट कोड पुन: उपयोग में अज्ञात को प्रकट करने के लिए सिमेंटिक-समृद्ध कोड ज्ञान ग्राफ | कोड विशेषताएँ निकालने के लिए Slither का उपयोग करें (CFG, फ़ंक्शन, पैरामीटर प्रकार, ..) | Qing Huang, Dianshu Liao, Zhenchang Xing, Zhengkang Zuo, Changjing Wang, Xin Xia | ACM Transactions on Software Engineering and Methodology, 2023 | - |
| सूक्ष्म-स्तरीय स्थिति एक्सेस के साथ स्मार्ट कॉन्ट्रैक्ट समानांतर निष्पादन | स्टेट एक्सेस ग्राफ़ बनाने के लिए Slither का उपयोग करें | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| खराब सेब: विकेंद्रीकृत पारिस्थितिकी तंत्रों में केंद्रीकृत सुरक्षा जोखिमों को समझना | Slither के ऊपर एक आंतरिक विश्लेषण लागू करें | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| अंतराल विश्लेषण का उपयोग करके स्मार्ट कॉन्ट्रैक्ट्स में भेद्यताओं की पहचान करना | Slither के ऊपर 4 डिटेक्टर बनाएं | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Ethereum ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट्स का स्टोरेज स्थिति विश्लेषण और निष्कर्षण (खुले एक्सेस में कोई PDF नहीं) | Slither के CFG और AST पर निर्भर करें | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |