Phát Hiện Lỗ Hổng Hợp Đồng Thông Minh Tự Động Sử Dụng Học Sâu và Cơ Chế Chú Ý

Luận văn tốt nghiệp nghiên cứu tốt nghiệp an toàn thông tin tự động hóa phát hiện lỗ hổng bảo mật trên hợp đồng thông minh dựa, điều tra thực trạng, phân tích số liệu, đề xuất

Người đăng

Ẩn danh

Thể loại

khóa luận

2023

89
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. CHƯƠNG 1: TỔNG QUAN

1.1. Giới thiệu vấn đề

1.2. Tính ứng dụng

1.3. Những thách thức

1.4. Mục tiêu, đối tượng, phạm vi của nghiên cứu

1.4.1. Mục tiêu nghiên cứu

1.4.2. Đối tượng nghiên cứu

1.4.3. Phạm vi nghiên cứu

1.5. Cấu trúc khóa luận tốt nghiệp

2. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1. Nền tảng Ethereum

2.2. Solidity

2.3. Smart Contract

2.4. Ethereum Node

2.5. Các lỗ hổng trong Smart Contract

2.5.1. Reentrancy

2.5.2. Access-control

3. CHƯƠNG 3: MÔ HÌNH PHÁT HIỆN

3.1. Phương pháp phát hiện

3.1.1. Phát hiện lỗ hổng dựa trên mô hình DistilBERT

3.1.2. Quy trình token hóa (Tokenization pipeline)

3.1.3. Quá trình tinh chỉnh (Fine-tuning)

3.1.4. Cấu trúc của mô hình phát hiện dựa trên DistilBERT

3.2. Mô hình phát hiện lỗ hổng dựa trên đồ thị

3.2.1. Xây dựng đồ thị Control Flow Graph

3.2.2. Mô hình GCN

3.2.3. Mô hình phát hiện lỗ hổng sử dụng mô hình GCN

3.2.4. Mô hình kết hợp phát hiện lỗ hổng

4. CHƯƠNG 4: THÍ NGHIỆM VÀ ĐÁNH GIÁ

4.1. Môi trường thực nghiệm

4.2. Dữ liệu và mã nguồn thực nghiệm

4.2.1. Smartbugs Wild Datasets

4.2.2. Hugging Face Datasets

4.2.3. Tổng quan quy trình thu thập và gán nhãn dữ liệu

4.3. Quy trình xử lý dữ liệu

4.4. Tiêu chí đánh giá kết quả

4.5. Các trường hợp thực nghiệm

4.6. Quá trình xây dựng mô hình pretrained DistilBERT và tinh chỉnh (Fine-tuning)

4.6.1. Quá trình tokenize

4.6.2. Quá trình xây dựng pre-train models

4.6.3. Quá trình fine-tuning cho bài toán phát hiện đa lỗ hổng

4.7. Mô hình phát hiện dựa trên Graph

4.7.1. Quy trình xây dựng đồ thị CFG

4.7.2. Huấn luyện mô hình với GCN

4.8. Thực nghiệm kết hợp mô hình DistilBERT và mô hình GCN

4.9. Nhận xét/Đánh giá kết quả thực nghiệm

5. CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

5.1. Kết luận - Đánh giá

5.2. Hướng phát triển

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Phát Hiện Lỗ Hổng Hợp Đồng Thông Minh

Phát hiện lỗ hổng hợp đồng thông minh là một lĩnh vực quan trọng trong bảo mật blockchain. Với sự gia tăng sử dụng hợp đồng thông minh, việc phát hiện và khắc phục các lỗ hổng bảo mật trở nên cấp thiết. Nghiên cứu này sẽ tập trung vào việc áp dụng học sâu và cơ chế chú ý để tự động phát hiện các lỗ hổng trong hợp đồng thông minh.

1.1. Khái Niệm Về Hợp Đồng Thông Minh

Hợp đồng thông minh là các chương trình tự động thực thi trên blockchain. Chúng được viết bằng ngôn ngữ lập trình như Solidity và có thể chứa các lỗ hổng bảo mật nghiêm trọng.

1.2. Tầm Quan Trọng Của Việc Phát Hiện Lỗ Hổng

Việc phát hiện lỗ hổng trong hợp đồng thông minh không chỉ bảo vệ tài sản mà còn duy trì sự ổn định của hệ sinh thái blockchain.

II. Những Thách Thức Trong Phát Hiện Lỗ Hổng Hợp Đồng Thông Minh

