Vì sao lập trình viên lại chết trong nhà tắm?

2564

Có rất nhiều câu nói đùa trong thế giới lập trình, và một trong những câu được ưa chuộng nhất đó là: “Vì sao lập trình viên lại chết trong nhà tắm? Bởi vì trên chai dầu gội đầu viết, ‘làm sủi bọt, gội, lặp lại’.”

Có lẽ bạn không hiểu câu đùa này?

Nó được gọi là vòng xoay lặp đi lặp lại bất tận. Các chuyên viên lập trình thường xuyên phải tuân theo các chỉ dẫn vô cùng tỉ mỉ và trong câu chuyện hài này, họ phải lặp đi lặp lại những chỉ dẫn đó một cách máy móc, tới lúc chết.
Bạn nghĩ đó là điều không hợp lý? Các máy tính đã bị buộc thực hiện những vòng lặp như vậy nhiều năm nay.
Trên thực tế, nó được gọi là hình thức tấn công ‘fork bomb’ – có nghĩa là máy tính bị buộc phải hoạt động quá mức tối đa, dẫn đến bị hỏng. Một cuộc tấn công ‘fork bomb’ có thể được thực hiện chỉ bởi vài ký tự mã.
Như một người dùng trên mạng giải thích, trong ngôn ngữ máy tính, chỉ cần một tập hợp ít ỏi các ký tự đã đủ để tạo ra một câu lệnh vô nghĩa nào đó rồi yêu cầu máy tính thực hiện lặp đi lặp lại chức năng đó.
Máy tính sẽ không thắc mắc mà chỉ làm đúng theo mệnh lệnh.
Vào năm 2013, thống kê được thực hiện bởi các nhà nghiên cứu từ Đại học Cambridge cho thấy lỗi hệ thống máy tính gây tổn thất cho nền kinh tế toàn cầu khoảng 321 tỷ đôla mỗi năm.
Ngay cả những lỗi nhỏ cũng có thể gây tổn thất lớn – ví dụ như một đoạn mã được cài sai vị trí có thể khiến các tàu chiến ngưng hoạt động.
Làm sao mà những ký tự tí hon lại có thể gây ra hậu quả lớn như vậy?
“Máy tính làm theo chuỗi các mệnh lệnh mà chúng nhận được – thế nhưng chúng làm theo lệnh một cách máy móc, theo từng ký tự một,” Ben Liblit, một nhà khoa học máy tính tại Đại học Wisconsin-Madison, nói.
“Chúng không có khả năng phân biệt đúng sai trong nội dung câu lệnh đó.”
Máy tính có thể làm một cách hiệu quả, có hệ thống, nhưng cũng có thể bị hỏng một cách có hệ thống. Ảnh iSTOCK 

Những vòng lặp vô tận là do đâu mà có?

