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 5 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: Sinh viên thực hiện: Lớp: Mã số sinh viên: Nhóm: Khóa: PGS.TS Lương Thế Dũng Phạm Nguyễn Tiến Anh AT15H AT150702 13 2018-2023 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Ở CHUYÊN 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 q 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 nhiều thiếu sót Chúng em mong nhận góp ý từ thầy giáo để nhóm em hoà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ệ 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 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 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 9.11 VM, bạn 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ế 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 ghi giới (ví dụ: / tmp) khơng thể 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 đạ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 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 chúng tơi 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 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ã 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 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, để 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 vượt qua kiểm tra quyền truy cập chúng tơi vượt qua kiểm tra / dev / null ghi cho tệp đặc biệt loại bỏ điều viết cho Sau đó, chúng tơi để trình ngủ thời gian định sau tạo “/ tmp / XYZ” tệp trỏ tới tệp “/ etc / passwd”, tệp mà muốn ghi vào Quá 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 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 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 ln ln 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 ghi Để vượt qua điều này, 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 trỏ đến / etc / passwd Khi 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, hố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 Quá 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 đó, 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 nhìn thấy ảnh chụp hình Điều cho thấy cơng thành cơng 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 chứa lệnh gọi đến renameat2 () hàm chạy vịng lặp while 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 đó, thấy race condition đạt thành cơng 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 Ngun tắc Ít Đặc Quyền (Countermeasure: Applying the Principle of Least Privilege) Chúng chỉnh sửa chương trình dễ bị cơng để áp dụng ngun tắc đặc quyền Chúng tơi 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 tơi biên dịch chương trình biế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 ngun 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 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úng tơi 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 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 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ể 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 ghi giới 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ở khỏi gây thiệt hại Do đó, 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 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/SEED-labs/racecondition-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). .. đề 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 hồn thiện tốt đề tài nghiên cứu sau... firmianay, "race- condition- vulnerability- lab.md," [Online] Available: https://github.com/firmianay/Life-long-Learner/blob/master/SEED-labs/racecondition -vulnerability- lab.md [2] W Du, "Race- Condition

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

Mục lục

    CHƯƠNG I: TỔNG QUAN VỀ RACE-CONDITION

    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)

    2.3. Task 3: Khởi động cuộc tấn 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)

    2.5. Task 5: Biện pháp đối phó: Sử dụng Lược đồ tích hợp của Ubuntu (Countermeasure: Using Ubuntu’s Built-in Scheme)

    CHƯƠNG III: KẾT LUẬN

    3.1. Kết quả đạt được

    a. Cách cơ chế bảo vệ hoạt động

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

  • Đang cập nhật ...

Tài liệu liên quan