Trong thế giới máy tính, một số lệnh nhất định Thoạt nhìn chúng có vẻ vô hại, nhưng chúng ẩn chứa sức mạnh hủy diệt mà nếu vô tình hoặc cố ý sử dụng, có thể khiến toàn bộ hệ thống bị hủy hoại. Trong số các lệnh này, một trong những lệnh được biết đến nhiều nhất - hoặc không - và đáng sợ nhất là cái gọi là quả bom ngã ba, hoặc bom ngã ba.
Fork Bomb không gì khác hơn là một hình thức tấn công từ chối dịch vụ (DoS), được thiết kế để tiêu thụ tài nguyên hệ thống có sẵn, chẳng hạn như CPU và bộ nhớ, đến mức không thể sử dụng được. Nếu bạn đã từng thắc mắc lệnh này hoạt động như thế nào, tại sao nó có thể gây hại như vậy và bạn có thể thực hiện những bước nào để bảo vệ chính mình, thì tại đây bạn sẽ tìm thấy mọi thứ bạn cần biết, được giải thích một cách chi tiết và dễ tiếp cận.
Bom ngã ba là gì?
Fork Bomb, còn được gọi là "virus thỏ" do có xu hướng sao chép theo cấp số nhân, là một kỹ thuật sử dụng việc tạo ra hàng loạt các quy trình để bão hòa một hệ thống hoạt động. Điều này đạt được thông qua lệnh sử dụng chức năng fork, có sẵn trên hệ thống Unix và Linux. Hàm fork cho phép một tiến trình tạo một bản sao chính xác của chính nó, được gọi là tiến trình con.
Lệnh tiêu biểu nhất liên quan đến một quả bom ngã ba như sau:
: () {: |: &};:
Lệnh này có cấu trúc tuy nhỏ gọn nhưng cực kỳ mạnh mẽ. Những gì nó làm là định nghĩa một hàm gọi là :, nó gọi chính nó một cách đệ quy, tạo ra hai quy trình mới trong mỗi lần thực thi nhờ toán tử đường ống | và việc thực thi ở chế độ nền với &. Kết quả là sự tăng trưởng theo cấp số nhân của các quy trình làm sụp đổ hệ thống chỉ trong vài giây.
Bom ngã ba hoạt động như thế nào?
Lệnh : () {: |: &};: Ban đầu nó có vẻ khó hiểu, vì vậy hãy chia nhỏ từng bước:
:
: Ký hiệu này thể hiện tên của hàm. Trên thực tế, bạn có thể sử dụng bất kỳ tên nào.() { }
: Cú pháp này xác định hàm mà không có bất kỳ tham số nào.:|:
: Sau khi được xác định, hàm sẽ gọi chính nó và toán tử | chuyển hướng đầu ra của nó sang một phiên bản mới của chính nó.&
: Biểu tượng này thực hiện các cuộc gọi ở chế độ nền, cho phép tạo đồng thời các quy trình.;
: Đóng vai trò là dấu phân cách giữa định nghĩa của hàm và việc thực thi ban đầu của nó.:
: Cuối cùng, biểu tượng cuối cùng này thực thi chức năng, bắt đầu chuỗi các quy trình.
Sau khi chạy, Fork Bomb nhanh chóng tiêu tốn tài nguyên hệ thống, chặn khả năng chạy các tiến trình mới và thường buộc máy tính phải khởi động lại.
Hệ thống dễ bị tổn thương
Thực tế bất kỳ hệ điều hành dựa trên Unix hoặc Linux nào, chẳng hạn như Ubuntu, Debian hoặc Red Hat, dễ bị tấn công bởi forkbomb vì tất cả những thứ này đều sử dụng lệnh gọi hệ thống fork. Tuy nhiên, các hệ thống Windows Chúng không dễ bị tổn thương trước kiểu tấn công cụ thể này vì chúng không có chức năng tương đương với fork. Thay vào đó, trên Windows, bạn sẽ phải tạo một tập hợp các quy trình mới theo cách tương tự, nhưng việc này đòi hỏi cách tiếp cận phức tạp hơn.
Ví dụ về Fork Bomb bằng nhiều ngôn ngữ khác nhau
La quả bom ngã ba Nó không dành riêng cho Bash; Nó có thể được thực hiện bằng các ngôn ngữ lập trình khác. Dưới đây là một số ví dụ:
Bom ngã ba Python
#!/usr/bin/env python nhập os while True: os.fork()
Bom ngã ba Java
public class Bomb { public static void main(final String[] args) { while (true) { Runtime.getRuntime().exec("java Bomb"); } } }
Bom ngã ba C
#bao gồm int main(void) { while (1) { fork(); } }
Tác động của bom ngã ba
Tác động chính của bom ngã ba là hệ thống quá tải. Các tài nguyên như CPU, bộ nhớ và đầu vào xử lý bị tiêu hao nhanh chóng, khiến hệ thống không ổn định hoặc không phản hồi. Trong hầu hết các trường hợp, bạn cần một bắt buộc khởi động lại để lấy lại quyền kiểm soát. Ngoài ra, có nguy cơ mất dữ liệu đáng kể do hành vi ứng dụng đột ngột trong thảm họa.
Các biện pháp phòng ngừa
Mặc dù một quả bom nĩa có thể có sức tàn phá khủng khiếp, Có nhiều cách để giảm thiểu tác động của nó và thậm chí ngăn chặn nó. hoàn toàn:
1. Giới hạn số lượng quy trình
Lệnh giới hạn Trong Linux, nó cho phép bạn đặt giới hạn về số lượng quy trình tối đa mà người dùng có thể tạo. Ví dụ:
ulimit -u 5000
Điều này hạn chế người dùng có tối đa 5000 quy trình hoạt động.
2. Cấu hình giới hạn liên tục
Để áp dụng giới hạn vĩnh viễn, bạn có thể sửa đổi tệp /etc/security/limits.conf
. Ví dụ:
người dùng cứng nproc 5000
Điều này đảm bảo rằng các giới hạn vẫn tồn tại ngay cả sau khi người dùng đăng xuất.
3. Sử dụng Cgroup
Trên các hệ thống Linux hiện đại, nhóm (nhóm kiểm soát) cho phép bạn thiết lập quyền kiểm soát chi tiết hơn đối với tài nguyên hệ thống, bao gồm số lượng quy trình được phép.
Đừng chú ý đến những gì bạn thấy trên mạng xã hội
Những loại lệnh này có thể xuất hiện trên mạng xã hội như một trò đùa thực tế, vì vậy chúng ta phải cẩn thận và không nhập những gì chúng nói với chúng ta vào thiết bị đầu cuối. Không cần đi xa hơn, nếu đặt "bom ngã ba" vào X, chúng ta sẽ thấy một phản hồi cho một bài viết có nội dung "xin chào, bom ngã ba." Bài đăng gốc, được chia sẻ cách đây ít phút, nói rằng có một con mèo có tên :(){ :|:& };: và bạn đặt nó vào thiết bị đầu cuối. Chúng tôi đã giải thích tác dụng của nó rồi, vì vậy đừng làm điều đó.
Bom ngã ba, mặc dù có khái niệm đơn giản, có tác động sâu sắc đến các hệ thống dễ bị tổn thương. Hiểu cách thức hoạt động, ý nghĩa của nó và cách giảm thiểu nó là điều quan trọng để bảo vệ môi trường máy tính hiện đại. Đó là lời nhắc nhở về việc một lệnh đơn giản có thể dẫn đến hậu quả thảm khốc như thế nào cũng như tầm quan trọng của việc quản trị hệ thống phù hợp và đặt ra các giới hạn bảo mật.