Meta Pixel Code
Xây Dựng Cấu Hình PC Đồ Họa Tool Chương Trình Khuyến Mãi Tin Tức Công Nghệ Bảo Hành Tận Nhà Feedback
Hoàng Hà PC trên G o o g l e News

Buffer Overflow là gì? Các biện pháp chống tràn bộ nhớ đệm

09/12/2023 |

Quân Hoàng Hà PC

Trong lĩnh vực an ninh máy tính và lập trình, tràn bộ đệm Buffer Overflow là một lỗi rất phổ biến. Nó không chỉ làm cho ứng dụng ngừng hoạt động và mất dữ liệu mà lỗi Buffer Overflow còn ẩn chứa rất nhiều rủi ro bảo mật khác khi hacker có thể lợi dụng nó để tấn công kiểm soát hệ thống. Ở bài viết dưới đây, bạn hãy cùng Hoàng Hà PC tìm hiểu về các biện pháp ngăn chặn lỗi Buffer Overflow nhé! 

1. Bộ đệm Buffer Overflow là gì?

Bộ đệm Buffer Overflow là gì?

Bộ đệm Buffer Overflow là gì? 

Lỗi tràn bộ đệm Buffer Overflow là lỗi phổ biến trong lĩnh vực an ninh máy tính và lập trình khi mà bộ nhớ bị ghi đè nhiều lần trên ngăn xếp. Lỗi này xuất hiện khi mà bộ nhớ bị ghi đè nhiều lần trên ngăn xếp.

Lỗi Buffer Overflow thường xuyên xảy ra do người dùng gửi một lượng lớn dữ liệu đến server ứng dụng, điều này làm cho dữ liệu bị bắt phải đè lên các vị trí bộ nhớ liền kề đó. Đây là một lỗi lập trình có thể gây ra một ngoại lệ truy nhập bộ nhớ máy tính của bạn và chương trình bị kết thúc, hoặc khi người dùng cố tình phá hoại. Hacker hoàn toàn có thể lợi dụng lỗi tràn bộ đệm Buffer Overflow để phá vỡ an ninh hệ thống.

2. Nguyên nhân gây ra lỗi bộ đệm Buffer Overflow

Nguyên nhân gây ra lỗi tràn bộ đệm Buffer Overflow

Nguyên nhân gây ra lỗi tràn bộ đệm Buffer Overflow

Có 2 nguyên nhân chính gây ra lỗi tràn bộ đệm Buffer Overflow: 

  • Không thực hiện đầy đủ hay hoặc không kiểm tra biên.
  • Các ngôn ngữ lập trình như C, bản thân nó đã luôn có những tiềm ẩn các lỗ hổng mà hacker có thể dễ dàng có thể tấn công vào. Trong ngôn ngữ lập trình C còn tồn tại các hàm không kiểm tra đến những buffer được cấp phát trên stack có kích thước lớn hơn dữ liệu được copy và bộ đệm hay không. 

3. Các loại Buffer Overflow Attack

Các loại tấn công Buffer Overflow phổ biến bao gồm:

  • Stack-based Buffer Overflow: Đây là loại buffer overflow phổ biến nhất, xảy ra khi dữ liệu được ghi vượt quá bộ đệm (buffer) của stack. Điều này có thể cho phép hacker kiểm soát stack bằng cách ghi đè vào các giá trị trả về của hàm hoặc các biến quan trọng khác.
  • Heap-based Buffer Overflow: Tấn công này xảy ra trên heap, nơi các đối tượng dữ liệu được lưu trữ động trong bộ nhớ. Tấn công heap overflow có thể cho phép kẻ tấn công ghi đè lên các cấu trúc quản lý bộ nhớ hoặc dữ liệu khác trên heap để thực hiện mã độc.
  • Integer Overflow: Dù không phải là buffer overflow trực tiếp, nhưng integer overflow có thể dẫn đến buffer overflow khi kích thước của bộ đệm được tính toán sai lầm do lỗi tràn số. Khi điều này xảy ra, một kẻ tấn công có thể ghi đè lên khu vực nhớ bên cạnh.
  • Instruction Overflow: Loại này liên quan đến ghi đè các chỉ thị máy tính trong chương trình. Nếu hacker có thể điều khiển được điều này, họ có thể buộc máy tính thực hiện các lệnh bất hợp pháp.
  • Return-to-libc Attack: Một biến thể của stack-based buffer overflow, nơi kẻ tấn công không cố gắng thực thi shellcode đã ghi đè mà là gọi một hàm hiện có trong thư viện của hệ điều hành (thường là libc) để thực hiện tác vụ như mở shell.
  • Return Oriented Programming (ROP): Một kỹ thuật tinh vi hơn nơi kẻ tấn công khai thác một loạt các "gadgets" - những đoạn mã ngắn kết thúc bằng lệnh trả về trong chương trình hiện tại - để thực hiện một payload phức tạp mà không cần ghi đè mã.