Mặc dù có nhiều công cụ phát hiện lỗ hổng, nhưng vẫn tồn tại nhiều thách thức trong việc phát hiện chính xác. Các lỗ hổng thường bị bỏ qua do tính phức tạp của mã nguồn và sự thiếu hụt dữ liệu huấn luyện.

2.1. Tính Phức Tạp Của Mã Nguồn

Mã nguồn hợp đồng thông minh thường phức tạp và khó phân tích, dẫn đến việc phát hiện lỗ hổng không hiệu quả.

2.2. Thiếu Dữ Liệu Huấn Luyện

Việc thiếu dữ liệu huấn luyện chất lượng cao làm giảm khả năng phát hiện lỗ hổng của các mô hình học sâu.

III. Phương Pháp Phát Hiện Lỗ Hổng Tự Động Bằng Học Sâu

Nghiên cứu này áp dụng các mô hình học sâu như BERT và cơ chế chú ý để phát hiện lỗ hổng trong hợp đồng thông minh. Các mô hình này giúp cải thiện độ chính xác và giảm thiểu thời gian phát hiện.

3.1. Mô Hình Học Sâu BERT

Mô hình BERT được sử dụng để phân tích ngữ nghĩa của mã nguồn hợp đồng thông minh, giúp phát hiện các lỗ hổng tiềm ẩn.

3.2. Cơ Chế Chú Ý Trong Phát Hiện Lỗ Hổng

Cơ chế chú ý giúp mô hình tập trung vào các phần quan trọng của mã nguồn, từ đó nâng cao khả năng phát hiện lỗ hổng.

IV. Ứng Dụng Thực Tiễn Của Phát Hiện Lỗ Hổng Hợp Đồng Thông Minh

Việc áp dụng các phương pháp phát hiện lỗ hổng trong hợp đồng thông minh đã cho thấy hiệu quả rõ rệt trong việc bảo vệ tài sản kỹ thuật số. Nghiên cứu này sẽ trình bày các kết quả thực nghiệm và ứng dụng thực tiễn.

4.1. Kết Quả Thực Nghiệm

Các kết quả thực nghiệm cho thấy mô hình học sâu có khả năng phát hiện lỗ hổng với độ chính xác cao hơn so với các phương pháp truyền thống.

4.2. Ứng Dụng Trong Thực Tế

Các công cụ phát hiện lỗ hổng có thể được tích hợp vào quy trình phát triển hợp đồng thông minh để đảm bảo an toàn cho người dùng.

V. Kết Luận Và Hướng Phát Triển Tương Lai

Nghiên cứu này đã chỉ ra rằng việc áp dụng học sâu và cơ chế chú ý có thể cải thiện đáng kể khả năng phát hiện lỗ hổng trong hợp đồng thông minh. Hướng phát triển tương lai sẽ tập trung vào việc tối ưu hóa các mô hình và mở rộng dữ liệu huấn luyện.

5.1. Tóm Tắt Kết Quả Nghiên Cứu

Kết quả nghiên cứu cho thấy tiềm năng lớn của học sâu trong việc phát hiện lỗ hổng hợp đồng thông minh.

5.2. Định Hướng Nghiên Cứu Tương Lai

Hướng nghiên cứu tiếp theo sẽ tập trung vào việc phát triển các mô hình mới và cải thiện độ chính xác của các phương pháp hiện tại.

10/07/2025
Khóa luận tốt nghiệp an toàn thông tin tự động hóa phát hiện lỗ hổng bảo mật trên hợp đồng thông minh dựa trên mô hình học sâu và cơ chế attention

Trích đoạn nội dung tài liệu

Chương 1: Tổng quan về khóa luận. e Chương 2: Dưa ra cơ sở lý thuyết và các nghiên cứu có liên quan. e Chương 3: Giới thiệu về phương pháp và mô hình dùng để phát hiện lỗ hồng trong Smart Contracts. e Chương 4: Thực hiện và đánh giá thí nghiệm.

