THỰC tập cơ sở CHUYÊN NGHÀNH AN TOÀN PHẦN mềm NGHIÊN cứu lỗ HỔNG RACE CONDITION (RACE CONDITION VULNERABILITY LAB)

19 6 0
THỰC tập cơ sở CHUYÊN NGHÀNH AN TOÀN PHẦN mềm NGHIÊN cứu lỗ HỔNG RACE CONDITION (RACE CONDITION VULNERABILITY LAB)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN  THỰC TẬP CƠ SỞ CHUYÊN NGHÀNH AN TOÀN PHẦN MỀM NGHIÊN CỨU LỖ HỔNG RACE-CONDITION (RACE-CONDITION VULNERABILITY LAB) …………………………………………………………………………………………… Giảng viên hướng dẫn: PGS.TS Lương Thế Dũng Sinh viên thực hiện: Phạm Nguyễn Tiên Anh Lớp: Mã số sinh viên: Nhóm: Khóó́a: TP Hồ Chí Minh, tháng 11 năm 2021 BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN  THỰC TẬP CƠ SỞ CHUN NGÀNH AN TOÀN PHẦN MỀM NGHIÊN CỨU LỖ HỔNG RACE-CONDITION (RACE-CONDITION VULNERABILITY LAB) Nhận xét giáo viên hướng dẫn: Điểm báo cáo: Xác nhận giáo viên hướng dẫn: LỜI CẢM ƠN Chúng em xin chân thành cảm ơn PGS.TS Lương Thế Dũng–giảng viên trực tiếp hướng dẫn, bảo, tạo điều kiện thuận lợi giúp đỡ chúng em trình thực đề tài Để cóó́ thành ngày hơm nay, ngồi nỗ lực khơng ngừng nghỉ thành viên nhóó́m phần khơng nhỏ đóó́ng góó́p nên thành cơng nhờ quan tâm, bảo, giúp đỡ thầy cô, anh chị khóó́a bạn bè xung quanh Tuy cóó́ nhiều cố gắng nỗ lực thành viên để hoàn thiện đề tài, chắn đề tài “NGHIÊN CỨU LỖ HỔNG RACE- CONDITION (RACECONDITION VULNERABILITY LAB)” chúng em cịn nhiều thiếu sóó́t Chúng em mong nhận góó́p ý từ thầy giáo để nhóó́m em cóó́ thể hồn thiện tốt đề tài nghiên cứu sau Chúng em xin chân thành cảm ơn! LỜI MỞ ĐẦU Ngày nay, với xu hướng chuyển đổi số mạnh mẽ doanh nghiệp, công ty, tổ chức dẫn đến việc tạo phần mềm quản lý, điều hành làm việc thiết yếu Bên cạnh đóó́, ảnh hưởng đại dịch COVID-19 thúc đẩy nhanh việc chuyển đổi số Để đảm bảo an toàn cho phần mềm tạo vận hành tránh bị kẻ xấu công gây thiệt hại nghiêm trọng Đóó́ lý để chúng em chọn chuyên đề Software Security đặc biệt nghiên cứu lỗ hổng Race-Condition MỤC LỤC LỜI CẢM ƠN LỜI MỞ ĐẦU MỤC LỤC CHƯƠNG I: TỔNG QUAN VỀ RACE-CONDITION .6 1.Giới thiệu 2.Mục tiêu CHƯƠNG II: TIẾN HÀNH THỰC HIỆN BÀI LAB THEO THỨ TỰ TỪNG TASK 2.1 Task 1: Thiết lập ban đầu(Initial Setup) 2.2 Task 2: Chọn mục tiêu(Choosing our Target) .8 2.3 Task 3: Khởi động công Race Condition(Launching the Race Condition Attack) 2.4 Task 4: Biện pháp đối phóó́: Áp dụng Nguyên tắc Ít Đặc Quyền (Countermeasure: Applying the Principle of Least Privilege) 14 2.5 Task 5: Biện pháp đối phóó́: Sử dụng Lược đồ tích hợp Ubuntu (Countermeasure: Using Ubuntu’s Built-in Scheme) 16 CHƯƠNG III: KẾT LUẬN 18 3.1 Kết đạt 18 a Cách chế bảo vệ hoạt động 18 b Những giới hạn của chế bảo vệ 18 TÀI LIỆU THAM KHẢO 19 CHƯƠNG I: TỔNG QUAN VỀ RACE-CONDITION 1.Giới thiệu Trong phịng thí nghiệm này, học sinh học chương trình cóó́ tính dễ bị tổn thương race-condition; nhiệm vụ họ phát triển kế hoạch để khai thác lỗ hổng giành đặc quyền root Ngoài công, học sinh hướng dẫn để qua số kế hoạch bảo vệ cóó́ thể sử dụng để chống lại công theo lỗ hổng race -condition Học sinh cần đánh giá xem chương trình cóó́ hoạt động hay khơng giải thích 2.Mục tiêu Mục tiêu học tập phịng thí nghiệm để sinh viên cóó́ kinh nghiệm trực tiếp lỗ hổng race-condition cách đưa họ học lỗ hổng từ lớp thành hành động Một race-condition xảy nhiều quy trình truy cập thao tác đồng thời liệu kết việc thực thi phụ thuộc vào thứ tự cụ thể mà việc truy cập diễn Nếu chương trình đặc quyền cóó́ lỗ hổng race-condition, kẻ cơng cóó́ thể chạy quy trình song song để "chạy đua" với chương trình đặc quyền, với ý định thay đổi hành vi chương trình CHƯƠNG II: TIẾN HÀNH THỰC HIỆN BÀI LAB THEO THỨ TỰ TỪNG TASK 2.1 Task 1: Thiết lập ban đầu(Initial Setup) Bạn cóó́ thể thực tác vụ phịng thí nghiệm cách sử dụng máy ảo Ubuntu tạo sẵn Nếu bạn sử dụng Ubuntu chúng tơi 9.11 VM, bạn cóó́ thể bỏ qua bước thiết lập ban đầu Nếu bạn sử dụng máy ảo Ubuntu 11.04 12.04 chúng tôi, bạn cần để đọc phần sau Ubuntu 11.04 12.04 kèm với tính bảo vệ tích hợp chống lại tình trạng chủng tộc công Lược đồ hoạt động cách hạn chế cóó́ thể theo dõi liên kết tượng trưng Theo tài liệu, “Các liên kết tượng trưng thư mục cố định cóó́ thể ghi giới (ví dụ: / tmp) theo sau người theo dõi thư mục chủ sở hữu không khớp với chủ sở hữu liên kết biểu tượng ”( symlinks in world-writable sticky directories (e.g /tmp) cannot be followed if the follower and directory owner not match the symlink owner) Trong phịng thí nghiệm này, chúng tơi cần tắt tính bảo vệ Bạn cóó́ thể đạt điều đóó́ cách sử dụng lệnh sau: Chúng tơi biên dịch chương trình vulp.c cho biến nóó́ thành chương trình gốc SETUID sau: 2.2 Task 2: Chọn mục tiêu(Choosing our Target) Ở đây, trước tiên kiểm tra xem cóó́ người dùng đặt tên kiểm tra hay khơng Chúng tơi thấy khơng cóó́ cóó́ tên đóó́ sau đóó́ chúng tơi nhập văn sau vào tệp / etc / passwd từ tài khoản gốc: Sau chỉnh sửa tệp / etc / passwd, kiểm tra lại tệp thấy mục thực Sau đóó́, chúng tơi kiểm tra xem người dùng tạo thành công hay chưa cách chuyển từ hạt giống sang thử nghiệm nhấn enter hỏi mật Những điều sau cho thấy thành công chuyển sang tài khoản người dùng thử nghiệm dấu ‘#’ cho biết đóó́ tài khoản gốc: Sau xác minh mục nhập chúng tơi hoạt động, chúng tơi xóó́a mục nhập thủ công khỏi / etc / passwd tương lai điều xác minh cách làm sau: 2.3 Task 3: Khởi động công Race Condition(Launching the Race Condition Attack) Để khởi động công, cần chạy hai trình Target_process chạy chương trình đặc quyền vịng lặp trừ tệp mật bị thay đổi Mục nhập người dùng từ nhiệm vụ lưu trữ tệp passwd_input cung cấp làm đầu vào cho chương trình đặc quyền Mã cóó́ thể thấy ảnh chụp hình sau, đóó́ điều kiện để phá vỡ vòng lặp sử dụng dấu thời gian tệp tức nóó́ dừng dấu thời gian thay đổi cho biết tệp sửa đổi Mặt khác, attack_process trình chạy song song với target_process cố gắng thay đổi vị trí “/ tmp / XYZ” trỏ đến, để nóó́ trỏ đến tệp mà muốn ghi vào sử dụng target_process Chúng tơi xóó́a liên kết cũ cách sử dụng hủy liên kết sau đóó́ tạo liên kết cách sử dụng liên kết tượng trưng Ban đầu, đặt “/ tmp / XYZ” trỏ tới “/ dev / null” để chúng tơi cóó́ thể vượt qua kiểm tra quyền truy cập cóó́ thể vượt qua kiểm tra / dev / null cóó́ thể ghi cho nóó́ tệp đặc biệt cóó́ thể loại bỏ điều viết cho nóó́ Sau đóó́, chúng tơi để q trình ngủ thời gian định sau đóó́ tạo “/ tmp / XYZ” tệp trỏ tới tệp “/ etc / passwd”, tệp mà chúng tơi muốn ghi vào Q trình thực vòng lặp để chạy đua với target_process: Tiếp theo, trước tiên, biên dịch chạy attack_process terminal, sau đóó́ sử dụng terminal khác để chạy target_process: Target_process dừng tệp mật thay đổi thành công, theo điều kiện định tệp Sau đóó́, chúng tơi kiểm tra mục nhập tạo tệp Để xác minh điều đóó́, chúng tơi chuyển sang người dùng thử nghiệm cần nhấn enter nhắc nhập mật Như thấy, nhập thành công người dùng nhập ‘whoami’ id, thấy kiểm tra người dùng root 10 Điều chứng tỏ công thành công sử dụng điều kiện chủng tộc, chúng tơi cóó́ thể nâng cấp đặc quyền ghi vào tệp mật Ngoài ra, tác hại gây tạo gốc người dùng, đóó́ cóó́ quyền truy cập root vào hệ thống, điều cóó́ thể nguy hiểm Ở đây, thảo luận, cóó́ điều kiện chạy đua lệnh hủy liên kết liên kết biểu tượng q trình cơng Nếu tệp target_process mở sau hủy liên kết trước liên kết biểu tượng cơng ln khơng thành cơng tệp tạo SETUID chương trình đóó́ chủ sở hữu root Trong trường hợp này, hủy liên kết đóó́ cơng luôn thất bại Điều thư mục / tmp cóó́ bit "dính", điều cho phép chủ sở hữu tệp để xóó́a tệp, thư mục giới cóó́ thể ghi Để vượt qua điều này, cóó́ thể sử dụng lệnh gọi hệ thống renameat2 () để khắc phục điều kiện đua cửa sổ hủy liên kết liên kết biểu tượng Hàm renameat2 () hoán đổi liên kết tượng trưng cờ sử dụng RENAME_EXCHANGE Việc hoán đổi giúp làm cho / tmp / XYZ trỏ đến / dev / null đơi nóó́ trỏ đến / etc / passwd Khi nóó́ trỏ đến / etc / passwd sau kiểm tra quyền truy cập trước mở tệp, sau đóó́ công điều kiện đua thành công Các chương trình sau sử dụng renameat2 (): 11 Trước chạy chương trình này, chúng tơi đặt liên kết tượng trưng để / tmp / XYZ trỏ tới / dev / null / tmp / link1 trỏ tới / etc / passwd Khi làm điều này, lệnh gọi hệ thống renameat2 () thực hiện, nóó́ hoán đổi / tmp / XYZ để trỏ tới / etc / passwd / tmp / link1 để trỏ tới / dev / null Điều tiếp tục diễn vòng lặp / tmp / XYZ trỏ đến / etc / passwd kiểm tra quyền truy cập mở tệp, công thành cơng Q trình cơng chạy Chúng tơi xác minh khơng cóó́ tài khoản thử nghiệm cóó́ Sau đóó́, chúng tơi chạy target_process chạy chương trình đặc quyền vịng lặp thấy điều dừng điều kiện dừng đáp ứng - tệp mật sửa đổi Sau đóó́, chúng tơi làm tương tự thử nghiệm thực trước đóó́ để xác minh việc tạo người dùng điều cóó́ thể nhìn thấy ảnh chụp hình Điều cho thấy công thành công cóó́ thể sử dụng lệnh gọi hệ thống renameat2 () để thực việc này, tránh race condition cửa sổ hủy liên kết liên kết biểu tượng, đóó́ đảm bảo thành cơng cơng race condition 12 Attack_process viết trước đóó́ cóó́ thể chứa lệnh gọi đến renameat2 () hàm chạy vịng lặp while đóó́ nóó́ cóó́ tác dụng tương tự Cập nhật chương trình sau: Sự thành cơng công cách sử dụng attack_process cập nhật: Do đóó́, cóó́ thể thấy race condition đạt thành cơng cóó́ thể nhận đặc quyền root vào hệ thống 13 2.4 Task 4: Biện pháp đối phó: Áp dụng Nguyên tắc Ít Đặc Quyền (Countermeasure: Applying the Principle of Least Privilege) Chúng tơi chỉnh sửa chương trình dễ bị cơng để áp dụng ngun tắc đặc quyền Chúng sử dụng thực UID UID hiệu dụng chương trình Trước kiểm tra quyền truy cập, trước tiên đặt giá trị hiệu UID giống với UID thực Điều làm giảm đặc quyền kết thúc chương trình, chúng tơi thay đổi UID cóó́ hiệu lực giống trước để nhận lại đặc quyền Chúng biên dịch chương trình biến nóó́ thành chương trình sở hữu root SETUID Chúng tơi thực quy trình tương tự trước công: 14 Terminal 1: Terminal 2: 15 Những điều cho thấy công không thành công Theo nguyên tắc đặc quyền nhất, đặc quyền chương trình SETUID tạm thời bị loại bỏ chúng tơi đặt người dùng hiệu ID giống ID người dùng thực Do đóó́, chương trình dễ bị tổn thương khơng thể dễ bị cơng Đây vì, hàm fopen () sử dụng ID người dùng hiệu để mở tệp đặc quyền / etc / passwd khơng cóó́ quyền truy cập để mở tệp ID người dùng hiệu ID hạt giống mà khơng cóó́ đặc quyền để mở tệp Bằng cách đặt id người dùng hiệu thành người dùng thực id thời điểm thực thi, từ chối đặc quyền bổ sung không bắt buộc 2.5 Task 5: Biện pháp đối phó: Sử dụng Lược đồ tích hợp Ubuntu (Countermeasure: Using Ubuntu’s Built-in Scheme) Trước tiên, chỉnh sửa chương trình từ bước trước, loại bỏ điều kiện đặc quyền định, làm cho chương trình dễ bị cơng trở lại Sau thay đổi, chúng tơi biên dịch lại chương trình làm cho nóó́ chương trình gốc SETUID Tiếp theo, chúng tơi kích hoạt tính bảo vệ tích hợp sẵn Ubuntu trước race condition: Để kiểm tra xem chúng tơi cóó́ thể thực cơng với điều kiện kích hoạt hay khơng, chúng tơi chạy q trình cơng quy trình mục tiêu terminal khác 16 Như thấy, công không thành công 17 CHƯƠNG III: KẾT LUẬN 3.1 Kết đạt a Cách chế bảo vệ hoạạ̣t động Ở đây, lỗ hổng race condition vulnerability TOCTTOU bị khai thác liên quan đến liên kết tượng trưng bên thư mục ‘/ tmp’ Do đóó́, ngăn chương trình theo liên kết tượng trưng điều kiện cụ thể cóó́ thể khắc phục lỗ hổng Đóó́ xác tích hợp sẵn kỹ thuật phịng ngừa khơng Khi tính ngăn chặn liên kết tượng trưng cố định bật, liên kết tượng trưng bên thư mục cố định cóó́ thể ghi giới cóó́ thể theo dõi chủ sở hữu liên kết tượng trưng khớp với người theo dõi chủ sở hữu thư mục Trong trường hợp chúng tơi, kể từ chương trình chạy với đặc quyền root thư mục / tmp thuộc sở hữu root, chương trình, chương trình khơng phép theo liên kết tượng trưng không tạo root Trong trường hợp chúng ta, liên kết tượng trưng tạo kẻ công mà thực tài khoản hạt giống Kể từ liên kết không theo dõi dẫn đến cố, thấy Do đóó́, người dùng khác truy cập tệp bảo vệ chương trình cóó́ lỗ hổng Race- Condition b Những giới hạạ̣n chế bảo vệ Phương án bảo vệ không ngăn chặn race condition diễn ra, mà cản trở nóó́ khỏi gây thiệt hại Do đóó́, nóó́ chế tốt để kiểm soát truy cập, cho phép người dùng dự định truy cập vào tệp không thực ngăn chặn race condition diễn Ngoài ra, biện pháp bảo vệ áp dụng cho thư mục cóó́ thể ghi , chẳng hạn như/ tmp áp dụng cho loại thư mục khác 18 TÀI LIỆU THAM KHẢO [1] firmianay, "race-condition-vulnerability-lab.md," [Online] Available: https://github.com/firmianay/Life-long-Learner/blob/master/SEEDlabs/race-condition-vulnerability-lab.md [2] W Du, "Race-Condition Vulnerability Lab," [Online] Available: https://seedsecuritylabs.org/Labs_16.04/Software/Dirty_COW/ [3] MeghaJakhotia, "Race Condition," [Online] Available: https://github.com/MeghaJakhotia/ComputerSecurityAttacks/tree/master/Race %20Condition 19 ...BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN  THỰC TẬP CƠ SỞ CHUYÊN NGÀNH AN TOÀN PHẦN MỀM NGHIÊN CỨU LỖ HỔNG RACE- CONDITION (RACE- CONDITION VULNERABILITY LAB). .. chị khóó́a bạn bè xung quanh Tuy cóó́ nhiều cố gắng nỗ lực thành viên để hoàn thiện đề tài, chắn đề tài “NGHIÊN CỨU LỖ HỔNG RACE- CONDITION (RACECONDITION VULNERABILITY LAB)? ?? chúng em nhiều thiếu... firmianay, "race- condition- vulnerability- lab.md," [Online] Available: https://github.com/firmianay/Life-long-Learner/blob/master/SEEDlabs /race- condition- vulnerability- lab.md [2] W Du, "Race- Condition

Ngày đăng: 23/03/2022, 19:20

Tài liệu cùng người dùng

Tài liệu liên quan