Task 9: Capability Leaking

Một phần của tài liệu THỰC TẬP CƠ SỞ CHUYÊN NGHÀNH AN TOÀN PHẦN MỀM NGHIÊN CỨU ENVIROMENT VARIABLE AND SET-UID (ENVIROMENT VARIABLE AND SET-UID LAB) (Trang 42 - 46)

Để tuân theo the Principle of Least Privilege, các chương trình Set-UID thường từ bỏ vĩnh viễn các đặc quyền root của chúng nếu các đặc quyền đó không còn cần thiết nữa. Hơn nữa, đôi khi, chương trình cần giao quyền kiểm soát của nó cho người dùng; trong trường hợp này, các đặc quyền root phải được thu hồi. Lệnh gọi hệ thống setuid () có thể được sử dụng để thu hồi các đặc quyền. Theo hướng dẫn, “setuid () đặt effective user ID của quá trình gọi. Nếu effective UID của người gọi là root, thì real UID và set- user-ID đã lưu cũng được đặt”. Do đó, nếu một chương trình Set-UID có UID 0 hiệu quả gọi setuid (n), quá trình này sẽ trở thành một quá trình bình thường, với tất cả các UID của nó được đặt thành n.

Khi thu hồi đặc quyền, một trong những sai lầm phổ biến là khả năng bị rò rỉ. Quá trình có thể đã đạt được một số khả năng đặc quyền khi nó vẫn còn đặc quyền; khi đặc quyền bị hạ cấp, nếu chương trình không xóa các khả năng đó, chúng vẫn có thể truy cập được bằng quy trình không có đặc quyền. Nói cách khác, mặc dù ID người dùng hiệu quả của quy trình trở thành không đặc quyền, quy trình vẫn là đặc quyền vì nó sở hữu các khả năng đặc quyền.

Trước tiên, ta tiến hành biên dịch và thực thi chương trình task9.c dưới đây, gắn quyền root cho chương trình và chuyển nó thành chương trình Set-UID.

Và đây, ta đã tạo một file trống zzz trong thư mục /etc. Khi task9 chạy và file zzz sẽ được kiểm tra, lúc này chúng ta sẽ nhìn thấy dữ liệu trong đó. Tệp được sửa đổi bằng cách thêm nội dung của tiến trình con vào tệp.

Tiếp theo, ta chạy chương trình và một lần nữa xem nội dung của tệp zzz, và lúc này ta thấy rằng nội dung tệp đã được sửa đổi. Điều này xảy ra bởi vì mặc dù trong chương trình, ta đã bỏ các đặc quyền, ta đã không đóng tệp vào đúng thời điểm và do đó tệp vẫn đang chạy với các quyền đặc quyền cho phép dữ liệu trong tệp được sửa đổi, ngay cả khi không có quyền phù hợp. Ở đây, sau khi gọi fork, quyền kiểm soát được chuyển cho tiến trình con và do đó người dùng độc hại thành công trong việc sửa đổi nội dung của tệp đặc quyền. Điều này cho thấy rằng điều quan trọng là phải đóng trình mô tả tệp sau khi loại bỏ các đặc quyền, để nó có các quyền thích hợp.

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

Mục tiêu chính của bài lab này là giúp sinh viên hiểu cách các biến môi trường ảnh hưởng đến chương trình và hành vi của hệ thống. Mặc dù các biến môi trường ảnh hưởng đến các hành vi của chương trình, nhưng cách chúng hoạt động thì không được nhiều lập trình viên hiểu rõ. Kết quả là, nếu một chương trình sử dụng các biến môi trường, các chương trình có thể có lỗ hổng. Qua bài lab này, sẽ hiểu rõ cách vận hành của các biến môi trường, cách chúng được đề xuất từ quy trình mẹ sang quy trình con, và cách chúng ảnh hưởng đến các chương trình/ hệ thống. Đặc biệt quan tâm đến cách các biến môi trường ảnh hưởng đến hoạt động của các chương trình Set-UID, thường là các chương trình đặc quyền.

TÀI LIỆU THAM KHẢO

[1] firmianay, "environment-variable-and-set-uid-lab.md," [Online]. Available:

https://github.com/firmianay/Life-long-Learner/blob/master/SEED-labs/environment- variable-and-set-uid-lab.md.

[2] W. Du, "Environment Variable and Set-UID Lab," [Online]. Available:

https://seedsecuritylabs.org/Labs_16.04/Software/Environment_Variable_and_SetUI D/.

[3] li-xin-yi, "Environment-Variable-and-Set-UID-Program-Lab," [Online]. Available: https://github.com/li-xin-yi/seedlab/tree/master/Environment-Variable-and-Set-UID- Program-Lab.

Một phần của tài liệu THỰC TẬP CƠ SỞ CHUYÊN NGHÀNH AN TOÀN PHẦN MỀM NGHIÊN CỨU ENVIROMENT VARIABLE AND SET-UID (ENVIROMENT VARIABLE AND SET-UID LAB) (Trang 42 - 46)

Tải bản đầy đủ (PDF)

(46 trang)