Understanding the Buffer OverrunIt would be impossible in one chapter, dịch - Understanding the Buffer OverrunIt would be impossible in one chapter, Việt làm thế nào để nói

Understanding the Buffer OverrunIt

Understanding the Buffer Overrun
It would be impossible in one chapter, or even one book, to adequately cover all the possible means of attacking a software product. After all, a spreadsheet shared over your home's wireless network is very different from a multiplayer video game played over the Web or a distributed Department of Defense computer system. The operating systems and the technologies are unique and therefore will usually have different security vulnerabilities. There is one common problem, however, that is a security issue in any software productthe buffer overrun.

In the Generic Code Review Checklist in Chapter 6, you learned about Data Reference Errorsbugs caused by using a variable, constant, array, string, or record that hasn't been properly declared or initialized for how it's being used and referenced." A buffer overrun is such an error. It is the result of poor programming, enabled by many languages such as C and C++, that lack safe string handling functions. Consider the sample C code in Listing 13.1.

Listing 13.1. Example of a Simple Buffer Overflow
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: Assume this function's code validates a user password
11: and grants access to millions of private customer records
12:/*
13: }



Do you see the problem? The size of the input string, pSourceStr, is unknown. The size of the destination string, pDestStr is 100 bytes. What happens if the source string's length is greater than 100? As the code is written, the source string is copied right into the destination string, no matter what the length. If it's more than 100 bytes, it will fill the destination string and then continue overwriting the values stored in the local variables.

Worse, however, is if the source string is long enough, it could also overwrite the return address of the function myBufferCopy and the contents of the executable code in the function myValidate(). In this example, a competent hacker could enter a super long password, stuffed with hand-written assembly code instead of alphanumeric ASCII characters, and override the intended password validation performed in myValidatepossibly gaining access to the system. Suddenly, those code reviews described in Chapter 6 take on a whole new meaning!

NOTE

This is a greatly simplified example of a buffer overrun to demonstrate the potential problem. Exactly what data or program code gets overwritten, or even if it will be overwritten or executed at all, depends on the compiler and the CPU. But, of course, the hackers know that.



Buffer overruns caused by improper handling of strings are by far the most common coding error that can result in a security vulnerability, but any of the error classes described in Chapter 6 are potential problems. As a software tester, your job is to find these types of bugs as early as possible. A code review would find them early in the development cycle, but there's an even better meansand that's to prevent them from happening in the first place.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Understanding the Buffer OverrunIt would be impossible in one chapter, or even one book, to adequately cover all the possible means of attacking a software product. After all, a spreadsheet shared over your home's wireless network is very different from a multiplayer video game played over the Web or a distributed Department of Defense computer system. The operating systems and the technologies are unique and therefore will usually have different security vulnerabilities. There is one common problem, however, that is a security issue in any software productthe buffer overrun.In the Generic Code Review Checklist in Chapter 6, you learned about Data Reference Errorsbugs caused by using a variable, constant, array, string, or record that hasn't been properly declared or initialized for how it's being used and referenced." A buffer overrun is such an error. It is the result of poor programming, enabled by many languages such as C and C++, that lack safe string handling functions. Consider the sample C code in Listing 13.1.Listing 13.1. Example of a Simple Buffer Overflow1: 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: Assume this function's code validates a user password11: and grants access to millions of private customer records12:/*13: }Do you see the problem? The size of the input string, pSourceStr, is unknown. The size of the destination string, pDestStr is 100 bytes. What happens if the source string's length is greater than 100? As the code is written, the source string is copied right into the destination string, no matter what the length. If it's more than 100 bytes, it will fill the destination string and then continue overwriting the values stored in the local variables.Worse, however, is if the source string is long enough, it could also overwrite the return address of the function myBufferCopy and the contents of the executable code in the function myValidate(). In this example, a competent hacker could enter a super long password, stuffed with hand-written assembly code instead of alphanumeric ASCII characters, and override the intended password validation performed in myValidatepossibly gaining access to the system. Suddenly, those code reviews described in Chapter 6 take on a whole new meaning!NOTEThis is a greatly simplified example of a buffer overrun to demonstrate the potential problem. Exactly what data or program code gets overwritten, or even if it will be overwritten or executed at all, depends on the compiler and the CPU. But, of course, the hackers know that.Buffer overruns caused by improper handling of strings are by far the most common coding error that can result in a security vulnerability, but any of the error classes described in Chapter 6 are potential problems. As a software tester, your job is to find these types of bugs as early as possible. A code review would find them early in the development cycle, but there's an even better meansand that's to prevent them from happening in the first place.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
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..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: