
محلل ثابت لـ Solidity و Vyper
انضم إلى سلاك Empire Hacking
- مناقشات ودعم
Slither هو إطار عمل للتحليل الثابت للعقود الذكية بلغة Solidity و Vyper، مكتوب بلغة Python3. يقوم بتشغيل مجموعة من كاشفات الثغرات الأمنية، ويطبع معلومات مرئية حول تفاصيل العقد، ويوفر واجهة برمجة تطبيقات لكتابة تحليلات مخصصة بسهولة. يمكّن Slither المطورين من العثور على الثغرات الأمنية، وتحسين فهمهم للكود، والنمذجة السريعة للتحليلات المخصصة.
قم بتشغيل Slither على تطبيق Hardhat/Foundry/Dapp/Brownie:```console slither .
هذا هو الخيار المفضل إذا كان مشروعك يحتوي على تبعيات، حيث يعتمد Slither على إطار التجميع الأساسي لتجميع الكود المصدري. ومع ذلك، يمكنك تشغيل Slither على ملف واحد لا يستورد تبعيات:```console
slither tests/uninitialized.sol
ملاحظة يتطلب Slither بايثون 3.10+. إذا كنت لن تستخدم أحد أطر التجميع المدعومة، فأنت بحاجة إلى solc، مترجم Solidity؛ نوصي باستخدام solc-select للتبديل بسهولة بين إصدارات solc.
uv هو مدير حزم بايثون سريع أسرع من pip بمقدار 10-100 مرة.```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>
العلامة -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: تصدير رسم بياني للوراثة لكل عقد إلى ملف dotcontract-summary: طباعة ملخص للعقودloc: عد إجمالي عدد أسطر الكود (LOC)، أسطر الكود المصدر (SLOC)، وأسطر التعليقات (CLOC) الموجودة في ملفات المصدر (SRC)، التبعيات (DEP)، وملفات الاختبار (TEST).entry-points: طباعة جميع دوال نقطة الدخول التي تغير الحالة ومتغيراتها للعقودcall-graph: تصدير رسم بياني للاستدعاءات للعقود إلى ملف dotcfg: تصدير مخطط تدفق التحكم لكل دالةfunction-summary: طباعة ملخص للدوالvars-and-auth: طباعة متغيرات الحالة المكتوبة وصلاحية الدوالnot-pausable: طباعة الدوال التي لا تستخدم معدّل whenNotPaused.لتشغيل أداة طباعة، استخدم --print وقائمة مفصولة بفواصل من أدوات الطباعة.
انظر وثائق أدوات الطباعة للقوائم الكاملة.
slither-check-upgradeability: مراجعة قابلية الترقية القائمة على delegatecallslither-prop: توليد اختبارات وخصائص تلقائيةslither-flat: تسطيح قاعدة الشيفرةslither-check-erc: التحقق من مطابقة ERCslither-read-storage: قراءة قيم التخزين من العقودslither-interface: إنشاء واجهة لعقدانظر وثائق الأدوات للأدوات الإضافية.
اتصل بنا للحصول على مساعدة في بناء أدوات مخصصة.
وثائق داخلية حول سلذر متاحة هنا.
لا تتردد في التوقف في قناة Slack (#ethereum) للحصول على مساعدة في استخدام أو توسيع سلذر.
وثائق أدوات الطباعة تصف المعلومات التي يستطيع سلذر تصورها لكل عقد.
وثائق المكتشفات تصف كيفية كتابة تحليل ثغرات جديد.
وثائق واجهة برمجة التطبيقات تصف الدوال والكائنات المتاحة للتحليلات المخصصة.
وثائق SlithIR تصف التمثيل الوسيط SlithIR.
كيف أستثني النسخ الوهمية أو الاختبارات؟
كيف أصلح مشكلة "ملف غير معروف" أو مشاكل الترجمة؟
slither contract.sol سيفشل.
بدلاً من ذلك، استخدم slither . في الدليل الأصلي لـ contracts/ (يجب أن ترى contracts/ عند تشغيل ls).
إذا كان لديك مجلد node_modules/، فيجب أن يكون في نفس الدليل مثل contracts/. للتحقق من أن هذه المشكلة متعلقة بسلذر،
قم بتشغيل أمر الترجمة للإطار الذي تستخدمه مثلًا npx hardhat compile. يجب أن يعمل بنجاح؛
وإلا، فإن محرك الترجمة الخاص بسلذر، crytic-compile، لا يمكنه توليد AST.سلذر مرخص وموزع بموجب ترخيص AGPLv3. اتصل بنا إذا كنت تبحث عن استثناء للشروط.
إذا كنت تستخدم سلذر في عمل أكاديمي، فكر في التقديم على جائزة بحث Crytic البالغة 10,000 دولار.
| الرقم | الكاشف | مايكتشفه | التأثير | الثقة |
|---|
| العنوان | الاستخدام | المؤلفون | المؤتمر | الشيفرة |
|---|
| ReJection: A AST-Based Reentrancy Vulnerability Detection Method | تحليل قائم على AST مبني فوق سلذر | Rui Ma, Zefeng Jian, Guangyuan Chen, Ke Ma, Yujia Chen | CTCIS 19 | - |
| MPro: Combining Static and Symbolic Analysis for Scalable Testing of Smart Contract | الاستفادة من اعتمادية البيانات عبر سلذر | William Zhang, Sebastian Banescu, Leodardo Pasos, Steven Stewart, Vijay Ganesh | ISSRE 2019 | MPro |
| ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts | الاستفادة من اعتمادية البيانات عبر سلذر | Qingzhao Zhang, Yizhuo Wang, Juanru Li, Siqi Ma | SANER 20 | - |
| Verification of Ethereum Smart Contracts: A Model Checking Approach | تنفيذ رمزي مبني فوق CFG الخاص بسلذر | Tam Bang, Hoang H Nguyen, Dung Nguyen, Toan Trieu, Tho Quan | IJMLC 20 | - |
| Smart Contract Repair | الاعتماد على كاشفات الثغرات في سلذر | Xiao Liang Yu, Omar Al-Bataineh, David Lo, Abhik Roychoudhury | TOSEM 20 | SCRepair |
| Demystifying Loops in Smart Contracts | الاستفادة من اعتمادية البيانات عبر سلذر | Ben Mariano, Yanju Chen, Yu Feng, Shuvendu Lahiri, Isil Dillig | ASE 20 | - |
| Trace-Based Dynamic Gas Estimation of Loops in Smart Contracts | استخدام CFG لسلذر لاكتشاف الحلقات | Chunmiao Li, Shijie Nie, Yang Cao, Yijun Yu, Zhenjiang Hu | IEEE Open J. Comput. Soc. 1 (2020) | - |
| SAILFISH: Vetting Smart Contract State-Inconsistency Bugs in Seconds | الاعتماد على SlithIR لبناء رسم بياني لاعتمادية التخزين | Priyanka Bose, Dipanjan Das, Yanju Chen, Yu Feng, Christopher Kruegel, and Giovanni Vigna | S&P 22 | Sailfish |
| SolType: Refinement Types for Arithmetic Overflow in Solidity | استخدام سلذر كواجهة أمامية لبناء نظام أنواع تحسيني | Bryan Tan, Benjamin Mariano, Shuvendu K. Lahiri, Isil Dillig, Yu Feng | POPL 22 | - |
| Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam Detection | استخدام سلذر لاستخراج ميزات الرموز (قابلية السك، القابلية للإيقاف، ..) | Mazorra, Bruno, Victor Adan, and Vanesa Daza | Mathematics 10.6 (2022) | - |
| MANDO: Multi-Level Heterogeneous Graph Embeddings for Fine-Grained Detection of Smart Contract Vulnerabilities | استخدام سلذر لاستخراج CFG ورسم بياني للاستدعاءات | 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 |
| Automated Auditing of Price Gouging TOD Vulnerabilities in Smart Contracts | استخدام سلذر لاستخراج CFG واعتمادات البيانات | Sidi Mohamed Beillahi, Eric Keilty, Keerthi Nelaturu, Andreas Veneris, and Fan Long | 2022 IEEE International Conference on Blockchain and Cryptocurrency (ICBC) | Smart-Contract-Repair |
| Modeling and Enforcing Access Control Policies for Smart Contracts | توسيع اعتمادات البيانات في سلذر | Jan-Philipp Toberg, Jonas Schiffl, Frederik Reiche, Bernhard Beckert, Robert Heinrich, Ralf Reussner | IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS), 2022 | SolidityAccessControlEnforcement |
| Smart Contract Vulnerability Detection Based on Deep Learning and Multimodal Decision Fusion | استخدام سلذر لاستخراج CFG | Weichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng, and Xuan Hu | Sensors 2023, 23, 7246 | - |
| Semantic-enriched Code Knowledge Graph to Reveal Unknowns in Smart Contract Code Reuse | استخدام سلذر لاستخراج ميزات الشيفرة (CFG، الدوال، أنواع المعاملات، ..) | Qing Huang, Dianshu Liao, Zhenchang Xing, Zhengkang Zuo, Changjing Wang, Xin Xia | ACM Transactions on Software Engineering and Methodology, 2023 | - |
| Smart Contract Parallel Execution with Fine-Grained State Accesses | استخدام سلذر لبناء رسوم بيانية للوصول إلى الحالة | Xiaodong Qi, Jiao Jiao, Yi Li | International Conference on Distributed Computing Systems (ICDCS), 2023 | - |
| Bad Apples: Understanding the Centralized Security Risks in Decentralized Ecosystems | تنفيذ تحليل داخلي فوق سلذر | Kailun Yan , Jilian Zhang , Xiangyu Liu , Wenrui Diao , Shanqing Guo | ACM Web Conference April 2023 | - |
| Identifying Vulnerabilities in Smart Contracts using Interval Analysis | إنشاء 4 كاشفات فوق سلذر | Ştefan-Claudiu Susan, Andrei Arusoaie | FROM 2023 | - |
| Storage State Analysis and Extraction of Ethereum Blockchain Smart Contracts (لا يوجد PDF مفتوح الوصول) | الاعتماد على CFG وAST في سلذر | Maha Ayub , Tania Saleem , Muhammad Janjua , Talha Ahmad | TOSEM 2023 | SmartMuv |