Ở nghiên cứu này, nhóm sẽ tập trung vào cách triên khai cácháp dụng các kĩ thuật bẫy vào hợp đồng thông minh, các phương pháp phát hiện các hợp đồng bẫy nhằm bảo đảm an toàn, hạn chế nhữ
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYÈN THÔNG
NGUYEN THANH TÙNG
NGUYÊN HOÀNG SƠN
KHÓA LUẬN TÓT NGHIỆP
NGHIÊN CỨU THỰC NGHIỆM TRIEN KHAI VA
PHAT HIỆN BAY TREN HỢP DONG THONG MINH
EMPIRICAL STUDY ON DEPLOYING AND
DETECTING HONEYPOT SMART CONTRACTS
KY SU NGANH AN TOAN THONG TIN
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG
NGUYEN THANH TUNG - 17521239
NGUYEN HOANG SON - 17520987
NGHIEN CUU THUC NGHIEM TRIEN KHAI VA PHAT HIEN BAY TREN HOP DONG THONG MINH
EMPIRICAL STUDY ON DEPLOYING AND DETECTING HONEYPOT SMART CONTRACTS
KY SU NGANH AN TOAN THONG TIN
GIANG VIEN HUONG DAN
THS DO HOÀNG HIEN
TP HO CHi MINH, 2021
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
"— een enenee ngay của Hiệu trưởng Trường Dai hoc
Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN Lời đầu tiên, chúng em xin gửi lời tri ân sâu sắc đến thầy ThS Đỗ Hoàng Hiển và thay ThS.Phan Thế Duy đã hướng dẫn, quan tâm, hỗ trợ tận tình dé chúng
em có thé hoàn thành khóa luận một cách tốt nhất.
Chúng em cũng gửi lời cảm ơn chân thành đến toàn thể quý thầy cô trường Đại học Công nghệ thông tin, đặc biệt là các thầy cô khoa Mạng máy tính & Truyền thông, phòng thí nghiệm An toàn thông tin đã truyền đạt những kiến thức
và kinh nghiệm quý báu trong suốt quãng thời gian học tập tại trường.
Chúng em xin chân thành cảm ơn!
Thành phó Hồ Chí Minh, tháng 07 năm 2021
Trang 5MỤC LỤC
Chương l MO ĐẦU -.5-2522222222E22E222E222E221 2E EEErcrrrrrrrree 14
LD, Dat VAN dG he
1⁄2 Mục tiêu dé tài
1.3 _ Đối tượng nghiên cứu
1.4 _ Phạm vi nghiên cứu
1.5 _ Cấu trúc khóa luận - 2+ 2+E2Et2kSEEEEE22121211 7121222 cxee
Chương 2 TONG QUAN 2.2.2: St 222v 3212111112111 xe 18
", (£ <' 32
Chương 3 PHAN TÍCH THIET KE HE THONG .34 3.1 _ Giới thiệu chung về hệ thống 34
3.2 _ Quy trình hoạt động 35
3.3 Phương pháp nhận diện tấn công :-+¿©c+++cx+scxvsrrerzrx 35
3.3.1 Symbolic Execution + HeuriSfiC - «se +++x<xveseeseees 36 3.3.2 Dafa SGICnCC HH HT HH HT TH Hy 39
Chương 4 THỰC NGHIỆM VÀ ĐÁNH GIA
4.1 _ Triển khai hợp đồng trên mạng thử nghiệm
45
+ 46 4.1.1 Tạo mang thử nghiệm ¿cty 46
4.1.2 Triển khai hợp đồng -¿- 2c c2 EEkrrrrrrrrrrerre 48 4.2 Phân tích hợp đồng bằng HONEYBADGER -¿ 57 4.3 — Xây dựng hệ thống we 99
4.3.1 Xây dựng backend we SD 4.3.2 _ Xây dung Írontend - + cty 63
4.4 Đánh giá hệ thống -:©25:222c22t2EEtEEtrrrrrtrrrrrrrerree 73
Trang 64.5 Áp dụng phương pháp Data Science . -©ccc5cxcscscsrsee 76 Chương 5 TONG KET cc2Scccireerrrriiiirrrrrrrrrriee 89 5.I Két luận
5.1.1 Kết qua.
5.1.2 Kho khăn.
5.2 Hướng phát triển :-+ +2kt2ktEEEEEEEEEEErrrrererkrerrre 89 5.3 Kết luận c2 1222 122222122211 errrerre 90 TÀI LIEU THAM KHẢO 25:22522222222E22E22EEEEEEvEEErerxrerrrrrrrrervree 91
Trang 7HÌNH ANH
Hình 2.1 Cách hợp đồng thông minh hoạt động - 255252552: 19
Hình 2.2 Sự khác biệt giữa apps và dappsS nh re 24
Hình 2.4 Cấu trúc của property-based fesfing ¿ + se scxsx+x+xzxzxcerrses 30
Hình 2.5 Định nghĩa Property-based fesfIng - csssssssserrererreres 30
Hình 2.6 Minh họa về symbolic eXecufiOn 2-5-5 5£+EeEe£e££zszezxzeez 31Hình 3.1 Mô hình triển khai hệ thống - ¿2-5 ¿5222222 £+2E+Evzzxzxrresxes 34Hình 3.2 Cách thức hoạt động của hệ thống -: - 5252225 z+xzxczzsxe2 35Hình 4.1 Các bước thực hiện và đánh giá hệ thống ¬ 45
Hình 4.2 Giao diện của Ganache - c5 c c1 1111111011331 1 1111111111111 c2 46
Hình 4.3 Các tài khoản ảo trong Ganache cc nh rrrreses 47
Hình 4.4 Giao diện ganache - TS reg 47
Hình 4.5 Thiết lập thông số mạng ảo trên Ganache - - +2+s+s+s£s£s 48
Hình 4.6 Khởi tạo môi trường dé triển khai hợp đồng -:-5-: 48
Hình 4.7 Cấu hình Ganache ¿+ 5£ S£+E‡E£EE2E2E£EEE2EEEEEEEEEEEEEEErkrkrrrrees 49
Hình 4.8 Hợp đồng thông minh được trién khai -2-5- +s+s+s+c+cecs 50Hình 4.9 Thông tin về hợp đồng sau khi được triển khai -. - 50Hình 4.10 Hợp đồng thông minh - - + E+E2E2E+E£E££E£E£EvEeEeEzErErerererers 51Hình 4.11 Khai báo thông số của mạng ảo ¿©2- 52 S2++2cczxzxezssees 51Hình 4.12 private key dé xác nhận tài khoản trong mang ảo - 52Hình 4.13 Các tài khoản dùng dé thực nghiệm - ¿255 52+s+xes+ss+2 52
Hình 4.15 Tài khoản khai thác nhập api của hop đồng wee eee 53
Hình 4.16 Thông bao giao dịch thành công từ tai khoản sở hữu hợp đồng 54 Hình 4.17 Kẻ tan công tiến hành khai thác hợp đồng c-ccccccccccsea 54
Hình 4.18 Thông báo chuyên tiền vào hợp đồng thành công 55
Hình 4.19 Lệnh rút tiền từ tài khoản sở hữu hợp đồng - 5-5-5 s©+ 55
Hình 4.20 Người tạo hợp đồng rút tiền thành công - 2-2-5555: 56Hình 4.21 Lịch sử giao dịch của hợp đồng thông minh - 5-5-5 2+ 56Hình 4.22 Danh sách các hợp đồng thông minh chứa bẫy có trong
HONEYBADGE HH 57
Hình 4.23 Minh họa hợp đồng thông minh ¿52 2 252 2222+E+E+xzxeeerers 58Hình 4.24 Kết quả tra về của HONEYBADGER ccscscscseseseseseseseseseseseeseees 59
Hình 4.25 MetaMask-Snaps-Be€fa Tnhh key 63 Hình 4.26 Minh họa quá trình chạy MetaMask-Snaps_ Beta - 63
Hình 4.27 Các trình duyệt hỗ trợ bởi Metamask-Snaps-Beta 64
Trang 8Hình 4.34 Tao giao dịch tới hợp đồng honeypot - 5 cczccszszxzxzxez 72
Hình 4.35 Thông báo cảnh báo honey trước khi xác nhận giao dịch 72
Hình 4.36 Dia chỉ các hon€YypO - cà 75
Hình 4.37 Các tính chất của honeypO( -¿ + ++2+2+s+E+E+E+EeEeEeEerrsrsrkrerree 77
Hình 4.39 Kết quả trả VỆ -:- E5 St SSEE 915121212115 11 1111111111111 01T e 77Hình 4.40 Tần suất các kĩ thuật honeypOfs - 5: ¿522222 2z222xzEzxzxererrei 78Hình 4.41 Loại bỏ các cột giá trị không cần thiẾt ¿5 + +x+s+s+<£cscz 78
Hình 4.42 Chỉnh sửa các gia FỊ 11H ST v1 ng 1 11 khe rey 79
Hình 4.43 Loại các hợp đồng không được tạo từ bytecode và không có
SOUTC€COC LH 0 tr 79
Hình 4.44 Loại các dữ liệu không cần thiết ¿2-5 2 z+x+sc2+xzxczzsxe2 80
Hình 4.46 Chuẩn bị dữ liệu cho mô hình -.- ¿5+ ++>xvzxtsxvsxvsrvsrverxee 80
Hình 4.47 Tỉ lệ mẫu âm tính và dương tính - - +52 +22 +2 £+x+s+z£+£+zzzc+2 81
Hình 4.48 Sử dụng XGBoost để huấn luyén ccceccccccscsescseseeesesescseseseseeseeees 81Hình 4.49 Kết quả quá trình huấn luyện và kiém tra - 25+: 82Hình 4.50 Mức độ ảnh hưởng của các thuộc tính trong hợp đồng honeypot 83Hình 4.51 Xuất kết quả ra file probabilities.eSV -2-5-5ccccc+cccccsc: 83
Trang 9BANG BIEU
Bảng 2.1 Phân loại Dapps ce eeesceeesseeceeesneeeeeesneeeesesaeeeeesaeeeessaeeesesnaeeesee 23 Bảng 2.2 Phân loại hon€ypO( - c1 11130112222 111 111 ng 111kg và 26 Bảng 3.1 Các giá tri được dùng trong phương pháp symbolic execution 37
Bảng 3.2 Các biến và giá trị -:- St cà S S11 1121212111 1111 111111110111 111101 43Bảng 4.1 Kết quả thời gian quét hợp đồng thông minh theo từng loại honeypots
"¬— 74
Bảng 4.2 Khả năng phát hiện honeypots của 8 kỹ thuật - 76
Trang 10ĐẠI HỌC QUỐC GIA TP HỖ CHÍ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Cán bộ hướng dẫn: ThS Đỗ Hoàng Hiên
[Thời gian thực hiện: Từ ngày 6/3/2021
Sinh viên thực hiện:
Sinh viên: Nguyễn Thanh Tùng MSSV: 17521239 SDT: 0357908366 Sinh viên: Nguyễn Hoàng Sơn MSSV: 17520987 SDT: 0977572906
Giới thiệu:
Ethereum cho phép các hợp đồng thông minh được thực thi trên một mạnglưới các nút phi tập trung Các hợp đồng thông minh này càng ngày càngphổ biến va mang trong mình giá trị cao, trở thành mục tiêu cho các hacker
Trong vài năm qua, một số hợp đồng thông minh đã bị khai thác bởi những
kẻ tan công Tuy nhiên, một xu hướng mới hướng tới cách tiếp cận chủ động
hơn dường như đang gia tăng, nơi những kẻ tấn công không tìm kiếm các
hợp đồng dễ bị tấn công nữa Thay vào đó, họ cé gắng dụ nạn nhân của mình
vào bẫy bằng cách triển khai các hợp đồng dường như dễ bị ton thương có
chứa các bẫy ân Loại hợp đồng mới này thường được gọi là honeypots Đề
người dùng tránh khỏi những rủi ro mất tiền không đáng có, một nhóm các
nhà nghiên cứu từ trường Luxembourg đã trình bay một công cụ có tên là
HONEYBADGER, công cụ này quét các hợp đồng thông minh bằng cách
dùng phương pháp phân tích symbolic execution dé phân tích mã bytecode
Trang 11của hợp đồng Ở nghiên cứu này, nhóm sẽ tập trung vào cách triên khai cách
áp dụng các kĩ thuật bẫy vào hợp đồng thông minh, các phương pháp phát
hiện các hợp đồng bẫy nhằm bảo đảm an toàn, hạn chế những rủi ro không
đáng có cho người dùng khi tham gia vào mạng lưới Ethereum Smart
Contracts.
Mục tiêu:
« Nghién cứu các kỹ thuật bay Honeypot và cách triển khai trên hợp đồng
thông minh (các hợp đồng chứa lỗ hong bao mat)
¢ Su dụng các công cụ, phương pháp can thiết dé phát hiện các lỗ hồng bảo
mật và bẫy Honeypot trên hợp đồng thông minh.
Pham vi nghiên cứu:
‹ Cac kỹ thuật giăng bay Honeypot trên Hợp đồng thông minh Ethereum
‹ _ Công cụ quét lỗ hổng bảo mật hợp đồng thông
minh: Oyente, HoneyBadger,
minh: Static analysis, Symbolic execution,
Đối tượng nghiên cứu:
Các hợp đồng thông minh; ngôn ngữ dé viết hợp đồng thông minh Solidity
Các lỗ hồng bảo mật trong hợp đồng thông minh và một số phương pháp
phát hiện.
Các kỹ thuật bay Honeypot.
Công cụ phục vụ cho việc phát hiện lỗ hồng bảo mật và quét bẫy như
HONEYBADGER.
Phuong phap thuc hién:
Ngắt Trang
Trang 12a Nội dung 1: Tim hiéu các syntax của ngôn ngữ Solidity và các yêu cầu
cần thiết để có thể viết hoặc hiểu một hợp đồng thông minh Tìm hiểu một
số lỗi hợp đồng thông minh phô biến.
Mục tiêu:
o Năm được cốt lõi của một ngôn ngữ lập trình và có thé đọc hiểu
code của các hợp đồng thông minh
o Năm bắt được một số lỗ hồng bảo mật phổ biến trong hợp đồng
thông minh và kỹ thuật phát hiện.
Phương pháp: Xem các tai liệu, video tham khảo hướng dẫn về ngôn ngữ
Solidity, lỗ héng bảo mật hợp đồng thông minh.
b Nội dung 2: Tìm hiểu các kỹ thuật bẫy honeypot, cách áp dụng các kĩ
thuật bay vào trong hợp đồng Đồng thời tìm hiểu các phương pháp phát
hiện lỗ hồng bao mật trong hợp đồng thông minh.
Mục tiêu: ; - ;
o Phân biệt, nhận biệt được các kỹ thuật bay trong hop dong thông
minh.
o Hiểu được các phương pháp quét hợp đồng thông minh: phân tích
tinh(Static analysis), phân tích thuộc tinh (Property-based testing), phân tích thực thi tượng trưng (Symbolic execution), Nhóm sé
tập trung vào phương pháp symbolic execution dé quét các hợp
đồng chứa lỗ hồng.
o_ Biết được cách triển khai các kỹ thuật vào hợp đồng thông minh
Phương pháp:
o Tham khảo các tài liệu liên quan.
o So sánh sự khác nhau giữa các kĩ thuật và trường hợp áp dụng.
o Thực hiện triển khai các kĩ thuật bẫy vào một hợp đồng thông
minh.
c Nội dung 3: Tìm hiểu tong quan về công cụ HONEYBADGER, sử dụng
công cụ này dé phát hiện các bẫy honeypot trong hợp đồng thông minh.
Mục tiêu: Hiểu về các chức năng, cách thức hoạt động, cơ chế hoạt động
của công cụ HONEYBADGER Sử dụng nhiều công cụ dé thực nghiệm
trên các hợp đồng thông minh bay đã triển khai Nhận biết được ưu nhược
từng công cụ, tốc độ phát hiện các lỗ hồng bảo mật, đưa ra được bảng so
sánh các công cụ.
Phương pháp:
o Tham khảo các tài liệu liên quan, video mô tả, tài liệu giải thích và
phương pháp dé quét các hợp đồng bay
o Đọc các tài liệu về cach sử dung, cơ chế của các công cu quét lỗ
hồng bảo mật.
o_ Thực hiện việc quét một hợp đồng thông minh bằng nhiều công cụ
khác nhau để xem kết quả và đưa ra nhận xét
10
Trang 13e Có khả năng đọc hiểu các hợp đồng thông minh và nắm bắt một số lỗ hồng
bảo mật phô biến.
Triển khai được hợp đồng thông minh
Áp dụng thành công các kĩ thuật bẫy vào hợp đồng thông minh
Dùng công cụ quét thành công các hợp đồng thông minh bẫy
Có kết quả tổng quan và đưa ra được báo cáo về quá trình thực hiện đề tài
Tài liệu tham khảo:
C Ferreira Torres, M Steichen et al., "The art of the scam: Demystifying honeypots
in ethereum smart contracts", USENIX Security Symposium, vol 2019, 14-16 Augus
2019.
R Camino, C Ferreira Torres et al., "4 Data Science Approach for Detecting| Honeypots in Ethereum", 2020 IEEE International Conference on Blockchain and
Cryptocurrency (ICBC), 17 August 2020.
S Nakamoto, "Bitcoin: A peer-to-peer electronic cash system", Cryptography
ailing list, 03 2009.
G Wood, "Ethereum: A secure decentralised generalised transaction|
ledger", Ethereum Project Yellow Paper, vol 151, pp 1-32, 2014.
G Wood, "Solidity 0.5.11 documentation", September 2019, [online] Available: https://solidity.readthedocs.io/en/v0.5.11/.
IN Atzei, M Bartoletti and T Cimoli, "A Survey of Attacks on Ethereum smart contracts (SoK)", Proceedings of the 6th International Conference on Principles o Security and Trust - Volume 10204, pp 164-186, 2017.
IA Sherbachev, "Hacking the hackers: Honeypots on ethereum network", Decembe
2018, [online] Available: on-ethereum-network-5baa35a13577.
https://hackernoon.com/hacking-the-hackers-honeypots-Kế hoạch thực hiện: (Mô ta kế hoạch làm việc và phân
công công việc cho từng sinh viên tham gia)
HONEYBADGER hợp đồng thông minh, các lỗ
hồng bảo mật trong hợp đồng thông minh
Trang 14Tháng 6/2021 Tìm hiểu cách phát | Tìm hiểu cách chèn bay
hiện các bay trong |vao hợp đồng thông minh
hợp đông thông minh Thực nghiệm
Thực nghiệm
Xác nhận của CBHD TP HCM, ngày tháng năm
(Ký tên và ghi rõ họ tên) Sinh viên
(Ký tên và ghi rõ họ tên)
Nguyễn Thanh Tùng Nguyễn Hoàng Sơn
12
Trang 15TOM TAT VAN DE
Ethereum cho phép các hợp đồng thông minh được thực thi trên một mạng lưới các nút phi tập trung Các hợp đồng thông minh này càng ngày càng phổ biến và mang
trong mình giá trị cao, trở thành mục tiêu cho các hacker.
Trong vài năm qua, các hợp đồng thông minh đã bị khai thác bởi những kẻ tan công Tuy nhiên, thay vì tìm kiếm các lỗ hồng dé tan công trong hợp đồng thông minh, những kẻ tấn công có xu hướng dụ nạn nhân vào bẫy bằng cách triển khai các hợp đồng
dường n hư dễ bị tổn thương và có chứa các bẫy ân Loại hợp đồng mới này được gọi
là honeypots.
Đề người dùng tránh khỏi những rủi ro mất tiền không đáng có, một nhóm các
nhà nghiên cứu từ trường Luxembourg đã trình bày một công cụ có tên là
HONEYBADGER"TM!|, công cụ này quét các hợp đồng thông minh bằng cách dùng
phương pháp phân tích symbolic execution dé phân tích mã bytecode của hợp đồng.
Ở nghiên cứu này, nhóm sẽ tập trung vào cách triển khai cách áp dụng các kĩ thuật
bẫy vào hợp đồng thông minh, các phương pháp phát hiện các hợp đồng bẫy nhằm bảo đảm an toàn, hạn chế những rủi ro không đáng có cho người dùng khi tham gia vào
mạng lưới Ethereum Smart contract.
Trang 16Chương 1 MỞ DAU
1.1 Đặt vấn đề
Khái niệm về blockchain đã được giới thiệu vào năm 2009 Ilvới việc phát hành Satoshi Nakamoto Bitcoin và đã phát triển rất nhiều ké từ đó Nó được coi là một trong những công nghệ đột phá nhất ké từ khi chính Internet phát minh ra Trong những năm gần đây, các công ty trên toàn cầu đã dé giá trị vào nghiên cứu blockchain, xem xét cách nó có thê làm cho hoạt động kinh doanh hiện tại của họ hiệu quả và an toàn hơn.
Về co bản, blockchain là một danh sách các bản ghi có thể xác minh, chỉ thêm vào, trong đó tất cả các giao dịch được ghi lại trong cái gọi là khối Mọi khối được liên kết với khối trước của nó thông qua một băm mật mã, do đó tạo thành một chuỗi khối
hoặc cái gọi là “blockchain” Danh sách này được duy trì bởi một mạng ngang hàng
phân tán của các nút không đáng tin cậy, tuân theo một giao thức đồng thuận chỉ định việc nối thêm các khối mới Niềm tin có được thông qua giả định rằng phần lớn hành động trung thành và đi ngược lại giao thức là quá tốn kém.
Một loạt các triển khai blockchain khác nhau đã xuất hiện kể từ khi Bitcoin ra đời Tuy nhiên, tất cả các triển khai này đều theo đuổi một mục tiêu chung, đó là phân cấp quyền kiểm soát đối với một tài sản cụ thể Tài sản của Bitcoin là tiền điện tử của
nó và các thực thé tập trung đáng tin cậy mà nó cố gắng phân quyền là các ngân hàng truyền thống Các blockchain hiện đại như Ethereum nhằm mục đích phân cấp toàn bộ máy tính thông qua cái gọi là hợp đồng thông minh Hợp đồng thông minh là các chương trình được lưu trữ và thực thi trên chuỗi khối Ethereum thông qua Máy ảo Ethereum (EVM) EVM là một máy ảo hoàn toàn dựa trên ngăn xếp hỗ trợ tập hợp các
mã quang học hoàn chỉnh Turing Các hợp đồng thông minh được triển khai, gọi và chuyên từ blockchain thông qua các giao dịch Mỗi hoạt động trên EVM tiêu tốn một lượng khí cụ thể Khi vượt quá tổng lượng gas được chỉ định cho một giao dịch, quá trình thực hiện chương trình sẽ bị chấm dứt và các tác động của nó sẽ bị đảo ngược Đối với các chương trình truyền thống, hợp đồng thông minh là bat biến Do đó, những sai lầm lập trình mà nhà phát triển không bao giờ có ý định, giờ đây trở nên không thể
14
Trang 17sửa chữa được Các nhà phát triển thường viết hợp đồng thông minh bằng một ngôn ngữ cấp cao được biên dịch thành EVM bytecode Tại thời điểm viết bài, Solidity là ngôn ngữ cấp cao phố biến nhất dé phát triển các hợp đồng thông minh trong Ethereum Năm 2018, Ethereum đạt mức vốn hóa thị trường hơn 133 tỷ đô la Khi nó ngày càng trở nên có giá trị, những kẻ tắn công ngày càng được khuyến khích nhiều hơn để tìm
và khai thác các hợp đồng dễ bị tấn công Trên thực tế, Ethereum đã phải đối mặt với một số cuộc tan công tàn khốc vào các hợp đồng thông minh dé bị tổn thương Nỗi bật nhất là vụ hack DAO vào năm 2016 và vụ hack Parity Wallet năm 2017, cùng nhau gây thiệt hại hơn 400 triệu đô la Đề đối phó với những cuộc tan công này, học viện đã đề xuất rất nhiều công cụ khác nhau cho phép quét các hợp đồng dé tìm lỗ hong bảo mật, trước khi triển khai chúng trên blockchain Thật không may, những công cụ này cũng
có thể bị những kẻ tan công sử dụng dé dé dang tìm thay các hợp đồng chứa lỗ hồng
và khai thác chúng Điều này có khả năng cho phép những kẻ tấn công thực hiện theo cách tiếp cận phản ứng bằng cách chủ động quét blockchain để tìm các hợp đồng dễ bị tấn công.
Ngoài ra, những kẻ tân công có thé làm theo một cách tiếp cận chủ động hon bằng cách dụ nạn nhân của họ vào bay Loại hình gian lận mới này đã được cộng đồng giới thiệu là "honeypot" Honeypot là hợp đồng thông minh dường như có một lỗ hồng rõ ràng trong thiết kế của chúng, cho phép người dùng tùy ý rút tiền ether (tiền điện tử của Ethereum) khỏi hợp đồng, yêu cầu người dùng chuyển trước một lượng ether nhất định vào hợp đồng Tuy nhiên, một khi người dùng cố gắng khai thác lỗ hồng này, cái
"bẫy" sẽ sập lại, ngăn cản việc rút ether thành công.
Xuất phát từ tình hình trên, chúng tôi tiến hành nghiên cứu thực nghiệm triển khai
và phát hiện bẫy trên các hợp đồng thông minh.
1.2 Mục tiêu đề tài
Hiện nay công nghệ thông tin càng ngày càng phát triển, các lĩnh vực hợp đồng thông minh càng trở nên phô biến Với tính chất không thông quan bên trung gian của
Trang 18minh về lợi ích của nó Tuy nhiên nếu không có sự hiểu biết nhất định về rủi ro khi tiếp cận hợp đồng thông minh, người dùng có nguy cơ bị mat tài sản.
Do đó mục tiêu của khóa luận này đó là chúng tôi sẽ ứng dụng, tích hợp thêm các
công cụ phát hiện các lỗ hồng trong hợp đồng thông minh để cảnh báo người dùng về các hợp đồng thông minh có chứa honeypot gây mất mát tài sản cho người dùng.
1.3 Đối tượng nghiên cứu
© Cac hợp đồng thông minh, ngôn ngữ dé viết hợp đồng thông minh Solidity.
se Các lỗ hồng bảo mật trong hợp đồng thông minh và một sé phương pháp phát
hiện.
e_ Các kỹ thuật bẫy Honeypot.
e Công cụ phục vụ cho việc phát hiện lỗ héng bảo mật và quét bẫy như
HONEYBADGER.
1.4 Pham vi nghiên cứu
¢ Các kỹ thuật giăng bay Honeypot trên Hợp đồng thông minh Ethereum.
© _ Công cụ quét lỗ hồng bảo mật hợp đồng thông minh: Oyente, HoneyBadger,
¢ Các phương pháp phát hiện các lỗ hồng bảo mật trên hợp đồng thông
minh: Static analysis, Symbolic execution,
© Cac nền tảng triển khai hợp đồng thông minh: metamask, etherscan,
1.5 Cấu trúc khóa luận
Khóa luận được trình bày với cấu trúc sau:
© Chương |: Trình bày tổng quan về dé tài nghiên cứu, mục đích đối tượng va
phạm vi nghiên cứu của đề tài.
¢ Chương 2: Tổng quan va lý thuyết nền tảng, các khái niệm về hợp đồng thông
minh, nền tảng ethereum blockchain và các lỗ hổng, bẫy trong hợp đồng thông minh Các phương pháp phát hiện các bay trong hợp đồng.
© Chương 3: Trình bày hệ thống ứng dụng và cách tích hợp các phương pháp phát
hiện bay dé cảnh báo người dùng.
16
Trang 19e Chương 4: Thực hiện và đánh giá hệ thống Triển khai hệ thống và tính chính
xác khi vận hành hệ thống.
se Chương 5: Kết luận những gì đã làm được và chưa làm được của khóa luận,
những khó khăn trong quá trình thực hiện Định hướng phát triển trong tương
lai.
Trang 20Chương 2 TONG QUAN
2.1 Giới thiệu
Các hợp đông thông minh Ethereum càng ngày càng trở nên phô biên từ các
phương tiện truyền thông, ngành tài chính và học thuật Với sự phổ biến ngày càng tăng dẫn đến càng nhiều kẻ có mưu đồ xấu lợi dụng việc những người mới tiếp cận hợp đồng thông minh chưa có kiến thức để trục lợi Họ bị du dỗ tấn công vào các hợp đồng thông minh có các lỗ hong dường như có thể khai thác được, tuy nhiên thực tế đó lại
là cái bẫy có lợi cho kẻ tạo ra hợp đồng Những cái bẫy này gọi là honeypot.
Khóa luận này chúng tôi sẽ phân tích những kỹ thuật được dùng đề tạo honeypot
và các phương pháp đề phát hiện các honeypot trong hợp đồng thông minh, nhằm giảm thiệt hại cho người dùng Sau đó tích hợp các phương pháp phát hiện đó vào hệ thống hoàn chỉnh có chức năng cảnh báo cho người dùng về các honeypot nằm trong hợp đồng thông minh.
2.2 Kiến thức nền tang
2.2.1 Hợp đồng thông minh trên Ethereum 2.2.1.1 Tổng quan về hợp đồng thông minh Hợp đồng truyền thống được tạo ra bởi các chuyên gia pháp lý để biên soạn một lượng lớn tài liệu và cần bên thứ ba giúp thực thi Điều này rất mất thời gian và không minh bạch Nếu hợp đồng xảy ra sự cé thì phải dựa vào hệ thống tư pháp để giải quyết
và điều này rất tốn kém nhiều chỉ phí liên quan.
Đối với hợp đồng thông minh, được tạo ra bởi hệ thống máy tính bằng ngôn ngữ lập trình như C++, Go, Python, Java Trong đó nêu rõ các điều khoản và hình phạt tương đương với một hợp đồng truyền thống đưa ra Chỉ có điều là Hợp đồng thông minh không cần sự can thiệp của con người, do đó đảm bảo việc thực thi được chính xác và công minh nhất Toàn bộ đoạn mã của hợp đồng thông minh này sẽ được thực hiện bởi hệ thống phân tán của Blockchain.
18
Trang 212.2.1.2 Cách thức hoạt động cua hợp đồng thông minh Hợp đồng thông minh là một giao thức đặc biệt nhằm xử lý, xác minh hoặc thực thi các hợp đồng kỹ thuật số Hình 1.1 thể hiện cách hoạt động cau hợp đồng thông minh Hợp đồng thông minh có khả năng tự động thực hiện các điều khoản, các thoả thuận giữa các bên trong hợp đồng một cách đáng tin cậy mà không cần bên thứ ba nhờ
sự hỗ trợ của công nghệ mật mã học Các giao dịch này có thể được theo dõi chặt chẽ
và không thé đảo ngược được Moi điều khoản trong hợp đồng đều được minh bạch và
có thê kiểm tra được, đồng thời đòi hỏi sự đồng thuận của cả hai phía Một khi đã đồng
thuận với hợp đồng, các điều khoản trong nó sẽ được thực thi hoan toàn tự động hoặc
tự động một phan mà không có sự can thiệp từ bên ngoai, hay thông qua một bên thứ
ba trung gian Và ngay cả hai bên tham gia hợp đồng cũng không thể can thiệp hay sửa đổi lên nó Các điều khoản trong hợp đồng thông minh tương đương với một hợp đồng
có tính pháp lý và được ghi lại dưới dạng các ngôn ngữ lập trình.
How Smart Contracts Works 5o) Blockgeeks
Trang 222.2.1.3 Các tính năng chính của hợp đồng thông minh
Phi tập trung: Được sao chép và phân phối trong tất cả các nút của mạng Ethereum Đây là một điểm khác biệt so với các giải pháp khác dựa trên các máy
chủ tập trung.
Tất định: Chỉ thực hiện các hành động mà chúng được thiết kế dé thực hiện trong trường hợp các điều kiện được thỏa mãn Bên cạnh đó, các kết quả của hợp đồng thông minh không đổi dù người thực hiện là ai.
Tự động: Có thể tự động hóa tất cả các loại tác vụ, nó hoạt động như một chương trình tự thực hiện Tuy nhiên, trong hầu hết các trường hợp, nếu hợp đồng thông
minh không được kích hoạt, nó sẽ duy trì trạng thái “không hoạt động” và sẽ
không thực hiện bat kỳ hành động nao.
Không thể sửa đồi: Không thé sửa đổi hợp đồng thông minh sau khi triển khai Chỉ có thể “xóa” chúng nếu chức năng này đã được thêm vào từ trước Do đó,
có thể nói rằng hợp đồng thông minh giống như một mã chống giả mạo.
Có thể tùy chỉnh: Trước khi triển khai, hợp đồng thông minh có thể được mã hóa theo nhiều cách khác nhau Vì vậy, chúng có thể được sử dụng để tạo ra nhiều loại ứng dụng phi tập trung (Dapp) Điều này là bởi Ethereum là một blockchain có thé được sử dung dé giải quyết bat kỳ van đề tính toán nao (Turing
complete)
Không cần dựa trên sự tin cậy: Hai hoặc nhiều bên của hợp đồng có thể tương tác thông qua hợp đồng thông minh mà không cần biết hoặc tin tưởng lẫn nhau.
Ngoài ra, công nghệ blockchain đảm bảo tính chính xác của dữ liệu.
Minh bạch: Vì các hợp đồng thông minh dựa trên một blockchain công khai, không ai có thé thay đổi mã nguồn của chúng, mặc dù bat kỳ ai cũng có thể xem
được.
2.2.1.4 Ưu điểm và nhược điểm của hợp đồng thông minh
Ưu điểm:
20
Trang 23¢ Hợp đồng thông minh tận dụng ưu điểm của công nghệ blockchain đó là hoạt
động tự động và không bi quản lý giám sát bởi bat cứ một cơ quan tập trung nào, điều này có thể giúp hạn chế các vẫn đề can thiệp của con người trong các hoạt
động và làm tăng sự minh bạch cho ứng dụng.
© Quá trình thực hiện hợp đồng được tự động không cần trung gian bên thứ ba.
Hợp đồng được tạo và xác nhận bởi chính người dùng Do đó nó xóa bỏ những nguy cơ đến từ bên thứ ba.
¢ Hợp đồng thông minh được mã hóa trên một cuốn sổ cái chung va chia sẻ trên
toàn mạng lưới, do đó, nó không thé bị thất lạc Blockchain sẽ đảm bảo sự an toàn cho hợp đồng bằng các công nghệ mật mã học Các hợp dồng thông minh hoạt động như các tài khoản nhiều chữ ký, do đó, nó chỉ được kích hoạt khi có một tỷ lệ phần trăm nhất định người được yêu cầu đồng ý Các bản sao của hợp đồng không thể bị sửa đổi và được lưu trữ trên mọi nút trên mạng vì vậy, không một hacker nào có thé đe dọa đến chúng trừ khi hắn có năng lực hoặc tài nguyên
áp đảo toàn bộ mạng lưới.
© Do được thực hiện tự động trên các ngôn ngữ lập trình, vì vậy hợp đồng thông
minh giúp tiết kiệm rất nhiều chi phí trong quá trình vận hành và hoạt động Nó không cần duy trì bởi bên thứ 3, không cần trung gian phán xử tranh chấp.
Nhược điểm:
e Tính pháp lý: là nhược điểm nói chung của công nghệ blockchain Bởi trên
blockchain, bạn sẽ không được bảo vệ quyền lợi khi xảy ra lỗi phát sinh.
© Chỉ phí triển khai và trình độ triển khai của người dùng trên mạng lưới sẽ yêu
cầu rat lớn Bởi, nếu muốn tạo ra được một hợp đồng chặt chẽ, các lập trình viên phải rất am hiểu về lĩnh vực và các trường hợp có thể xảy ra đối với hợp đồng.
© Các rủi ro về tính riêng tư: Do blockchain là dữ liệu công khai do đó, khi bạn
để lộ một số thông tin nhạy cảm trên hợp đồng chắc chắn sẽ dẫn đến những trường hợp rắc rồi.
Trang 242.2.2 Dapps
2.2.2.1 Tổng quan về Dapps DApp là viết tắt của từ Decentralized Applications, có nghĩa là ứng dụng phân quyền hay phi tập trung Dapp ra đời sau khi công nghệ Blockchain và các hợp đồng thông minh được tạo ra bởi Satoshi Nakamoto — cha đẻ của Bitcoin Không dé dàng dé
có thé tóm tắt được định nghĩa của Dapps trong chỉ 1 — 2 dong, bởi một ứng dụng cần phải có một tập hợp những đặc tính cụ thể mới đủ điều kiện trở thành DApp.
2.2.2.2 Các điều kiện tối thiểu dé được coi là dapps Ứng dụng phải 100% mã nguồn mở, được điều hành tự động, và không có tổ chức nào kiểm soát được phần lớn token của nó.
Ứng dụng có thé điều chỉnh giao thức của nó dé đáp ứng các cải tiền được đề xuất
và phản hồi của thị trường nhưng tất cả các thay đôi phải được quyết định bởi sự đồng
thuận của người dùng.
Ứng dụng cần phải có một token mã hóa (Bitcoin hay một token nội bộ cho hệ thống của chính nó) Token này cần thiết cho việc truy cập vào ứng dụng và bất kỳ đóng góp giá trị nào cũng nên được thưởng bằng token của ứng dụng.
Dữ liệu và hồ sơ hoạt động của ứng dụng phải được lưu trữ mã hóa trong một blockchain công cộng, phi tập trung đề tránh việc tập trung hóa, dé thành điểm yếu.
Ứng dụng phải tạo token theo thuật toán mật mã chuẩn đóng vai trò là bằng chứng
về các nút giá trị đang đóng góp cho ứng dụng (Bitcoin sử dụng thuật toán Proof of
Work).
2.2.2.3 Phan loại các loại ứng dụng phân quyền Dapps
Ta sẽ phân loại Dapps dựa trên đặc tính là có sở hữu blockchain riêng hay xây dựng dựa trên blockchain khác.
22
Trang 25Bảng 2.1 Phân loại Dapps
Loại DApps này có
blockchain của riêng nó
(giống như Bitcoin) Các
loại altcoins khác cũng roi
vào loại này.
Loại DApps này sử
network su dung Omni
Protocal dé phat hanh
SafeCoin được sử dung
để tao ra các file storage phân phối.
2.2.2.4 Cách hoạt động của Dapps
DApps hoạt bằng cách thực hiện tất cả bốn tiêu chí mà ta đã đề cập trong phần đầu tiên Điều này có nghĩa rằng một DApp là một nền tảng phần mềm mã nguồn mở được thực hiện trên các blockchain phi tập trung và được nạp nhiên liệu bằng các token được tạo ra bằng cách sử dụng một giao thức / thuật toán.
Là một ứng dụng nguồn mở làm cho DApp thực sự phi tập trung bởi bất cứ ai cũng có thể nhìn thấy và đóng góp cho source code.Phi tập trung hoá ứng dụng bằng cách sử dụng blockchain là bước tiếp theo Blockchain phục vụ như một số cái vĩnh viễn của các hồ sơ / giao dịch mà bất kỳ ai cũng có thể tham khảo bất cứ lúc nào.Đề thêm records / giao dịch vào số cái như vậy, token được sử dụng được khai thác hoặc tiền khai thác bằng cách sử dụng các thuật toán / giao thức khác nhau.
Hiện nay, các giao thức phổ biến được sử dụng là Bằng chứng công việc (mà Bitcoin sử dụng) hoặc Bằng chứng cổ phan :
° Bằng chứng công việc (Proof-of-work) đòi hỏi thợ mỏ khai thác các khối và
nhận phần thưởng Bởi vì các khối khai thác và thêm chúng vào chuỗi là một quá trình tiêu thụ năng lượng, điều này cũng giữ cho blockchain an toàn.
Trang 26e Bang chứng cổ phan (Proof-of-stake) yêu cầu giữ và nắm cổ phan của các token
để trở thành một masternode đủ điều kiện Điều này cũng bảo vệ blockchain và
giúp xử lý các giao dịch.
Apps dApps
-Ó`
O-TẾ: B|5Ñn
Hình 2.2 Sự khác biệt giữa apps và dapps
2.2.3 Honeypot trong hợp đồng thông minh ethereum
2.2.3.1 Honeypot là gì
Honeypot là một hợp đồng thông minh gia vờ làm rò ri tiền của nó cho một người dùng tùy ý (nạn nhân), miễn là người dùng gửi thêm tiền cho nó Tuy nhiên, số tiền do người tạo honeypot đưa vào hợp đồng thông minh sẽ là miếng mỗi dé dụ dé nạn nhân
và họ có thé thu hồi lại số tiền đó.
Honeypot thường gồm 3 giai đoạn:
e Attackers triển khai hợp đồng trông có vẻ có lỗ hổng và đặt mỗi nhử dưới dang
quỹ
© Nan nhân cé gắng khai thác hợp đồng bằng cách chuyên ít nhất số tiền cần thiết
và không thành công.
© Attacker rút mỗi cùng với số tiền mà nạn nhân bị mắt trong nỗ lực khai thác.
Attacker không yêu cầu các khả năng đặc biệt dé thiết lập honeypot Trên thực
24
Trang 27tế, attacker giống như một người dùng Ethereum thông thường Người đó chỉ yêu cầu số tiền cần thiết dé triển khai hợp đồng thông minh va đặt mồi.
Khác với các hệ thống an ninh mạng khác như hệ thống phát hiện xâm nhập và chống xâm nhập (IDS - IPS), hệ thống Firewall, được thiết kế làm việc thụ động
trong việc phát hiện, ngăn chặn sự tấn công của tin tặc thì Honeynet lại được thiết kế nhằm chủ động lôi kéo hacker tấn công vào hệ thống giả được bố trí bên cạnh hệ
thống thật nhằm mục đích:
© Thu thập các kỹ thuật, phương pháp tan công, các công cụ mà hacker sử dụng,
đặc biệt là các kỹ thuật tấn công mạng mới, các mẫu virus, mã độc mới.
© _ Giúp sớm phát hiện ra các 16 hổng bảo mật tổn tại trên các sản phẩm công
nghệ thông tin đã triển khai cài đặt trên hệ thống thật Từ đó, sớm có biện pháp ứng phó, khắc phục kịp thời Đồng thời, cũng kiểm tra độ an toàn của hệ thống mạng, các dịch vụ mạng (Web, DNS, Mail, ) và độ an toàn, tin cậy, chất
lượng của các sản phẩm công nghệ thông tin khác (đặc biệt là các Hệ điều
hành như: Unix, Linux, Window, ).
© Thu thập các thông tin, dấu vết của hacker (như: địa chi IP của máy hacker sử
dụng tấn công, vị trí địa lý của hacker, thời gian hacker tấn công ) Từ đó,
giúp chuyên gia an ninh mạng truy tìm thủ phạm.
2.2.3.2 Phân loại
Các kĩ thuật về honeypot F! được chia làm 3 loại dựa theo tang mà chúng hoạt
động
¢ Ethereum Virtual Machine: Tầng này đánh lừa người dùng bằng hành vi bat
thường của EVM, mặc dù EVM tuân theo | bộ quy tắc nghiêm ngặt và công khai, người dùng vẫn có thể bị rối bởi việc thực thi hợp đồng thông minh xoay quanh một hành vi bất thường.
© Solidity Compiler: Ở tầng này, các honeypot được hưởng lợi từ trình biên dich
Solidity Một vài vấn đề về compiler có thể đã được biết đến, một vài thì chưa
Trang 28được biết tới và dé ý nếu người dùng không phân tích hợp đồng thông minh một
cách can thận và thực thi nó trên môi trường điều kiện thực
e Etherscan Blockchain Explorer: Tang nay loi dung loi ich cua viéc hién thi
hạn chế thông tin về hop đồng thông minh trên website dé đánh lừa người dùng
Skip Empty String Literal Type Deduction Overflow Uninitialised Struct
Etherscan Blockchain Explorer Hidden State Update
Hidden Transfer
Straw Man Contract
Balance disorder: Đây là kỹ thuật lợi dung việc một số người dùng không biết
chính xác về thời điểm mà số dư của hợp đồng được cập nhật Hợp đồng chứa honeypot
sử dụng kỹ thuật này hứa hẹn sẽ trả lại số dư của hợp đồng và giá trị được gửi đến hợp
đồng, nếu giá trị được gửi vào lớn hơn số dư Tuy nhiên, giá trị gửi vào hợp đồng được
cộng dồn vào số dư của hợp đồng trước khi thực thi mã honeypot Do đó, số dư sẽ
không bao giờ nhỏ hơn giá tri đã gửi.
Inheritance disorder: Kỹ thuật honeypot này liên quan đến hai hợp đồng và mốiquan hệ thừa kế giữa chúng Cả hợp đồng cha và con đều xác định một biến có cùng
tên dùng dé bảo vệ quyền truy cập vào việc rút tiền Những người dùng mới làm quenvới hợp đồng thông minh có thê tin rằng cả hai biến đều giống nhau, tuy nhiên chúngđược xử lý khác nhau bởi hợp đồng thông minh Kết quả là, việc thay đổi nội dung củamột biến không làm thay đổi nội dung của biến kia
Skip Empty String Literal: Một lỗi trước đó có trong trình biên dịch Solidity bỏ
qua các ký tự chuỗi trong được mã hóa cứng trong các tham số của lệnh gọi hàm Do
26
Trang 29đó, các tham số theo sau chuỗi ký tự trống được chuyền lên trên Điều này có thé được
sử dụng dé chuyền hướng việc chuyền tiền cho kẻ tan công thay vì người dùng
Type Deduction Overflow: Mặc dù các biến thường được khai báo với các kiểu
cụ thé, kiểu deduction cũng được hỗ trợ Kiểu mà khi khai báo, không cần đảm bảo
rằng nó đủ lớn Điều này có thể được sử dụng dé gây ra lỗi tràn số nguyên làm cham
dứt sớm quá trình thực thi và làm cho honeypot khác với hành vi mà người dùng mong
đợi.
Uninitialised Struct: Struct là một cách thuận tiện trong Solidity dé nhóm cácthông tin Tuy nhiên, chúng cần được khởi tạo một cách thích hợp, vì các giá trị được
ghi vào cấu trúc chưa được khởi tạo được ghi theo mặc định vào đầu bộ lưu trữ Điều
này sẽ ghi đè các giá trị hiện có và sửa đổi trạng thái của hợp đồng Do đó, các biếncần thiết dé thực hiện chuyên tiền có thé bị ghi đè và do đó ngăn cản việc chuyền tiền
Hidden state update: Etherscan không hiển thị các giao dịch nội bộ, cái màkhông chuyền giao bat kỳ giá trị nào Điều này có thé được sử dung dé an các cập nhậttrạng thái khỏi người dùng và do đó khiến họ tin rằng hợp đồng ở trạng thái hoàn toàn
khác.
Hidden Transfer: Các nền tảng như Etherscan cho phép người dùng xem mã
nguồn của các hợp đồng thông minh đã xuất bản Tuy nhiên, do kích thước hạn chế của
cửa số mã nguồn, nhà xuất bản có thé chèn khoảng trắng dé an việc hién thị các dong
mã nguồn nhất định bằng cách đây chúng ra bên ngoài cửa số Điều này cho phép cácnhà xuất bản chèn và ân mã chuyền tiền cho họ thay vì người dùng
Straw Man Contract: Khi tải mã nguồn của hợp đồng lên Etherscan, chỉ bảnthân hợp đồng được xác minh chứ không phải mã của các hợp đồng mà hợp đồng cóthê gọi Ví dụ, một tệp mã nguồn có thê chứa hai hợp đồng, trong đó hợp đồng đầu tiênthực hiện các lệnh gọi đến hợp đồng thứ hai Tuy nhiên, cái thứ hai thực sự không được
sử dụng sau khi triển khai Thay vào đó, nó là một bù nhìn đứng thay cho một hợp
đồng khác có chọn lọc hoàn nguyên các giao dịch chuyên tiền cho người dùng
Trang 302.2.4 Các phương pháp phát hiện lỗ héng trong hợp đồng thông
minh
2.2.4.1 Static Analysis
Static Analysis là một cách phân tích một chương trình máy tính hoặc mã được
biên dich trong một môi trường không thời gian chạy Static Analysis kiểm tra mã lậptrình mà không thực thi chương trình Nó thường kiểm tra tất cả các hành vi mã có thể
có, các mau dé bị tan công và các sai sót có thé xảy ra trong thời gian chạy Phần phụ
này trình bày một số công cụ phân tích tĩnh chính dé phân tích các van dé và lỗ hồng
bảo mật của hợp đồng thông minh Những work product có thé được kiểm tra bởi kiểm
thử tĩnh:
e Đặc tả yêu cau: requirements, functional requirements, security requirements
e User stories, acceptance criteria (tiêu chí chap nhận)
e Code Tài liệu thiết kế va kiến trúc
e Review áp dụng cho bất ki work product mà người tham gia cần phải đọc và
hiểu
Static analysis có thé được áp dụng hiệu qua cho bất ki work product nào có cau
trúc tiêu chuẩn (thông thường như code hoặc models), với mỗi work product mà cócông cụ phân tích tĩnh phù hợp Static analysis thậm chí có thé áp dụng với những toolđánh giá work product với ngôn ngữ tự nhiên giống như requirement (vi dụ như kiêm
tra chính ta, cú pháp )
Lợi ích:
e Phát hiện và sửa lỗi hiệu quả hơn trước khi thực hiện kiểm thử động
e Ngăn chặn những khuyết điểm trong thiết kế và code băng cách phát hiện ra sự
mâu thuẫn, mơ hồ, thiếu sót, không chính xác
e_ Xác định những khuyết điểm mà không dé dang phát hiện bởi kiểm thử động
e Tăng hiệu suất phát triển: ví dụ do thiết kế được cải tiến, code dé bảo tri
e Giảm thời gian và chi phí phát triển
e Giảm thời gian va chi phí test.
28
Trang 31đầu vào ân danh cho các chức năng cần thiết trong một chương trình Một số lỗ héng
có thé dẫn đến âm tính giả trong phân tích tĩnh, nhưng chúng có thé được xác địnhthông qua phương pháp phân tích động thành công Nó cũng có thể xác thực các phát
hiện từ một máy phân tích mã tĩnh.
2.2.4.3 Formal Verification Method
Cac phương pháp xác minh chính thức sử dụng các phép dò định lý hoặc các
phương pháp toán học chính thức để chứng minh các thuộc tính cụ thể trong mã lậptrình như tính đúng đắn của chức năng, độ an toàn trong thời gian chạy, tính hợp lý, độtin cậy, v.v Có một số phân tích xác minh chính thức được thực hiện để xác thực vàchứng minh các lỗ hồng trong hợp đồng thông minh Họ đã sử dụng các trình giải mã
hiện có như trình giải Coq, Isabelle / HOL, Lem và SMT.
Trang 322.2.4.4 Property-Based Testing
Property Based Testing là kỹ thuật kiểm tra dựa trên thuộc tinh Nó kiểm tra xemmột chức năng, chương trình hoặc bất kì hệ thống nao đang được thử nghiệm tuân theomột thuộc tính Hầu hết thời gian, các thuộc tính không phải đi vào quá nhiều chỉ tiết
về đầu ra Họ chỉ phải kiểm tra các đặc điểm hữu ích phải được nhìn thấy trong đầu ra
Hình 2.4 Cấu trúc của property-based testing
Property Executor understanding
for all run it multiple times (usually 100 times)
( ; generate random inputs based on specified generators
y (x, y, specifies the kind of input to be generated)
f check pre-conditions
such as precondition(x, y, ) holds
failure: go back to previous, not an error just an invalid entry
run the test property(x, y, ) is true zs a
failure: it is a counter-example, try to shrink the example
Property ed testing: Executor understa
Hinh 2.5 Dinh nghia Property-based testing
2.2.4.5 Symbolic Execution
Hop đồng thông minh nhận đầu vào là các giao dich mang bao gồm một giá trị và
bộ đệm dữ liệu Bộ đệm dữ liệu giao dịch chứa thông tin về hàm nảo nên được thực thi
trong hợp đồng và các đối số của nó Symbolic execution trong hợp đồng thông minhliên quan đến các giao dịch tượng trưng, trong đó cả giá trị và đữ liệu đều mang tính
biểu tượng Các giao dịch tượng trưng được áp dụng cho tất cả các trạng thái Sẵn sàng,
khiến cho việc thực hiện một giao dịch tượng trưng Các giao dịch tượng trưng có thê
được thực hiện lặp đi lặp lại để khám phá chung về không gian trạng thái của hợp đồng.
30
Trang 33void aFunction(int a, int b) {
và một control flow path duy nhất được khám phá Ngược lại, symbolic execution có
thé khám phá nhiều đường dẫn mà một chương trình có thê thực hiện dưới các đầu vào
khác nhau Ý tưởng chính là cho phép một chương trình nhận các giá trị tượng trưng
làm đầu vào Việc thực thi được thực hiện duy trì cho mỗi đường dẫn điều khiển đãkhám phá một công thức mô tả các điều kiện được thỏa mãn bởi các nhánh được thực
hiện dọc theo đường đó và một bộ nhớ tượng trưng lưu trữ ánh xạ các biến thành các
biểu thức hoặc giá trị tượng trưng
Mục tiêu chính của kỹ thuật này, trong bối cảnh kiểm thử phần mềm, là khám phácàng nhiều đường dẫn chương trình khác nhau càng tốt trong một khoảng thời gian
nhất định; sau đó với mỗi đường dẫn, chúng ta có thé tạo ra một tập hop các giá tri đầu
vào cụ thé thực thi nó, để cuối cùng kiểm tra sự hiện diện của lỗi Từ góc độ tạo thử
nghiệm, nó cho phép tạo các bộ thử nghiệm có mức độ phù hợp cao, trong khi từ góc
độ tìm lỗi, nó cung câp cho các nhà phát triên một đâu vào cụ thê kích hoạt lôi, có thê
Trang 34được sử dụng dé xác nhận và gỡ lỗi độc lập với việc thực thi biểu tượng công cụ đã tao
ra nó.
2.2.4.6 Unit test
Một Unit là một thành phần nhỏ nhất mà ta có thể kiểm tra được như các hàm
(Function), thủ tục (Procedure), lớp (Class), hoặc các phương thức (Method) Mỗi UT
sẽ gửi di một thông điệp va kiểm tra câu trả lời nhận được đúng hay không, bao gồm:
e Các kết quả trả về mong muốn
© Các lỗi ngoại lệ mong muốn
Mỗi UT đều được thiết kế theo trình tự sau:
e Thiết lập các điều kiện cần thiết: khởi tạo các đối tượng, xác định tài nguyên
cần thiết, xây dựng các dit liệu giả
e_ Triệu gọi các phương thức cần kiểm tra
e Kiểm tra sự hoạt động đúng đắn của các phương thức
e Don dep tài nguyên sau khi kết thúc kiểm tra
2.2.5 Các phương pháp phát hiện honeypot trong hợp đồng thông
minh
2.2.5.1 Sử dung công cu HONEYBADGER
Một trong những cach phat hiện honeypot là sử dung công cu
HONEYBADGER, HONEYBADGER là công cụ sử dung phương pháp symbolic
execution và các heuristic (các kỹ thuật dựa trên kinh nghiệm dé giải quyết van dé)
Trang 352.2.5.2 Sử dụng phương pháp data science
Nếu HONEYBADGER sử dụng phương pháp symbolic execution chủ yếu dựavào bytecode của hợp đồng thông minh để phân tích thì phương pháp data science lại
dựa vào các dir liệu giao dich( transaction data), các dữ liệu này phản ánh hành vi của
người dùng, đây là các thông tin hưu ích dé phát hiện ra các kỹ thuật honeypot mới
Đây là kỹ thuật sẽ tập trung vào 3 điểm chính:
e Source code: Các hợp đồng có được tạo từ bytecode hay không, số dòng code,
e Transaction data: Thởi gian tồn tại của honeypot thường ngắn hon so với các
hợp đồng thông minh
e Fund of flow: Chúng tôi xác định đặc điểm này thường xảy ra trong các honeypot
gồm các bước sau:
— Khởi tạo một hợp đồng thông minh có một lượng tiền nhất định nằm trong
đó nhằm thu hút những kẻ tan công
— Kẻ tấn công rơi vào bay và tiền bị giữ lại trong hợp đồng
— Kẻ tạo ta hợp đồng rút toàn bộ tiền có trong hợp đồng
Chúng tôi sẽ đề cập chỉ tiết hơn ở phần sau
Trang 36Chương 3 PHÂN TÍCH THIẾT KÉ HỆ THÓNG
3.1 Giới thiệu chung về hệ thống
Khóa luận hướng đến phát triển hệ thống có khả năng cảnh báo cho người dùng
về các honeypot tiềm ấn năm trong các hợp đồng thông minh trên nền tảng Etherscannhằm hạn chế rủi ro về mat mát tài sản của người dùng
Chúng tôi xây dựng mô hình dựa trên mô hình '8), Hệ thống gồm hai thành phannhư phan giao diện người dùng (front-end), máy chủ web HTTP (back-end) Hình 3.1
mô tả tổng quan về kiến trúc hệ thống mà nhóm nghiên cứu sẽ xây dựng trong khóa
luận này.
>| HTTP Server HC? Crawler y
Database
Ethereum Blockchain
Hình 3.1 Mô hình trién khai hệ thốngCác thành phần và chức năng của chúng trong mô hình mà nhóm nghiên cứu đưa
ra:
Giao diện người dung (front-end): Chúng tôi sử dung MetaMask cho giao diện
người dùng của minh, vì nó là mã nguồn mở và một ví tiền điện tử phô biến chạy trêncác trình duyệt và thiết bị di động Hơn nữa, MetaMask gan đây ra mắt phiên ban Beta
cho phép viết các plugin mở rộng khả năng của MetaMask Chúng tôi đã triển khaiplugin của mình bằng JavaScript và sau đó đặt tên là nó HONEYPOT AUDITOR
Plugin lắng nghe các sự kiện được kích hoạt khi người dùng muốn gửi một giao dịch
và sau đó gửi một yêu cầu đến máy chủ HTTP của chúng tôi
Máy chủ web HTTP (back-end): là máy chủ web lắng nghe yêu cầu của người
dùng và trả về các thông tin từ quá trình phân tích của hợp đồng thông minh
34
Trang 37người dùng
Hình 3.2 biểu diễn một cách khái quát về luồng xử lý thông tin trong hệ thốngcảnh báo honeypot trong hợp đồng thông minh cho người dùng Sau đây là trình tự xử
lý trong hệ thống:
(1) Khi người dùng có yêu cầu giao dịch đến một hợp đồng, ví Metamask sẽ gửi gói
request_address yêu cầu server trả về kết quả phân tích của hợp đồng đó
(2) HTTP Server sẽ tìm kết qua phân tích của hợp đồng đó trong cơ sở đữ liệu
(3) Trong trường hợp không có kết quả phân tích của hợp đồng đó trong cơ sở đữ liệu.Trình thu thập sẽ lay thông tin sourcecode của hợp đồng đó trên Etherscan và tiến hành
phân tích.
(4) Trình thu thập thông tin lưu kết quả vửa phân tích vào cơ sở đữ liệu
(5) Cơ sở đữ liệu trả kết quả phân tích của hợp đồng đó cho HTTP Server
(6) HTTP Server trả kết phân tích cho ví Metamask Cuối cùng, thông báo cảnh báo có
phải honeypot hay không.
3.3 Phương pháp nhận diện tan công
Trong phạm vi khóa luận, mô hình hệ thống phát hiện honeypot được chúng tôixây dựng bằng hai phương pháp chính:
e Phương pháp thứ nhất là sử dụng kĩ thuật phân tích Symbolic Execution (mục
2.2.5.1) Phương pháp này hướng đến việc phát hiện các kĩ thuật honeypot đãđược phát hiện trước đây Tức là các dấu hiệu phát hiện đã được định nghĩa cho
từng kĩ thuật honeypot.
Trang 38e Phương pháp thứ hai là theo hướng khoa học dữ liệu thông qua quá trình học
máy với một tập dữ liệu đầu vào gồm các thông tin của hợp đồng thông minh
như sourcecode, bytecode, các giao dịch, (mục 2.2.5.2) Phương pháp thứ hai
có thé được xem là một phần bổ sung cho phương pháp thứ nhất Nó có khả
năng giải quyết được vấn đề phát hiện các kĩ thuật honeypot khác ngoài các kĩ
thuật đã được định nghĩa trước đây.
3.3.1 Symbolic Execution + Heuristic
Trong phương pháp này, chúng tôi hướng tới việc phân tích các luồng chạy củahợp đồng thông minh Tác giả Christof Ferreira Torres trình bày trong phương pháp
này trong tài liệu LH được tích hợp trong dự án HONEYBADGER.
3.3.1.1 Symbolic Execution
Symbolic execution bat đầu bằng cách xây dung một CFG (Control Flow Graph
là qua trình định hướng và có thé hiển thị tat cả các đường dan có thé được di qua trongmột chương trình thực hiện Một đồ thị luồng điều khiển cũng có thể được coi là một
đồ thị có hướng, trong đó cạnh miêu tả con đường dòng điều khiển và các nút miêu takhối cơ bản, đó là các đoạn đường thăng mà không cần bat cứ nhảy hoặc phân nhánh)
từ mã bytecode, trong đó mọi nút trong CFG tương ứng với một khối cơ bản và một
cạnh tương ứng với một điều kiện nhảy giữa các khối cơ bản riêng lẻ Một khối cơ bản
là một chuỗi các lệnh không có bước nhảy đi vào hoặc ra giữa khối CFG nắm bắt tất
cả các đường dẫn chương trình Symbolic execution biểu diễn các giá trị của biến
chương trình đưới dang biểu thức ký hiệu Mỗi đường dẫn chương trình bao gồm mộtdanh sách các điều kiện đường dẫn và phải được thỏa mãn dé thực thi theo đường dẫn
Trang 39truy vấn z3 (z3 là một bộ giải lý thuyết mô-đun thỏa mãn (Satisfiability modulo
theories - SMT) đa nền tang của Microsoft ) dé xác định tinh khả thi của chúng Một
đường dẫn được coi là khả thi nếu các điều kiện của đường dẫn đó được thỏa mãn Nếu
không, nó được coi là không khả thi Thông thường, việc thực thi biểu tượng cô gắngphát hiện và bỏ qua các đường dẫn không khả thi để cải thiện hiệu suất của chúng Tuynhiên, các đường dẫn không khả thi cũng sẽ không bỏ qua, vì chúng có thê hữu ích để
phát hiện các honeypots.
Mục đích của Symbolic execution là thu thập tất cả các loại thông tin có thé hữuich cho việc phân tích sau này Thông tin này bao gồm danh sách các lần ghi lưu trữ,danh sách các đường dẫn thực thi P, danh sách các khối không được thực thi cũng như
được thực thi, danh sách các phép nhân và phép cộng được thực hiện và danh sách các
lệnh gọi C Các lệnh gọi được trích xuất thông qua các mã opcodes CALL vàDELEGATECALL, nó đại diện cho một lệnh gọi ham, một lệnh gọi hợp đồng hoặcmột giao dịch Ether Một lệnh gọi c bao gồm danh sách (cr, cv, cf, ca, ct, cg), trong đó
cr là người nhận, cv là giá trị cuộc gọi, cf là hàm hợp đồng được gọi, ca là danh sách
các đối số của hàm, ct là loại cuộc gọi (tức là CALL hoặc DELEGATECALL) và cg là
lượng gas sẵn có cho cuộc gọi.
Bang 3.1 Các giá tri được dùng trong phương pháp symbolic execution
Tên gọi Ý nghĩa
Call value (Cv) Giá trị cuộc gọi
Call recipient (Cr) Người nhận cuộc gọi
Call argument (Ca) Tham số cuộc gọi
Call type (Ct) Loại cuộc gọi (CALL hoặc
DELEGATECALL)
Call gas (Cg) Nguyên liệu cần cho cuộc gọi
Call function (Cf) Hàm của hợp đồng
Transaction value (Iv) Gia tri giao dich
Executed smart contract's address (Ia) Địa chi của hop đồng dang được thực thiTransaction input data (Id) Giá trị đầu vào giao dich
Trang 40The transaction sender (Is) Người gửi giao dich
Balance that holds the amount of ether Số dư của hợp đồng
owned by the contract (o[a]b)
3.3.1.2 Heuristic
Kết qua của phân tích symbolic execution được xem là các thành phan đầu vào
cho việc phát hiện honeypot trong hợp đồng thông minh bằng phương pháp Heuristic
(đây được coi là kỹ thuật dựa trên kinh nghiệm dé giải quyết van đề, học hỏi hay khám
phá nhằm đưa ra một giải pháp mà không được đảm bảo là tối ưu) Vì vậy, có thé dé
dàng mở rộng phân tích hợp đồng thông minh để phát hiện honeypot trong tương lai
Dưới đây là các kỹ thuật honeypot và cách hướng dé phát hiện LH:
e Balance Disorder: Ta có thé phát hiện kỹ thuật này bằng cách tim trong tat cả
các lệnh gọi có trong C, nếu tìm thấy một khối không được thực thi, trong đó cv
= Iv + o [Ia]b thì hợp đồng này sẽ được báo cáo đây là honeypot
e Inheritance Disorder: Việc phát hiện ra kỹ thuật này ở mức bytecode là kha khó
khăn vì bytecode không bao gồm thông tin về thừa kế Do đó, tác giả đã tậndụng các chỉ tiết triển khai cho kỹ thuật honeypot này:
o_ tồn tại một Is được ghi vào vị trí lưu trữ không bao giờ được sử dụng bên
trong điều kiện đường dẫn, lệnh gọi hoặc suicide; và (1)
o tồn tại một lệnh goic, có điều kiện đường dẫn chứa so sánh giữa Is và
một biến lưu trữ, có vị trí lưu trữ khác với vị trí lưu trữ được xác định
trong (1)
¢ Skip Empty String Literal: Bắt đầu bằng cách lặp lại tat cả các lệnh gọi có trong
C và kiểm tra xem có tồn tại một lệnh gọi c, trong đó sỐ lượng đối số trong ca
nhỏ hơn số lượng đối số được mong đợi bởi cf Và sẽ báo cáo là kỹ thuật Skip
Empty String Literal, nếu tim thấy một lệnh gọi khác c', được gọi trong hàm cf
và nơi c'r nằm trong danh sách tham số của ca
e Type Deduction Overflow: Bang cách lặp lại tat cả các lệnh gọi có trong C và
kiểm tra xem có tôn tại lệnh gọi c, trong đó cv chứa kết quả của một phép nhân
38