Mỗi loại tấn công này khai thác các lỗi trong việc quản lý bộ nhớ của các chương trình, và phương pháp phòng chống chúng bao gồm việc lập trình cẩn thận, sử dụng các công cụ phân tích mã, và áp dụng các biện pháp bảo mật như canary values, ASLR (Address Space Layout Randomization), và NX bit (No-eXecute bit).

4. Các cách khai thác lỗi Buffer Overflow

Biện pháp chặn lỗi tràn bộ đệm Buffer Overflow

Biện pháp chặn lỗi tràn bộ đệm Buffer Overflow

Chúng ta có thể thấy nguyên nhân tấn công Buffer Overflow tương tự như tấn công SDL Injection. Khi người dùng truy cập hay cả những hacker đưa ra các biên đầu vào, các dữ liệu tới vượt khỏi tầm xử lý của hệ thống thì điều này sẽ làm cho hệ thống bị treo hãy lỗi quá tải. 

Chúng cũng sẽ từ chối xử lý dịch vụ và chính điều này sẽ tạo ra những lỗ hổng cho các hacker từ đó chèn các mã độc hoặc các lệnh không đúng vào máy tính của bạn chiếm đoạt lấy quyền kiểm soát từ xa. 

Khai thác lỗi Buffer Overflow trên stack

Để gây ra tình trạng lỗi Buffer Overflow, hacker có thể ghi đè một biến địa phương nằm gần bộ đệm trong stack, biến này sẽ làm thay đổi hành vi của hệ thống máy tính để tạo điều kiện tấn công cho kẻ xấu.

Người dùng có thể khai thác lỗi Buffer Overflow bằng cách ghi đè lên địa chỉ trả về trong khung stack. Khi hàm trả về, thực thi sẽ vẫn tiếp tục tại địa chỉ mà hacker đã chỉ định, thông thường địa chỉ này sẽ thuộc khu vực bộ đệm chứa dữ liệu của người dùng.

Khai thác lỗi Buffer Overflow trên heap

Hiện tượng lỗi tràn Buffer Overflow xảy ra tại khu vực dữ liệu Heap hay cũng chính là hiện tượng tràn Heap, hacker có thể dễ dàng khai thác lỗ hổng này bằng các kỹ thuật (khác với các lỗi tràn stack).

Bộ nhớ heap là bộ phận thường để chứa dữ liệu của chương trình, nó được cấp phát tự động bởi các ứng dụng của máy tính trong thời gian chạy. Hacker thực hiện tấn công máy tính bằng cách phá những dữ liệu này để làm ứng dụng ghi đè lên các dữ liệu của nội bộ. 

Một số cách khai thác lỗi Buffer Overflow khác 

Một số biện pháp chặn lỗi Buffer Overflow khác là người dùng hãy khai thác vào các lỗ hổng phần mềm thông qua các ngôn ngữ lập trình của hệ thống (đa số các phần mềm hiện nay được viết bằng ngôn ngữ lập trình C). Hoặc có thể tấn công vào các website có lượng tương tác với người dùng khá, tốt nhưng lại không yêu cầu hay bắt buộc người dùng phải khai báo tên đăng nhập và mật khẩu đăng nhập tài khoản,…

5. Các biện pháp chống tràn bộ nhớ đệm

Các biện pháp chống tràn bộ nhớ đệm (buffer overflow) là rất quan trọng để bảo vệ các hệ thống thông tin khỏi các loại tấn công có thể gây hại. Dưới đây là một số phương pháp phổ biến nhất:

  • Kiểm soát kích thước dữ liệu: Phát triển các chương trình nhằm đảm bảo rằng kích thước của dữ liệu được nhập vào không vượt quá kích thước của bộ đệm dự kiến. Điều này bao gồm sử dụng các hàm an toàn khi làm việc với chuỗi và bộ nhớ, như strncpy(), snprintf() thay vì các hàm không kiểm tra kích thước như strcpy() hay sprintf().
  • Canary Values: Giá trị canary là giá trị đặc biệt được đặt trong stack ngay trước địa chỉ trả về. Nếu giá trị này thay đổi trước khi hàm trả về, hệ thống sẽ biết có sự cố tràn bộ nhớ và có thể hành động phù hợp để ngăn chặn việc thực thi mã độc.
  • Non-executable Stack và Heap: Các hệ điều hành hiện đại cho phép đánh dấu stack và heap là không thể thực thi. Điều này ngăn không cho mã độc được thực thi ngay cả khi nó đã được viết vào stack hoặc heap qua một lỗ hổng tràn bộ nhớ.
  • Address Space Layout Randomization (ASLR): ASLR làm cho việc dự đoán địa chỉ bộ nhớ cụ thể trở nên khó khăn hơn bằng cách ngẫu nhiên hóa vị trí của stack, heap, và các thư viện chia sẻ mỗi khi một ứng dụng bắt đầu. Điều này làm tăng độ khó cho các cuộc tấn công tràn bộ nhớ đệm.
  • Stack Guard: Stack guard là một công nghệ được tích hợp trong các trình biên dịch như GCC, nhằm phát hiện và ngăn chặn các cuộc tấn công stack overflow bằng cách sử dụng các kỹ thuật kiểm soát giống như canary values.
  • Thorough Input Validation: Kiểm tra toàn diện dữ liệu đầu vào để đảm bảo rằng nó không chứa các ký tự hoặc chuỗi độc hại có thể được sử dụng để gây tràn bộ nhớ. Việc lọc này bao gồm cả việc xác thực chiều dài và định dạng của dữ liệu đầu vào.
  • Using Higher-level Languages: Sử dụng các ngôn ngữ lập trình cấp cao hơn có cơ chế quản lý bộ nhớ tự động, như Java, Python, hoặc Ruby, có thể giảm bớt rủi ro của các lỗi tràn bộ nhớ đệm so với ngôn ngữ cấp thấp như C/C++.
  • Code Audits and Reviews: Thường xuyên kiểm tra và rà soát mã nguồn để phát hiện các lỗ hổng bảo mật tiềm ẩn, kể cả những vấn đề liên quan đến tràn bộ nhớ.

