เข้าร่วม Empire Hacking Slack
- การสนทนาและการสนับสนุน
Slither เป็นเฟรมเวิร์กการวิเคราะห์แบบคงที่ของ Solidity & Vyper ที่เขียนด้วย Python3 โดยรันชุดเครื่องตรวจจับช่องโหว่ พิมพ์ข้อมูลภาพเกี่ยวกับรายละเอียดสัญญา และจัดเตรียม API เพื่อเขียนการวิเคราะห์ที่กำหนดเองได้อย่างง่ายดาย Slither ช่วยให้นักพัฒนาสามารถค้นหาช่องโหว่ ปรับปรุงความเข้าใจโค้ด และสร้างต้นแบบการวิเคราะห์แบบกำหนดเองได้อย่างรวดเร็ว
เรียกใช้ Slither บนแอปพลิเคชัน Hardhat/Foundry/Dapp/Brownie:
slither .
นี่เป็นตัวเลือกที่แนะนำหากโปรเจ็กต์ของคุณมีการขึ้นต่อกัน เนื่องจาก Slither อาศัยเฟรมเวิร์กการคอมไพล์พื้นฐานในการคอมไพล์ซอร์สโค้ด
อย่างไรก็ตาม คุณสามารถเรียกใช้ Slither บนไฟล์เดียวที่ไม่ได้นำเข้าการขึ้นต่อกัน:
slither tests/uninitialized.sol
บันทึก
Slither ต้องการ Python 3.8+ หากคุณจะ ไม่ ใช้หนึ่งในเฟรมเวิร์กการคอมไพล์ที่รองรับ คุณต้องมี solc ซึ่งเป็นคอมไพเลอร์ Solidity เราขอแนะนำให้ใช้ solc-select เพื่อสลับระหว่างเวอร์ชัน solc ได้อย่างสะดวก
python3 -m pip install slither-analyzer
git clone https://github.com/crytic/slither.git && cd slither
python3 -m pip install .
เราขอแนะนำให้ใช้สภาพแวดล้อมเสมือน Python ตามรายละเอียดในคำแนะนำในการติดตั้งสำหรับนักพัฒนา หากคุณต้องการติดตั้ง Slither ผ่าน git
ใช้อิมเมจนักเทียบท่ากล่อง eth-security-toolbox
ประกอบด้วยเครื่องมือรักษาความปลอดภัยทั้งหมดของเราและ Solidity เวอร์ชันหลักทุกเวอร์ชันไว้ในรูปภาพเดียว /home/share
จะถูกเมานท์ไปที่ /share
ในคอนเทนเนอร์
docker pull trailofbits/eth-security-toolbox
หากต้องการแชร์ไดเร็กทอรีในคอนเทนเนอร์:
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
$GIT_TAG
ด้วยแท็กจริง) - repo : https://github.com/crytic/slither
rev : $GIT_TAG
hooks :
- id : slither
slither [target] --checklist
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/
(แทนที่ ORG
, REPO
, COMMIT
) หมายเลข | เครื่องตรวจจับ | สิ่งที่ตรวจพบ | ผลกระทบ | ความมั่นใจ |
---|---|---|---|---|
1 | abiencoderv2-array | พื้นที่เก็บข้อมูล abiencoderv2 อาร์เรย์ | สูง | สูง |
2 | arbitrary-send-erc20 | TransferFrom ใช้โดยพลการ from | สูง | สูง |
3 | array-by-reference | การปรับเปลี่ยนอาร์เรย์หน่วยเก็บข้อมูลตามค่า | สูง | สูง |
4 | encode-packed-collision | ABI เข้ารหัสการชนกันแบบแพ็ค | สูง | สูง |
5 | incorrect-shift | ลำดับของพารามิเตอร์ในคำสั่งกะไม่ถูกต้อง | สูง | สูง |
6 | multiple-constructors | โครงร่างตัวสร้างหลายตัว | สูง | สูง |
7 | name-reused | ชื่อสัญญาถูกนำมาใช้ซ้ำ | สูง | สูง |
8 | protected-vars | ตรวจพบตัวแปรที่ไม่มีการป้องกัน | สูง | สูง |
9 | public-mappings-nested | การแมปสาธารณะพร้อมตัวแปรที่ซ้อนกัน | สูง | สูง |
10 | rtlo | มีการใช้อักขระควบคุมจากขวาไปซ้าย-แทนที่ | สูง | สูง |
11 | shadowing-state | การแชโดว์ตัวแปรสถานะ | สูง | สูง |
12 | suicidal | ฟังก์ชั่นที่ทำให้ใครก็ตามสามารถทำลายสัญญาได้ | สูง | สูง |
13 | uninitialized-state | ตัวแปรสถานะที่ไม่ได้เตรียมใช้งาน | สูง | สูง |
14 | uninitialized-storage | ตัวแปรหน่วยเก็บข้อมูลที่ไม่ได้กำหนดค่าเริ่มต้น | สูง | สูง |
15 | unprotected-upgrade | สัญญาอัปเกรดที่ไม่มีการป้องกัน | สูง | สูง |
16 | codex | ใช้ Codex เพื่อค้นหาช่องโหว่ | สูง | ต่ำ |
17 | arbitrary-send-erc20-permit | TransferFrom ใช้โดยพลการจากที่มีใบอนุญาต | สูง | ปานกลาง |
18 | arbitrary-send-eth | ฟังก์ชั่นที่ส่ง Ether ไปยังปลายทางตามอำเภอใจ | สูง | ปานกลาง |
19 | controlled-array-length | การกำหนดความยาวอาเรย์ที่ไม่บริสุทธิ์ | สูง | ปานกลาง |
20 | controlled-delegatecall | ปลายทางการโทรของผู้รับมอบสิทธิ์ที่ควบคุม | สูง | ปานกลาง |
21 | delegatecall-loop | ฟังก์ชันที่ต้องชำระโดยใช้ delegatecall ภายในลูป | สูง | ปานกลาง |
22 | incorrect-exp | การยกกำลังไม่ถูกต้อง | สูง | ปานกลาง |
23 | incorrect-return | หากใช้ return อย่างไม่ถูกต้องในโหมดแอสเซมบลี | สูง | ปานกลาง |
24 | msg-value-loop | msg.value อยู่ภายในลูป | สูง | ปานกลาง |
25 | reentrancy-eth | ช่องโหว่ในการกลับเข้าใหม่ (การขโมยอีเทอร์) | สูง | ปานกลาง |
26 | return-leave | หากใช้ return แทน leave | สูง | ปานกลาง |
27 | storage-array | จุดบกพร่องของคอมไพเลอร์อาร์เรย์จำนวนเต็มหน่วยเก็บข้อมูลที่เซ็นชื่อ | สูง | ปานกลาง |
28 | unchecked-transfer | การโอนโทเค็นที่ไม่ได้ตรวจสอบ | สูง | ปานกลาง |
29 | weak-prng | PRNG ที่อ่อนแอ | สูง | ปานกลาง |
30 | domain-separator-collision | ตรวจจับโทเค็น ERC20 ที่มีฟังก์ชันที่มีลายเซ็นขัดแย้งกับ DOMAIN_SEPARATOR() ของ EIP-2612 | ปานกลาง | สูง |
31 | enum-conversion | ตรวจหาการแปลงแจงนับที่เป็นอันตราย | ปานกลาง | สูง |
32 | erc20-interface | อินเทอร์เฟซ ERC20 ไม่ถูกต้อง | ปานกลาง | สูง |
33 | erc721-interface | อินเทอร์เฟซ ERC721 ไม่ถูกต้อง | ปานกลาง | สูง |
34 | incorrect-equality | ความเท่าเทียมกันที่เข้มงวดที่เป็นอันตราย | ปานกลาง | สูง |
35 | locked-ether | สัญญาที่ล็อคอีเธอร์ | ปานกลาง | สูง |
36 | mapping-deletion | การลบการแมปที่มีโครงสร้าง | ปานกลาง | สูง |
37 | shadowing-abstract | ตัวแปรสถานะแชโดว์จากสัญญานามธรรม | ปานกลาง | สูง |
38 | tautological-compare | การเปรียบเทียบตัวแปรกับตัวมันเองจะส่งคืนค่าจริงหรือเท็จเสมอ ขึ้นอยู่กับการเปรียบเทียบ | ปานกลาง | สูง |
39 | tautology | ซ้ำซากหรือขัดแย้ง | ปานกลาง | สูง |
40 | write-after-write | เขียนที่ไม่ได้ใช้ | ปานกลาง | สูง |
41 | boolean-cst | การใช้ค่าคงที่บูลีนในทางที่ผิด | ปานกลาง | ปานกลาง |
42 | constant-function-asm | ฟังก์ชั่นคงที่โดยใช้รหัสแอสเซมบลี | ปานกลาง | ปานกลาง |
43 | constant-function-state | ฟังก์ชั่นคงที่เปลี่ยนสถานะ | ปานกลาง | ปานกลาง |
44 | divide-before-multiply | ลำดับการดำเนินการทางคณิตศาสตร์ที่ไม่แม่นยำ | ปานกลาง | ปานกลาง |
45 | out-of-order-retryable | ธุรกรรมที่ลองใหม่ไม่อยู่ในลำดับ | ปานกลาง | ปานกลาง |
46 | reentrancy-no-eth | ช่องโหว่ในการกลับเข้าใหม่ (ไม่มีการขโมยอีเทอร์) | ปานกลาง | ปานกลาง |
47 | reused-constructor | ตัวสร้างฐานที่นำกลับมาใช้ใหม่ | ปานกลาง | ปานกลาง |
48 | tx-origin | การใช้ tx.origin ที่เป็นอันตราย | ปานกลาง | ปานกลาง |
49 | unchecked-lowlevel | ไม่ได้ตรวจสอบการโทรระดับต่ำ | ปานกลาง | ปานกลาง |
50 | unchecked-send | ยกเลิกการเลือกส่ง | ปานกลาง | ปานกลาง |
51 | uninitialized-local | ตัวแปรท้องถิ่นที่ไม่ได้เตรียมใช้งาน | ปานกลาง | ปานกลาง |
52 | unused-return | ค่าส่งคืนที่ไม่ได้ใช้ | ปานกลาง | ปานกลาง |
53 | incorrect-modifier | โมดิฟายเออร์ที่สามารถส่งคืนค่าเริ่มต้นได้ | ต่ำ | สูง |
54 | shadowing-builtin | การแชโดว์สัญลักษณ์ในตัว | ต่ำ | สูง |
55 | shadowing-local | การแชโดว์ตัวแปรท้องถิ่น | ต่ำ | สูง |
56 | uninitialized-fptr-cst | การเรียกตัวชี้ฟังก์ชันที่ไม่ได้เตรียมใช้งานในตัวสร้าง | ต่ำ | สูง |
57 | variable-scope | ตัวแปรท้องถิ่นที่ใช้ก่อนการประกาศ | ต่ำ | สูง |
58 | void-cst | ตัวสร้างเรียกว่าไม่ได้ใช้งาน | ต่ำ | สูง |
59 | calls-loop | โทรหลายสายในวง | ต่ำ | ปานกลาง |
60 | events-access | การควบคุมการเข้าถึงเหตุการณ์ที่ขาดหายไป | ต่ำ | ปานกลาง |
61 | events-maths | เลขคณิตเหตุการณ์ที่หายไป | ต่ำ | ปานกลาง |
62 | incorrect-unary | การแสดงออกที่ไม่เป็นอันตราย | ต่ำ | ปานกลาง |
63 | missing-zero-check | ไม่มีการตรวจสอบที่อยู่ศูนย์ | ต่ำ | ปานกลาง |
64 | reentrancy-benign | ช่องโหว่การกลับเข้ามาใหม่อย่างอ่อนโยน | ต่ำ | ปานกลาง |
65 | reentrancy-events | ช่องโหว่การกลับเข้าใหม่ซึ่งนำไปสู่เหตุการณ์ที่ไม่เป็นระเบียบ | ต่ำ | ปานกลาง |
66 | return-bomb | ผู้โทรระดับต่ำอาจใช้แก๊สของผู้โทรทั้งหมดโดยไม่คาดคิด | ต่ำ | ปานกลาง |
67 | timestamp | การใช้ block.timestamp ที่เป็นอันตราย | ต่ำ | ปานกลาง |
68 | assembly | การใช้งานประกอบ | ข้อมูล | สูง |
69 | assert-state-change | ยืนยันการเปลี่ยนแปลงสถานะ | ข้อมูล | สูง |
70 | boolean-equal | เปรียบเทียบกับค่าคงที่บูลีน | ข้อมูล | สูง |
71 | cyclomatic-complexity | ตรวจจับฟังก์ชันที่มีความซับซ้อนแบบไซโคลมาติกสูง (> 11) | ข้อมูล | สูง |
72 | deprecated-standards | มาตรฐาน Solidity ที่เลิกใช้แล้ว | ข้อมูล | สูง |
73 | erc20-indexed | พารามิเตอร์เหตุการณ์ ERC20 ที่ไม่ได้จัดทำดัชนี | ข้อมูล | สูง |
74 | function-init-state | ฟังก์ชั่นการเริ่มต้นตัวแปรสถานะ | ข้อมูล | สูง |
75 | incorrect-using-for | ตรวจจับการใช้คำสั่งเมื่อไม่มีฟังก์ชันจากไลบรารีที่กำหนดตรงกับประเภทที่กำหนด | ข้อมูล | สูง |
76 | low-level-calls | การโทรระดับต่ำ | ข้อมูล | สูง |
77 | missing-inheritance | ขาดมรดก | ข้อมูล | สูง |
78 | naming-convention | ความสอดคล้องกับแบบแผนการตั้งชื่อ Solidity | ข้อมูล | สูง |
79 | pragma | หากใช้คำสั่ง Pragma ที่แตกต่างกัน | ข้อมูล | สูง |
80 | redundant-statements | คำสั่งที่ซ้ำซ้อน | ข้อมูล | สูง |
81 | solc-version | เวอร์ชัน Solidity ไม่ถูกต้อง | ข้อมูล | สูง |
82 | unimplemented-functions | ฟังก์ชั่นที่ไม่ได้ใช้งาน | ข้อมูล | สูง |
83 | unused-import | ตรวจจับการนำเข้าที่ไม่ได้ใช้ | ข้อมูล | สูง |
84 | unused-state | ตัวแปรสถานะที่ไม่ได้ใช้ | ข้อมูล | สูง |
85 | costly-loop | การดำเนินงานที่มีค่าใช้จ่ายสูงในวง | ข้อมูล | ปานกลาง |
86 | dead-code | ฟังก์ชั่นที่ไม่ได้ใช้ | ข้อมูล | ปานกลาง |
87 | reentrancy-unlimited-gas | ช่องโหว่การกลับเข้าใหม่ผ่านการส่งและการถ่ายโอน | ข้อมูล | ปานกลาง |
88 | too-many-digits | ความสอดคล้องกับแนวทางปฏิบัติที่ดีที่สุดของสัญลักษณ์ตัวเลข | ข้อมูล | ปานกลาง |
89 | cache-array-length | ตรวจ for ลูปที่ใช้สมาชิก length ของอาเรย์จัดเก็บข้อมูลบางตัวในเงื่อนไขลูปและไม่แก้ไข | การเพิ่มประสิทธิภาพ | สูง |
90 | constable-states | ตัวแปรสถานะที่สามารถประกาศค่าคงที่ได้ | การเพิ่มประสิทธิภาพ | สูง |
91 | external-function | งานสาธารณะที่สามารถประกาศภายนอกได้ | การเพิ่มประสิทธิภาพ | สูง |
92 | immutable-states | ตัวแปรสถานะที่สามารถประกาศได้ว่าไม่เปลี่ยนรูป | การเพิ่มประสิทธิภาพ | สูง |
93 | var-read-using-this | สัญญาอ่านตัวแปรของตัวเองโดยใช้ this | การเพิ่มประสิทธิภาพ | สูง |
สำหรับข้อมูลเพิ่มเติม โปรดดู
human-summary
: พิมพ์สรุปสัญญาที่มนุษย์สามารถอ่านได้inheritance-graph
: ส่งออกกราฟมรดกของแต่ละสัญญาเป็นไฟล์จุดcontract-summary
: พิมพ์สรุปสัญญาloc
: นับจำนวนบรรทัดทั้งหมดของโค้ด (LOC), บรรทัดซอร์สของโค้ด (SLOC) และบรรทัดความคิดเห็นของโค้ด (CLOC) ที่พบในไฟล์ต้นฉบับ (SRC), การขึ้นต่อกัน (DEP) และไฟล์ทดสอบ (TEST)call-graph
: ส่งออกกราฟการโทรของสัญญาไปยังไฟล์ dotcfg
: ส่งออก CFG ของแต่ละฟังก์ชันfunction-summary
: พิมพ์สรุปฟังก์ชันvars-and-auth
: พิมพ์ตัวแปรสถานะที่เขียนและการอนุญาตฟังก์ชันnot-pausable
: ฟังก์ชั่นการพิมพ์ที่ไม่ได้ใช้ whenNotPaused
modifier หากต้องการเรียกใช้เครื่องพิมพ์ ให้ใช้ --print
และรายการเครื่องพิมพ์ที่คั่นด้วยเครื่องหมายจุลภาค
ดูเอกสารประกอบของเครื่องพิมพ์สำหรับรายการทั้งหมด
slither-check-upgradeability
: ตรวจสอบความสามารถในการอัปเกรดตามการเรียก delegatecall
slither-prop
: การทดสอบหน่วยอัตโนมัติและการสร้างคุณสมบัติslither-flat
: ทำให้โค้ดเบสเรียบขึ้นslither-check-erc
: ตรวจสอบความสอดคล้องของ ERCslither-format
: การสร้างแพตช์อัตโนมัติslither-read-storage
: อ่านค่าพื้นที่เก็บข้อมูลจากสัญญาslither-interface
: สร้างอินเทอร์เฟซสำหรับสัญญาดูเอกสารประกอบเครื่องมือสำหรับเครื่องมือเพิ่มเติม
ติดต่อเราเพื่อขอความช่วยเหลือในการสร้างเครื่องมือแบบกำหนดเอง
เอกสารเกี่ยวกับระบบภายในของ Slither มีอยู่ที่นี่
อย่าลังเลที่จะแวะมาที่ช่อง Slack ของเรา (#ethereum) เพื่อขอความช่วยเหลือในการใช้หรือขยาย Slither
เอกสารประกอบของเครื่องพิมพ์จะอธิบายข้อมูลที่ Slither สามารถสร้างภาพให้กับสัญญาแต่ละฉบับได้
เอกสารประกอบของ Detector อธิบายวิธีเขียนการวิเคราะห์ช่องโหว่ใหม่
เอกสารประกอบ API อธิบายวิธีการและออบเจ็กต์ที่พร้อมใช้งานสำหรับการวิเคราะห์แบบกำหนดเอง
เอกสาร SlithIR อธิบายการแสดงระดับกลางของ SlithIR
ฉันจะยกเว้นการจำลองหรือการทดสอบได้อย่างไร
ฉันจะแก้ไขปัญหา "ไฟล์ที่ไม่รู้จัก" หรือการคอมไพล์ได้อย่างไร
slither contract.sol
จะล้มเหลว ให้ใช้ slither .
แทน ในไดเรกทอรีหลักของ contracts/
(คุณควรเห็น contracts/
เมื่อคุณรัน ls
) หากคุณมีโฟลเดอร์ node_modules/
จะต้องอยู่ในไดเร็กทอรีเดียวกันกับ contracts/
เพื่อตรวจสอบว่าปัญหานี้เกี่ยวข้องกับ slither ให้รันคำสั่งการคอมไพล์สำหรับเฟรมเวิร์กที่คุณใช้ เช่น npx hardhat compile
นั่นจะต้องทำงานให้สำเร็จ มิฉะนั้น เอ็นจิ้นการคอมไพล์ของ slither ซึ่งเป็นการคอมไพล์แบบคริติกไม่สามารถสร้าง AST ได้ Slither ได้รับใบอนุญาตและจัดจำหน่ายภายใต้ใบอนุญาต AGPLv3 ติดต่อเราหากคุณกำลังมองหาข้อยกเว้นสำหรับข้อกำหนด
ชื่อ | การใช้งาน | ผู้เขียน | สถานที่ | รหัส |
---|---|---|---|---|
การปฏิเสธ: วิธีการตรวจจับช่องโหว่การกลับเข้าซ้ำตาม AST | การวิเคราะห์ตาม AST ที่สร้างขึ้นบน Slither | รุ่ยหม่า, เซเฟิงเจี้ยน, กวงหยวนเฉิน, เคอหม่า, หยูเจียเฉิน | ซีทีไอเอส 19 | - |
MPro: การผสมผสานการวิเคราะห์แบบคงที่และเชิงสัญลักษณ์สำหรับการทดสอบที่ปรับขนาดได้ของสัญญาอัจฉริยะ | ใช้ประโยชน์จากการพึ่งพาข้อมูลผ่าน Slither | วิลเลียม จาง, เซบาสเตียน บาเนสคู, ลีโอดาร์โด ปาซอส, สตีเว่น สจ๊วร์ต, วิเจย์ กาเนช | ISRE 2019 | เอ็มโปร |
ETHPLOIT: จากการคลุมเครือไปจนถึงการสร้างการใช้ประโยชน์อย่างมีประสิทธิภาพโดยเทียบกับสัญญาอัจฉริยะ | ใช้ประโยชน์จากการพึ่งพาข้อมูลผ่าน Slither | จางชิงจ้าว, อี้จัว หวาง, ฮวนรู่ ลี, ซีชีหม่า | ซาเนอร์ 20 | - |
การตรวจสอบ Ethereum Smart Contracts: แนวทางการตรวจสอบแบบจำลอง | การดำเนินการเชิงสัญลักษณ์ที่สร้างขึ้นบน CFG ของ Slither | ตัมบ่าง, ฮว่าง เอช เหงียน, ดุง เหงียน, ตวน เตรียว, โธ ควน | ไอเจเอ็มแอลซี 20 | - |
การซ่อมแซมสัญญาอัจฉริยะ | พึ่งพาเครื่องตรวจจับช่องโหว่ของ Slither | เซียว เหลียง หยู่, โอมาร์ อัล-บาตาเนห์, เดวิด โล, อับฮิก รอยโชดูรี | โทเซม 20 | การซ่อมแซม |
ไขปริศนาลูปในสัญญาอัจฉริยะ | ใช้ประโยชน์จากการพึ่งพาข้อมูลผ่าน Slither | เบน มาเรียโน่, ยานจู เฉิน, หยูเฟิง, ชูเวนดู ลาฮิรี, อิซิล ดิลลิก | อาเซี่ยน 20 | - |
การประมาณค่าก๊าซแบบไดนามิกตามการติดตามของลูปในสัญญาอัจฉริยะ | ใช้ CFG ของ Slither เพื่อตรวจจับลูป | ชุนเมี่ยว ลี, ซือเจี๋ย เนีย, หยาง เฉา, อี้จุน หยู่, เจิ้นเจียง หู | IEEE Open J. คอมพิวเตอร์ สังคมสงเคราะห์ 1 (2563) | - |
SAILFISH: การตรวจสอบข้อบกพร่องที่ไม่สอดคล้องกันของรัฐสัญญาอัจฉริยะในไม่กี่วินาที | พึ่งพา SlithIR เพื่อสร้าง กราฟการพึ่งพาพื้นที่เก็บข้อมูล | ปริยังกา โบส, ดิปันจัน ดาส, หยานจู เฉิน, หยูเฟิง, คริสโตเฟอร์ ครูเกล และจิโอวานนี วินญา | เอสแอนด์พี 22 | ปลาเซลฟิช |
SolType: ประเภทการปรับแต่งสำหรับการโอเวอร์โฟลว์ทางคณิตศาสตร์ใน Solidity | ใช้ Slither เป็นส่วนหน้าเพื่อสร้างระบบประเภทการปรับแต่ง | ไบรอัน ตัน, เบนจามิน มาเรียโน, ชูเวนดู เค. ลาฮิรี, อิซิล ดิลลิก, หยูเฟิง | ปปล.22 | - |
อย่ายุ่งกับฉัน: ใช้ประโยชน์จากเทคนิคการเรียนรู้ของเครื่องเพื่อการตรวจจับกลโกงอัตโนมัติ | ใช้ Slither เพื่อแยกคุณสมบัติของโทเค็น (mintable, pausable, ..) | มาซอร์รา, บรูโน, วิคเตอร์ อาดาน และวาเนซ่า ดาซา | คณิตศาสตร์ 10.6 (2022) | - |
MANDO: การฝังกราฟที่แตกต่างกันหลายระดับสำหรับการตรวจจับช่องโหว่ของสัญญาอัจฉริยะแบบละเอียด | ใช้ Slither เพื่อแยก CFG และกราฟการโทร | ฮว่าง เหงียน, นัท-มินห์ เหงียน, ชุนเหยา เสีย, ซาห์รา อาห์มาดี, แดเนียล คูเดนโด, ทันห์-นัม โดน และหลิงเซียว เจียง | การประชุมนานาชาติ IEEE 9th เกี่ยวกับวิทยาศาสตร์ข้อมูลและการวิเคราะห์ขั้นสูง (DSAA, 2022) | ge-sc |
การตรวจสอบอัตโนมัติของช่องโหว่ TOD ที่โก่งราคาในสัญญาอัจฉริยะ | ใช้ Slither เพื่อแยก CFG และการพึ่งพาข้อมูล | ซิดี้ โมฮาเหม็ด เบลลาฮี, เอริค คีลตี, คีร์ธี เนลาตูรู, อันเดรียส เวเนริส และฟาน ลอง | การประชุมนานาชาติ IEEE ปี 2022 เรื่อง Blockchain และ Cryptocurrency (ICBC) | สมาร์ทสัญญา-ซ่อมแซม |
การสร้างแบบจำลองและการบังคับใช้นโยบายการควบคุมการเข้าถึงสำหรับสัญญาอัจฉริยะ | ขยายการพึ่งพาข้อมูลของ Slither | ยาน-ฟิลิปป์ โทเบิร์ก, โยนาส ชิฟเฟิล, เฟรเดริก ไรช์, แบร์นฮาร์ด เบ็คเคิร์ต, โรเบิร์ต ไฮน์ริช, ราล์ฟ รอยส์เนอร์ | การประชุมนานาชาติ IEEE เรื่องแอปพลิเคชันและโครงสร้างพื้นฐานแบบกระจายอำนาจ (DAPPS) ปี 2022 | SolidityAccessControlการบังคับใช้ |
การตรวจจับช่องโหว่ของสัญญาอัจฉริยะโดยอาศัยการเรียนรู้เชิงลึกและการผสมผสานการตัดสินใจหลายรูปแบบ | ใช้ Slither เพื่อแยก CFG | Weichu Deng, Huanchun Wei, Teng Huang, Cong Cao, Yun Peng และ Xuan Hu | เซ็นเซอร์ 2023, 23, 7246 | - |
กราฟความรู้โค้ดที่เสริมความหมายเพื่อเปิดเผยสิ่งที่ไม่รู้จักในการใช้โค้ด Smart Contract ซ้ำ | ใช้ Slither เพื่อแยกฟีเจอร์โค้ด (CFG, ฟังก์ชัน, ประเภทพารามิเตอร์, ..) | ชิงหวง, เตียนชู เหลียว, เจิ้นชางซิง, เจิ้งคังจั่ว, ชางจิงหวาง, ซินเซี่ย | ธุรกรรม ACM เกี่ยวกับวิศวกรรมซอฟต์แวร์และวิธีการ, 2023 | - |
การดำเนินการตามสัญญาอัจฉริยะพร้อมการเข้าถึงสถานะแบบละเอียด | ใช้ Slither เพื่อสร้างกราฟการเข้าถึงสถานะ | เสี่ยวตง ฉี, เจียว เจียว, ยี่ ลี่ | การประชุมนานาชาติเรื่องระบบคอมพิวเตอร์แบบกระจาย (ICDCS) ปี 2023 | - |
แอปเปิ้ลที่ไม่ดี: ทำความเข้าใจกับความเสี่ยงด้านความปลอดภัยแบบรวมศูนย์ในระบบนิเวศแบบกระจายอำนาจ | ใช้การวิเคราะห์ภายในที่ด้านบนของ Slither | ไคหลุน หยาน, จางเหลียน, เซียงหยู่ หลิว, เหวินรุ่ย เตี้ย, ซานชิง กั๋ว | การประชุมผ่านเว็บ ACM เมษายน 2023 | - |
การระบุช่องโหว่ในสัญญาอัจฉริยะโดยใช้การวิเคราะห์ช่วงเวลา | สร้างเครื่องตรวจจับ 4 เครื่องที่ด้านบนของ Slither | เตฟาน-คลอดู ซูซาน, อังเดร อารูโซเอีย | ตั้งแต่ปี 2023 | - |
การวิเคราะห์สถานะการจัดเก็บข้อมูลและการสกัดสัญญาอัจฉริยะ Ethereum Blockchain (ไม่มี PDF ในการเข้าถึงแบบเปิด) | ไว้วางใจ CFG และ AST ของ Slither | มหายับ, ทาเนีย ซาลีม, มูฮัมหมัด จันจัว, ตัลฮา อาหมัด | โทเซม 2023 | SmartMuv |
หากคุณกำลังใช้ Slither ในงานวิชาการ ลองสมัครเพื่อรับรางวัล Crytic มูลค่า 10,000 ดอลลาร์