e Chương 5: Rút ra kết luận và định hướng phát triển tiếp theo cho đề tài. CƠ SỞ LÝ THUYET Chương 2 sẽ giới thiệu lý thuyết cơ bản cho nghiên cứu này, bao gồm: Ethereum, Smart Contract, ngôn ngữ lập trình Solidity, các lỗ hổng tồn tại trong Smart Contract, mô hình dùng Deep Learning để phát hiện 16 hong va cơ chế attention. Nền tảng Ethereum Ethereum áp dụng công nghệ Blockchain, là một hệ thống điện toán phân tán, để thực hiện Smart Contract. Có nghĩa là các điều khoản trong Contract sẽ tự động được thực thi khi moi điều kiện được đặt trước đó đã được thoả mãn, không cho phép bất kì sự tác động nào từ bên ngoài.number - 04: NUMBER 1))%totalBets + 1; 05: SUB 06: BLOCKHASH Hình 2.1: Mối tương quan giữa sourcecode, opcode va bytecode của Smart Con- tract Smart Contract sẽ được triển khai trong môi trường của Ethereum Virtual Machine (EVM), hay còn được biết đến như máy ảo Ethereum.

Có thể hiểu đơn giản là EVM hoạt động giống như một trung gian để thực thi các Smart Contract trên mạng Ethereum. Source code ban đầu được viết bằng ngôn ngữ ĩ cấp cao (solidity). Tuy nhiên, con người tạo ra một số lượng biến tự định nghĩa trong mã nguồn (ví dụ như có thể đặt là address _ to hoặc address _ receiver) làm cho việc phân tích Smart Contract có thé không phù hợp. Có thể biên dịch source code thành opcode để EVM thực thi nó.

EVM sử dụng các opcode để thực thi những nhiệm vụ khác nhau. Có khoảng 140 opcode khác nhau giúp nâng cao EVM trở nên hoàn chỉnh, cho phép nó đánh giá mọi thứ, cụ thể là stop và các phép tính toán số học, phép so sánh, logic, sha3, thông tin biến environment, block, stack, memory, storage, luồng hoạt động,. EVM định nghĩa các lệnh opcodes bằng các con số, với mỗi số nhất định nó sẽ gắn liền với một opcode. Các opcode này được mã hóa thành mã bytecode để xác định mức độ bảo mật thích hợp.

EVM thống trị phần bên trong của Pthereum blockchain và cũng bao gồm danh sách chỉ tiết về trạng thái để bắt đầu giao dich. Bytecode thường là các mã số nhỏ gọn, chứa các câu lệnh cho máy tính ở dang nhị phan, mỗi lệnh là một opcode.1 thể hiện mối tương quan giữa source code, opcode và bytecode của Smart Contract 2. Solidity Solidity là một ngôn ngữ lập trình với cú pháp va cấu trúc mã tương tự như Javascript và C, được dùng để tao contract - một thành phần quan trọng để tạo block cho ứng dụng Ethereum trên EVM (Ethereum Virtual Machine). Solidity được xây dựng xoay quanh một khái niệm chính: contract.

Cơ bản thì contract giống như class trong lập trình tạo ra các đối tượng (OOP), với các biến trang thái (state variables) và chức năng (functions). Các khái niệm contract trừu tượng (contract có ít nhất một chức năng chưa được thực hiện) va interface (gồm các chữ ký của các tác vu) cũng giống như trong OOP. Smart Contract Smart Contract - hợp đồng thong minh, là những chương trình thực thi trên blockchain. Chúng giống như những hợp đồng số được điều chỉnh bởi một tập quy tắc rõ ràng.

Tập quy tắc đó được định nghĩa bởi mã máy tính mà tất cả các node trong mạng phải sao chép và tuân theo. Thực chat thi smart Contract chỉ là một đoạn mã (code) thực thi trên hệ thống phân tan (blockchain), nó có thể tạo ra các giao thức không cần quyền truy cập (permissionless). Trên Ethereum, Smart Contract đảm nhận việc thực hiện và quản lý các hoạt động xảy ra trên blockchin khi các người dùng (address) tương tác. Smart Contract sẽ được thực thi trong môi trường của Ethereum Virtual Machine (EVM), hay còn gọi là máy ảo Ethereum.

Don giản, EVM hoạt động như một trung gian trong việc thực thi Smart Contract trên mạng Ethereum.2 cho thấy mỗi nút Ethereum được trang bị mot EVM riêng, giúp dam bảo tính an toàn dữ liệu và phan tấn của mạng. EVM hỗ trợ thực thi và gọi các Smart Contract. EVM có kích thước stack đơn giản với kích thước stack tối đa là 1024. Do đó, nếu số lượng cuộc gọi vượt quá 1024 thì có thể xảy ra tình trạng tấn công Callstack.

