Đối với câu hỏi cuối cùng của bạn:
Và làm thế nào hữu ích là các biện pháp đó dù sao, khi ứng dụng của bạn sử dụng khoảng 30 thư viện sử dụng không ai trong số những người? ;)
PIE chỉ cần thiết cho chương trình chính để có thể tải tại địa chỉ ngẫu nhiên. ASLR luôn hoạt động cho các thư viện được chia sẻ, do đó, lợi ích của PIE là giống nhau cho dù bạn đang sử dụng một thư viện được chia sẻ hoặc 100.
Ngăn xếp ngăn xếp sẽ chỉ mang lại lợi ích cho mã được bảo vệ ngăn xếp. chương trình sẽ không giúp đỡ nếu các thư viện của bạn có đầy đủ các lỗ hổng.
Trong mọi trường hợp, tôi sẽ khuyến khích bạn không xem xét các tùy chọn này một phần của ứng dụng của bạn, nhưng thay vào đó là một phần của toàn bộ tích hợp hệ thống. Nếu bạn đang sử dụng 30+ thư viện (có thể phần lớn là thư rác khi nói đến chất lượng mã và bảo mật) trong chương trình sẽ giao tiếp với dữ liệu không đáng tin cậy, có khả năng gây hại, bạn nên xây dựng toàn bộ hệ thống của mình với ngăn xếp bảo vệ và các tùy chọn bảo mật khác. Tuy nhiên, hãy nhớ rằng mức cao nhất là _FORTIFY_SOURCE
và có lẽ một số tùy chọn bảo mật mới khác phá vỡ những điều hợp lệ, chương trình chính xác có thể cần phải thực hiện, và do đó bạn có thể cần phân tích xem có an toàn không . Một điều nguy hiểm mà một trong các tùy chọn thực hiện (tôi quên cái nào) là làm cho nó trở thành thông số %n
thành printf
không hoạt động, ít nhất là trong một số trường hợp nhất định. Nếu một ứng dụng đang sử dụng %n
để có được một bù đắp vào một chuỗi được tạo ra và cần phải sử dụng bù đắp để sau này viết trong nó, và giá trị không được điền vào, đó là một lỗ hổng tiềm năng trong chính nó ...
Nguồn
2012-02-22 18:00:02
ASLR là gì? chúng ta có thể tìm thấy giải thích chi tiết về những lá cờ này và tác động hiệu quả của chúng ở đâu? – sree