Liblit cho biết máy tính có khả năng lặp dữ liệu hàng nghìn hay hàng triệu lần. Điều này cho phép chúng ta thực hiện những công việc nhàm chán vô cùng nhanh chóng – ví dụ như sửa một danh sách tên để các ký tự đầu tiên đều viết hoa.
Trên thực tế, không có một giới hạn cơ bản nào về việc máy tính có thể lặp các mệnh lệnh bao nhiêu lần – đồng nghĩa với việc chúng có thể làm điều này tới khi quá tải.
Trường hợp đầu tiên được ghi nhận về một vụ tấn công ‘fork bomb’ có từ năm 1978. Một chương trình có biệt danh ‘wabbit’ đã tự nhân bản vô tận.
Những đoạn mã này trà trộn vào máy tính của nạn nhân dưới dạng một tệp tin vô hại, được đính kèm qua email. Nếu nạn nhân tải và thử chạy tệp tin này, ‘fork bomb’ sẽ được kích hoạt.
Một hình thức tấn công khác, đó là nén các file có khả năng giải nén một cách vô tận, theo Mikko Hypponen, một chuyên gia về an ninh máy tính tại F-Secure.
Hình thức tấn công này được gọi là ‘zip bomb’. Một quả bom như vậy có thể chỉ nhẹ có 42 bytes trước khi nó tự giải nén. Nó có thể được sử dụng để lấp đầy một ổ đĩa chứa dữ liệu hoặc vô hiệu hoá các chương trình chống virus.
Trong năm 2014, một lỗ hổng nghiêm trọng trong phần mềm mã hoá dữ liệu mật trên web đã được tìm thấy.
Lỗ hổng có tên Heartbleed này có thể cho phép những kẻ tấn công xâm nhập vào các dữ liệu cá nhân, ví dụ như mật mã hay thông tin thẻ tín dụng. Đoạn mã đã kích hoạt vụ tấn công chỉ nặng có 4 bytes, Alan Woodward từ Đại học Surrey cho biết.
Đối với các tin tặc, việc nén các mã bẩn xuống dung lượng nhỏ đã tỏ ra rất hữu hiệu.
Vào năm 2010, ‘Twitter virus’ xuất hiện. Nó làm cho nhiều cửa sổ trên máy tính mở ra cùng một lúc khi người dùng di chuột qua những mẩu tin có chứa mã độc trên Twitter.com. Ngay cả các tài khoản Twitter của Nhà Trắng cũng bị ảnh hưởng trong một thời gian ngắn.
Một chuyên gia về an ninh máy tính khác là Steve Lord tại Mandalorian từng phát hiện ra một chương trình độc hại có kích cỡ nhỏ tới mức đáng kinh ngạc.
Một số ‘0’ đặt sai chỗ khiến chiến hạm USS Yorktown tê liệt hoàn toàn khi đang ngoài khơi. Ảnh NAV SOURCE PUBLIC DOMAIN
Trong một nghiên cứu gần đây, ông nói ông đã thử nghiệm việc chèn đoạn mã độc vào các gói nhỏ và gửi đi từ máy tính này tới máy tính khác thông qua mạng internet.
Nó là một loại mã độc khá tinh vi, cho phép những kẻ tấn công vô hiệu hoá được những đường dây kết nối an toàn được biết đến dưới tên gọi ‘mạng lưới cá nhân ảo’ (VPN).
Có lẽ đoạn mã nhỏ nhất từng gây rắc rối là con số ‘0’ vì máy tính không thể xử lý mệnh lệnh yêu cầu làm phép chia đối với con số 0.
Như Lord chỉ ra, đó là điều đã xảy ra với chiến hạm USS Yorktown vào tháng Chín 1997. Một con số 0 bị đặt vào sai chỗ bên trong một trong các phần mềm được sử dụng trong hệ thống máy tính của tàu, khiến toàn bộ con tàu ngưng hoạt động và phải chờ được kéo về cảng.
“May là điều đó đã không xảy ra trong lúc giao chiến,” Lord nói.
Lord cũng dẫn trường hợp của ‘Tiny Banker’, một mã bẩn có khả năng xâm nhập vào ứng dụng trình duyệt web của nạn nhân và ăn cắp mật mã họ sử dụng để vào tài khoản ngân hàng qua mạng. Nó chỉ nặng 20 nghìn bytes và đã ảnh hưởng tới hàng nghìn hệ thống trên thế giới.
“Nếu so với những chương trình Windows khác thì đó là một dung lượng vô cùng nhỏ,” Lord nói.
Những điều này không có nghĩa là máy tính sẽ không thể nào tránh khỏi mã bẩn – nhưng nó cho thấy những thách thức mà giới công nghệ đang phải đối mặt trong việc bảo vệ chúng trước những đợt tấn công hay lỗi hệ thống. Lord cho rằng ngay cả những lỗi nhỏ có thể gây ra hậu quả lớn.
Liblit nói máy tính có khả năng làm nhiệm vụ được giao một cách bền bỉ nhất – dù điều đó là có lợi hay không. ‘Máy tính có thể hữu ích một cách có hệ thống,” ông nói, “hoặc hỏng hóc một cách có hệ thống.”
Thế nhưng ít ra thì trong hầu hết các trường hợp, bạn có thể thử tắt đi và bật lại máy tính.
Bài tiếng Anh đã đăng trên BBC Future.
Techtalk Via Bizlive
CHIA SẺ