Ethereum Node Ethereum Node Ethereum Node Smart Contracts Complied to 4 vy Ethereum Blockchain Ethereum Node Ethereum Node Hinh 2.2: Phương thúc hoạt động của EVM 2. Các lỗ hổng trong Smart Contract Phần này trình bày một số 16 hổng bảo mật trong các Smart Contract dựa trên Ethereum blockchain. Vì một Smart Contract có thể chứa hàng triệu đô la dưới dạng tiền điện tử nên những lỗ hong này có thể gây ra những ton thất nghiêm trọng. Reentrancy Reentrancy là một lỗ hổng Smart Contract có thể khai thác nổi tiếng xảy ra khi một Smart Contract gọi một Smart Contract và tiếp tục thực hiện sau khi cuộc gọi mới hoàn thành.

Điều này yêu cầu Smart Contract dễ bị tấn công gửi một cuộc gọi bên ngoài (external call), sau đó những kẻ lừa đảo có thể đánh cắp và thực hiện cuộc gọi đệ quy (recursive call) trở lại Smart Contract. Kẻ lừa đảo có thể tạo Smart Contract tại một dia chỉ bên ngoài bằng mã độc và rút tiền từ Smart Contract nếu không cập nhật trạng thái trước khi gửi tiền. Một ví dụ về smart contract tồn tại 16 hỗng này bị tan công này là cuộc tấn công DAO, dẫn đến mat ETH trị giá 150 triệu đô la từ Smart Contract của DAO (tổ chức tự trị phi tập trung). contract EtherStore { bWFonO2w mapping(address => uint) public balances; function deposit() public payable { balances[msg.value; function withdraw() public { uint balance = balances[msg.sender]; maCC¬ require(balance > 0); 12 // Not secure 10 13 (bool transferred, ) = msg.call{value: balance}(""); 14 require(transferred, “Khong the gui Ether"); 15 16 balances [msg.sender] = 0; 17 } 18 19 function getBalance() public view returns (uint) { 20 return address(this).balance; 21 } 22 } 23 24 contract Attack { 25 EtherStore public etherStore; 26 27 28 constructor(address _etherStoreAddress) { 29 etherStore = EtherStore(_etherStoreAddress) ; 30 31 32 fallback() external payable { 33 if (address(etherStore).balance >= 1 ether) f{ 34 etherStore.withdraw(); 35 } 36 } 37 38 function attack() external payable { 39 require(msg.value >= 1 ether); 40 etherStore.deposit{value: 1 ether}(); 41 etherStore.1: Mã nguồn minh hoa lỗ hổng Reentrancy Doan mã nguồn trên mô tả một Smart Contract.

có chứa lỗ hồng Reentrancy (EtherStore) và Smart Contract Attack là hợp đồng thông minh dùng để khai thác lỗ hong Reentrancy.3 mô tả các bước khai thác 16 hong Reentrancy. Khi contract EtherStore được deploy. Gỉa sử contract Attack sau khi deploy sẽ gọi ham deposit() của EtherStore và gửi vào một (ether). Sau đó contract Attack gọi hàm withdraw() để rút tiền đã gửi.

Khi các hợp đồng EtherStore không tiến hành cập nhật số dư của người dùng trước khi thực hiện việc chuyển tiền, người tấn công - attacker có thể liên tiếp gọi hàm withdraw để lấy hết số tiền (ether) trong contract. Bất kể khi nào contract của người tan công - attacker nhận Ether, hợp đồng đó sẽ tự động thực thi ham fallback (chức năng không có tên trong contract, được kích hoạt khi function được gọi không khớp với moi hàm trong contract, hoặc khi gửi các ether tới mà không chứa dữ liệu), nơi mà lại gọi hàm withdraw thêm một lần nữa. Tại điểm này, cuộc tấn công bắt đầu một chu kỳ đệ quy và hợp đồng đó không thể cập nhật số dư của người thực hiện tấn công. Access-control Access control xác định các hạn chế xung quanh đặc quyền và vai trò của người dùng trong một ứng dung.

Access control trong Smart Contract có thể liên quan đến quan trị và logic quan trọng như đúc mã thông báo, bỏ phiếu cho các đề xuất, rút tiền, tạm dừng và nâng cấp hợp đồng, thay đổi quyền sở hữu. e Không xác thực việc sửa đổi - điều quan trọng là cần có xác thực Access control trên các chức năng quan trọng thực hiện các thao tác như sửa đổi chủ sở hữu, chuyển tiền và tokens, tạm dừng và bỏ tạm dừng hợp đồng, v. Không xác thực việc sửa đổi rất có thể sẽ dẫn đến sự thỏa hiệp của hợp 12 EXPLOIT REENTRANCY .===d-=el-========x==m== ee ed es 2. Chuyển tiền eS (call.

Chuyén tiền (call.3: Các bước khai thác lỗ hổng Reentrancy 13 đồng hoặc mất tiền. e Sửa đổi tên (names) không chính xác - Do lỗi của nhà phát triển và lỗi chính tả, có thể xảy ra trường hợp tên của việc sửa đổi hoặc chức năng không chính xác so với dự định. Các tác nhân độc hại cũng có thể khai thác nó để gọi chức năng (function) quan trọng mà không cần có công cụ sửa đổi, điều này dẫn đến mất tiền hoặc sửa đổi quyền sở hữu tùy thuộc vào logic của chức năng. e Các vai trò (roles) bị áp đảo - Việc cho phép người dùng có các vai trò bị áp đảo có thé dẫn đến các lỗ hong bảo mật.

Việc thực hành đặc quyền tối thiểu phải luôn được tuân theo khi gan đặc quyền. Unchecked-calls Unchecked-calls là một loại lỗ hong xảy ra khi giá trị trả về (return value) của cuộc gọi tin nhắn không được kiểm tra. Do đó mà việc thực thi sẽ tiếp tục ngay cả khi Smart Contract được gọi đưa ra một ngoại lệ. Nếu cuộc gọi (call) không thành công ngẫu nhiên hoặc do ké tấn công buộc cuộc gọi không thành công, gây ra hành vi không mong muốn, làm ảnh hưởng đến logic chương trình 1 contract Lotto f{ bCFDoO2eNw3t bool public isPayedDut = false; address public winnerAddress; uint public winningAmount ; function transferToWinner() public { require (!isPayedOut) ; winnerAddress.

balance) ; 14 13 14 } Lỗ hổng xảy ra ở dòng số 8, khi winner nhận một lượng winAmount ether, trong đó lệnh gửi (send) được sử dụng mà không kiểm tra phản hồi. Trong trường hợp một người chiến thắng có giao dịch không thành công (ví dụ như hết gas hoặc hợp đồng cố ý dưa vào ham fallback function) cho phép payedOut được đặt thành true bất kể ether có được gửi hay không. Thì trường hợp này, bất kể ai cũng có thể rút tiền của winner qua hàm withdrawLeftOver 2. Arithmetic Day là một lỗ hong pho biến, nó lưu các dữ liệu bằng định dang nhị phan trong đó, số nhị phân là tập hợp các bit và mỗi bit bằng 0 hoặc 1.

Arithmetic overflow là lỗi xảy ra khi mà có kết quả của một phép toán vượt qua giá trị tối đa mà chương trình có thể lưu trữ.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu có tiêu đề "Phát Hiện Lỗ Hổng Hợp Đồng Thông Minh Tự Động Sử Dụng Học Sâu và Cơ Chế Chú Ý" trình bày một phương pháp tiên tiến để phát hiện lỗ hổng trong hợp đồng thông minh thông qua việc áp dụng các kỹ thuật học sâu và cơ chế chú ý. Bài viết không chỉ giúp người đọc hiểu rõ hơn về các lỗ hổng tiềm ẩn trong hợp đồng thông minh mà còn cung cấp những giải pháp tự động hóa trong việc phát hiện và khắc phục các vấn đề này.

Đối với những ai quan tâm đến việc tối ưu hóa hợp đồng thông minh, tài liệu này mở ra một cái nhìn sâu sắc về cách thức mà công nghệ học sâu có thể được áp dụng để nâng cao tính bảo mật. Để tìm hiểu thêm về các khía cạnh liên quan, bạn có thể tham khảo tài liệu "Optimizing smart contracts on ethereum", nơi cung cấp thông tin chi tiết về cách tối ưu hóa hợp đồng trên nền tảng Ethereum.

Ngoài ra, nếu bạn muốn khám phá thêm về việc phát hiện các bẫy trong hợp đồng thông minh, tài liệu "Khóa luận tốt nghiệp an toàn thông tin nghiên cứu thực nghiệm triển khai và phát hiện bẫy trên hợp đồng thông minh" sẽ là một nguồn tài liệu hữu ích.

Cuối cùng, để nắm bắt thêm về các phương pháp học sâu trong việc phát hiện lỗ hổng, bạn có thể tham khảo tài liệu "Khóa luận tốt nghiệp an toàn thông tin phát hiện tự động lỗ hổng hợp đồng thông minh dựa trên phương pháp học sâu". Những tài liệu này sẽ giúp bạn mở rộng kiến thức và hiểu biết về lĩnh vực bảo mật hợp đồng thông minh.