Hiểu về tràn bộ đệm
Nó sẽ là không thể trong một chương, hoặc thậm chí một cuốn sách, để tương xứng với tất cả các phương tiện có thể tấn công một sản phẩm phần mềm. Sau khi tất cả, một bảng tính được chia sẻ qua mạng không dây của bạn là rất khác nhau từ một video game multiplayer chơi trên Web hoặc một cục phân Quốc phòng hệ thống máy tính. Các hệ điều hành và các công nghệ này là duy nhất và do đó thường sẽ có các lỗ hổng bảo mật khác nhau. Có một vấn đề phổ biến, tuy nhiên, đó là một vấn đề an ninh trong bất kỳ bộ đệm phần mềm productthe tràn ngập. Trong Code Review Checklist Generic trong Chương 6, bạn đã học về liệu tham khảo Errorsbugs gây ra bằng cách sử dụng một biến, hằng, mảng, chuỗi, hoặc hồ sơ mà đã không được khai báo đúng hoặc khởi tạo cho nó như thế nào đang được sử dụng và tham khảo. "Một tràn bộ đệm là một lỗi như vậy. Đó là kết quả của chương trình kém, kích hoạt bằng nhiều ngôn ngữ như C và C ++, thiếu các chức năng xử lý chuỗi an toàn . Hãy xem xét các mẫu mã C trong Liệt kê 13.1. Liệt kê 13.1 Ví dụ về một tràn bộ đệm đơn giản. 1: void myBufferCopy (char * pSourceStr) {2: char pDestStr [100]; 3: int nLocalVar1 = 123; 4: int nLocalVar2 = 456 ; 5: strcpy (pDestStr, pSourceStr); ... 6:} 7: void myValidate () 8: {9: / * 10: Giả sử mã của chức năng này xác nhận một mật khẩu người dùng 11: và cho phép truy cập tới hàng triệu hồ sơ khách hàng tin 12: / * 13:} Bạn có thấy vấn đề kích thước của chuỗi đầu vào, pSourceStr, là không rõ Các kích thước của chuỗi đích, pDestStr là 100 byte?.. Điều gì xảy ra nếu chiều dài chuỗi mã nguồn là lớn hơn 100? Theo mã được viết, các chuỗi mã nguồn được sao chép ngay vào chuỗi đích, không có vấn đề gì chiều dài. Nếu đó là hơn 100 byte, nó sẽ điền vào chuỗi đích và sau đó tiếp tục ghi đè lên các giá trị được lưu trữ trong các biến địa phương. Tệ hơn nữa, tuy nhiên, là nếu chuỗi nguồn là đủ lâu, nó cũng có thể ghi đè lên địa chỉ trả về của hàm myBufferCopy và các nội dung của mã thực thi trong hàm myValidate (). Trong ví dụ này, một hacker có thẩm quyền có thể nhập mật khẩu siêu dài, nhồi với mã lắp ráp viết tay thay vì ký tự ASCII chữ và số, và ghi đè lên các mật khẩu xác nhận dự định thực hiện trong myValidatepossibly đạt được quyền truy cập vào hệ thống. Đột nhiên, những đánh giá mã được mô tả trong Chương 6 đi trên một ý nghĩa hoàn toàn mới! Chú ý Đây là một ví dụ rất đơn giản về tràn bộ đệm để chứng minh các vấn đề tiềm năng. Chính xác những gì dữ liệu hoặc mã chương trình được ghi đè, hoặc thậm chí nếu nó sẽ được ghi đè hoặc thực hiện tại tất cả các, phụ thuộc vào trình biên dịch và CPU. Nhưng, tất nhiên, các tin tặc biết rằng. Overruns đệm do xử lý không đúng cách của dây là bởi đến nay các lỗi mã hóa phổ biến nhất mà có thể dẫn đến một lỗ hổng bảo mật, nhưng bất kỳ của các lớp lỗi được mô tả trong chương 6 là những vấn đề tiềm năng. Là một thử nghiệm phần mềm, công việc của bạn là tìm những loại lỗi càng sớm càng tốt. Một xem xét mã sẽ tìm thấy chúng sớm trong chu kỳ phát triển, nhưng có một meansand thậm chí tốt hơn đó là để ngăn chặn chúng từ xảy ra ở nơi đầu tiên.
đang được dịch, vui lòng đợi..