EX1: Tìm hiểu lỗ hổng Buffer overflow

Mask

VIP Members
03/07/2013
31
25 bài viết
EX1: Tìm hiểu lỗ hổng Buffer overflow
Xin lỗi các bạn, thấy forum thiếu nhiều mục kiến thức cơ bản về phần các lổ hổng quá, hôm nay mình mạn phép xin viết một bài nhỏ về một loại lỗi cơ bản nhất từ xưa đến nay, lỗ hổng tràn bộ đệm buffer overflow, có gì thiếu sót hay không hiểu các bạn cứ đóng góp ý kiến nha. Thank trước.
Phần trình bay của mình sẽ bao gồm 2 phần, phần giới thiệu lý thuyết và phần thực hành. Hôm nay chắc sẽ nói qua về phần lý thuyết trước đã.
Để tìm hiểu về cái này, mình xin đi vào một số khái niệm cơ bản đã nhỉ:

Bài giới thiệu của mình là về lỗ hổng tràn bộ đệm, vậy bộ đệm là gì ? Lỗ hổng tràn bộ đệm là gì ?

Buffer –
tạm dịch là bộ đệm – được định nghĩa là một vùng nhớ liên tục có kích thước giới hạn. Bộ đệm thường dùng nhất trong C là một mảng. Bộ đệm thường được dùng để lưu trữ các giá trị tạm thời của một xâu phục vụ cho quá trình xử lý.

Vậy lỗ hổng tràn bộ đệm hiểu theo nghĩa đơn giản nhất là sao chép dữ liệu có kích thước lớn hơn vào một bộ đệm mà không thực hiện các thao tác kiểm tra biên dẫn đến vùng nhớ phía sau bộ đệm bị ghi đè, vùng nhớ này có thể lại là một bộ đệm khác hoặc là vùng nhớ hệ thống…Hậu quả có thể làm chương trình hoạt động không chính xác hoặc đổ vỡ.

Buffer Overflow.png

Các bạn có thể nhìn qua ví dụ sau:

Mã:
#include
int main[B]()
{[/B]
    int array[B][[/B]5[B]][/B] [B]=[/B] [B]{[/B]1[B],[/B]2[B],[/B]3[B],[/B]4[B],[/B]5[B]};[/B]
    printf[B]([/B]"%d
"[B],[/B]array[B][[/B]5[B]]);[/B]
    [B]return[/B] 0[B];
}[/B]

Ở đây, khi chương trình chạy, một buffer sẽ được cấp phát để lưu trữ các giá trị của mảng array. Và biên dịch chương trình không hề có lỗi, điều đó chứng tỏ C không hề thực hiện kiểm tra biên của mảng.

Dù không tồn tại phần tử array[5] nhưng cũng không có lỗi xảy ra.

Chúng ta cùng thử một ví dụ khác:

Mã:
int main[B]()
{[/B]
    int array[B][[/B]5[B]];[/B]
    int i[B];[/B]
    [B]for[/B] [B]([/B]i [B]=[/B] 0[B];[/B] i [B]
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Re: EX1: Tìm hiểu lỗ hổng Buffer overflow

Anh ơi hai cái link youtube em không xem được, nó báo "rất tiếc đây là video riêng tư" :( Anh giúp em xem được không ạ :rolleyes::rolleyes:
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: EX1: Tìm hiểu lỗ hổng Buffer overflow

Hai video trên có thể đã bị remove khỏi youtobe bạn có thể tham khảo các video khác để biết thêm về lỗ hổng này:
https://www.youtube.com/watch?v=8S0SqXIGv98
Cáp quang đanh bị đứt nên mấy video youtobe khó xem lắm bạn kiên trì chờ load nhé :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: EX1: Tìm hiểu lỗ hổng Buffer overflow

Cảm ơn bac Mask đã gởi bài này. Em đọc thấy thú vị và không hiểu tại sao một phần mềm bị lỗi BOF này lại bị lợi dụng một cách cụ thể bởi các hacker từ xa rồi họ chiếm được cả hệ điều hành ? Mấy link bác cho xem có được đâu, lại toàn tiếng tây.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: EX1: Tìm hiểu lỗ hổng Buffer overflow

DiepNV88;19153 đã viết:
Hai video trên có thể đã bị remove khỏi youtobe bạn có thể tham khảo các video khác để biết thêm về lỗ hổng này:
https://www.youtube.com/watch?v=8S0SqXIGv98
Cáp quang đanh bị đứt nên mấy video youtobe khó xem lắm bạn kiên trì chờ load nhé :D
hóng cái vietsub bác ơi, chứ tiếng anh e còn kém lắm :3
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
hk có phần 2 hả anh
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Re: EX1: Tìm hiểu lỗ hổng Buffer overflow

Cảm ơn bac Mask đã gởi bài này. Em đọc thấy thú vị và không hiểu tại sao một phần mềm bị lỗi BOF này lại bị lợi dụng một cách cụ thể bởi các hacker từ xa rồi họ chiếm được cả hệ điều hành ? Mấy link bác cho xem có được đâu, lại toàn tiếng tây.

Trong một chương trình (program) có nhiều tiến trình (process). Giả sử khi một tiến trình A đang chạy, nó có thể bị ngắt tạm thời bởi một tiến trình B khác cần chạy. Sau khi B chạy xong, chương trình sẽ điều khiển quay trở về tiếp tục thực thi A. Để quay về nơi A đang thực thi thì trước đó cần lưu trữ thông tin về địa chỉ của A trong buffer.
Kẻ tấn công biết điều này! Do vậy hắn ta sẽ tìm cách thay đổi địa chỉ A trong buffer bằng địa chỉ của một chương trình M độc hại mà hacker tạo ra, bằng cách làm tràn (buffer overflow) thông tin địa chỉ của A sang ô nhớ "bên cạnh", còn ô nhớ cũ sẽ được dùng để lưu địa chỉ của M. Như vậy khi B chạy xong, chương trình sẽ trở về thực thi M, thay vì thực thi A.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bạn nói nó cứ sai sai thế nào ấy. Buffer overflow của một tiến trình liên quan gì đến tiến trình khác, cũng chẳng liên quan đến việc hệ điều hành switch giữa các tiến trình.

Tài liệu đây nhé bạn. Tham khảo cuốn sách Security+ Guide to Network Security Fundamental, trang 107-108 nhé
buffer%20overflow.PNG
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thẻ
buffer overflow
Bên trên