Việc kết hợp nhiều biện pháp này trong phát triển và triển khai phần mềm có thể giúp giảm đáng kể rủi ro của các cuộc tấn công

Trên đây, Hoàng Hà PC đã cung cấp đế bạn đọc các thông tin về Buffer Overflow cũng như các biện pháp ngăn chặn lỗi tràn bộ đệm Buffer Overflow. Mong rằng bài viết sẽ đem đến cho bạn đọc nhiều thông tin thú vị, bổ ích về Buffer Overflow.

SHARE

Bài viết liên quan

Máy tính chuyển đổi văn bản thành nhị phân 0 và 1 thế nào?

Máy tính chuyển đổi văn bản thành nhị phân 0 và 1 thế nào?

Máy tính chuyển đổi văn bản thành nhị phân 0 và 1 như thế nào? Làm sao để máy tính có thể hiểu được ngôn ngữ, ký tự của con người? Cùng tìm hiểu.
Quân Hoàng Hà PC
Tổng hợp các phím chức năng trên bàn phím F1 đến F12 trên máy tính

Tổng hợp các phím chức năng trên bàn phím F1 đến F12 trên máy tính

Các phím chức năng là phím F được sắp xếp theo chiều dọc ở đầu bàn phím và được đánh số từ F1 đến F12. Thực hiện các chức năng cụ thể tương tự như các phím tắt.
Quân Hoàng Hà PC
Tại sao ổ cứng lại hiển thị sai dung lượng trong Windows?

Tại sao ổ cứng lại hiển thị sai dung lượng trong Windows?

Ổ cứng lại hiển thị sai dung lượng trong Windows là do hiển thị sai dung lượng trống có sẵn, từ các tệp bóng ẩn, định dạng chi phí và phân vùng khôi phục ẩn.
Quân Hoàng Hà PC
Ý nghĩa tiếng bíp của máy tính, các mã bíp BIOS khi bật máy tính

Ý nghĩa tiếng bíp của máy tính, các mã bíp BIOS khi bật máy tính

Khi sử dụng máy tính hoặc laptop và gặp phải tình trạng máy kêu tit tit, bíp bíp liên tục. Cùng Hoàng Hà PC tìm hiểu qua bài viết dưới đây nhé.
Mai Văn Học

Hệ thống Showroom

HoangHaPc Cầu Giấy

PHƯỜNG CẦU GIẤY, HÀ NỘI

Địa chỉ: Số 41 Khúc Thừa Dụ, Phường Cầu Giấy, Hà Nội

Thời gian làm việc: 8h00 - 18h30

Chỉ đường tới đây
HoangHaPc Đống Đa

PHƯỜNG ĐỐNG ĐA, HÀ NỘI

Địa chỉ: Số 94E-94F Đường Láng, Phường Đống Đa, Hà Nội

Thời gian làm việc: 8h00 - 18h30

Chỉ đường tới đây
HoangHaPc Vinh

PHƯỜNG THÀNH VINH, NGHỆ AN

Địa chỉ: Số 72 Lê Lợi, Phường Thành Vinh, Nghệ An

Hotline: 0356.072.072

Thời gian làm việc: 8h30 - 18h30

Chỉ đường tới đây
HoangHaPc HỒ CHÍ MINH

PHƯỜNG HÒA HƯNG, HỒ CHÍ MINH

Địa chỉ: K8bis Bửu Long, Phường Hoà Hưng, Thành phố Hồ Chí Minh

Thời gian làm việc: 8h00 - 18h30

Chỉ đường tới đây
Chat Facebook (8h00 - 18h30)
Chat Zalo (8h00 - 18h30)
0969.123.666 (8h00 - 18h30)