Buffer overflows - Tràn bộ đệm

Chuyên đề thảo luận về Security Testing.
Forum rules
Chuyên đề này chỉ thảo luận về Security Testing.
Để có kết quả nhanh, các bạn nên search trước khi tạo chủ đề mới.
Post Reply
tvn1
Jr. Tester
Posts: 67
Joined: Fri 26 Jul, 2013 12:32 am
Contact:

Buffer overflows - Tràn bộ đệm

Post by tvn1 »

Tấn công bằng cách gây tràn bộ đệm(Buffer overflows):

Lỗi tràn bộ đệm là khi bộ nhớ bị ghi đè nhiều lần trên ngăn xếp (stack). Thông thường nó xảy ra người dùng gởi một lượng lớn dữ liệu đến server ứng dụng và sau đó tiêm độc hại tấn công vào lượng lớn dữ liệu này. Khi gởi một lượng lớn dữ liệu thì có một số vấn đề bắt đầu nảy sinh. Vì vậy các dữ liệu đầu vào nên được validate (xác nhận) một cách kỹ lưỡng. Nó cần được làm sạch và cần được xác minh (verified) trước khi lưu lại.

Ví dụ: Bạn thử copy 1 số nguyên, nhưng thay vì vậy bạn gửi 1 lượng lớn dữ liệu để nó chiếm không gian bộ nhớ gấp đôi bộ nhớ dành cho số nguyên. Với việc copy tùy ý, lượng dữ liệu lớn này sẽ được copy vào khu vực kế tiếp (next location) và được đặt trong ngăn xếp (trong bộ nhớ máy tính). Bây giờ lượng lớn dữ liệu đã đặt trong ngăn xếp, đôi khi dữ liệu này được lôi ra khỏi ngăn xếp và thực thi. Điều này có thể là ngay lập tức, hoặc 1 thời gian sau đó hoặc thậm chí đã từng làm hỏng hóc vùng nhớ dữ liệu khác.

Một malicious user có thể sử dụng lỗi tràn bộ đệm để phá hủy ứng dụng web hoặc website. Lỗi tràn bộ đệm được sử dụng để tấn công vào máy chủ giành quyền kiểm soát mà bình thường không hề xảy ra hoặc nó khởi động chương trình từ ngăn xếp. Một lỗi tràn bộ nhớ có thể thực hiện từ chối dịch vụ (DoS) hoặc phân phối dịch vụ (DDoS).

Làm thế nào để chống lại việc tràn bộ đệm (How to protect against buffer overflows)
Để bảo vệ chống tràn bộ đệm, việc xác nhận đầu vào là rất cần thiết. Bất kỳ field, form đăng ký, hoặc bất kỳ phương pháp khác mà có nhập đầu vào đều có thể một lỗ hổng tiềm tàng của việc tràn bộ đệm. Điều này không chỉ bao gồm một form field, HTTP header, giao diện XML, hoặc bất kỳ giá trị đầu vào nào khác. Bạn hãy nghĩ đến tất cả những giá trị input ở bất kì khu vực nào của ứng dụng phần mềm.

Một số trong những điều đơn giản hơn là dev cần thực hiện thiết lập kích thước giới hạn cho phép của các giá trị đầu vào. Mặc dù ai đó có thể có một cái tên với 100 kí tự trong đó, giới hạn kích thước của các field nhập dữ liệu. Bạn cần phải biết chính xác kích thước của dữ liệu tiềm năng này có thể đạt đến. Điều này có thể đơn giản như setting thẻ HTML trong input field, hoặc sử dụng một số javascript để kiểm tra và validate input field. Nhưng việc được cảnh báo như vậy là chưa đủ. Một malicious user sẽ không tuân theo việc sử dụng trình duyệt mà sẽ tự động set kích thước giá trị đầu vào và sử dụng javascript validate input. Một malicious user có thể và sẽ sử dụng cái gì khác. Một malicious user sẽ viết code của chính anh ấy, sử dụng netcat, hoặc một số hình thức khác của một trình duyệt để có được xung quanh những kiểm tra đơn giản. Giá trị đầu vào phải được xác nhận trong code của ứng dụng web chĩnh nó.

Tóm lại, việc kiểm tra html form, cần lưu ý những vấn đề sau:
  • Limit HTML input tags with the html size tag
    URL Encode all input, to protect against special characters
    Use JavaScript to perform the initial input validation
    Most important, the underlying code must verify and sanitize the input provided



camapden
Fresher Tester
Posts: 44
Joined: Sun 06 Feb, 2011 7:42 pm
Contact:

Re: Buffer overflows - Tràn bộ đệm

Post by camapden »

Tóm lại, việc kiểm tra html form, cần lưu ý những vấn đề sau:
Limit HTML input tags with the html size tag
URL Encode all input, to protect against special characters
Use JavaScript to perform the initial input validation
Most important, the underlying code must verify and sanitize the input provided

Hi,anh tvn1 có thể cho ví dụ từng trường hợp đươc hok,thanks nhiều.



khuyen92
Hoc Tester
Posts: 2
Joined: Mon 22 Oct, 2012 9:57 am
Contact:

Re: Buffer overflows - Tràn bộ đệm

Post by khuyen92 »

camapden wrote:Tóm lại, việc kiểm tra html form, cần lưu ý những vấn đề sau:
Limit HTML input tags with the html size tag
URL Encode all input, to protect against special characters
Use JavaScript to perform the initial input validation
Most important, the underlying code must verify and sanitize the input provided

Hi,anh tvn1 có thể cho ví dụ từng trường hợp đươc hok,thanks nhiều.



Post Reply

Return to “Security Testing - Kiểm thử bảo mật”