Cuộc tấn công cụ thể mà bạn bày tỏ mối quan tâm là:
thường thì kẻ tấn công sẽ đánh lừa người dùng cả tin để chạy một tệp thực thi bằng cách tải xuống và nhấp vào.
Ít nhất là trong trường hợp phổ biến khi tệp được tải xuống trong trình duyệt web, điều này đã được ngăn chặn trong Ubuntu bởi sự tuân thủ của chính sách đối với chính sách Yêu cầu Bit cho phép thực thi . Các phần có liên quan trực tiếp nhất của chính sách đó là:
- Các tệp được tải xuống từ trình duyệt web, ứng dụng thư khách, v.v. không bao giờ được lưu dưới dạng thực thi.
Vì vậy, nếu người dùng được yêu cầu tải xuống một chương trình trong trình duyệt web, thì làm như vậy và cố gắng chạy tệp bằng cách nhấp đúp vào nó, nó sẽ không chạy. Điều này áp dụng ngay cả khi tệp được tải xuống là tập lệnh shell hoặc thậm chí là tệp .desktop. (Nếu bạn đã từng thắc mắc tại sao các tệp .desktop trong thư mục chính của bạn phải được đánh dấu có thể thực thi được mặc dù chúng không thực sự là chương trình, thì đó là lý do.)
Người dùng có thể thay đổi hành vi này thông qua thay đổi cấu hình. Hầu hết sẽ không, và trong khi những người có lẽ không nên, đó không thực sự là điều bạn phải lo lắng. Mối quan tâm lớn hơn là cuộc tấn công phức tạp hơn mà tôi nghĩ rằng bạn đã lo lắng, trong đó một kẻ độc hại (hoặc bot) hướng dẫn người dùng tải xuống một tệp cụ thể, đánh dấu nó có thể thực thi được (thông qua trình duyệt tệp của họ hoặc với chmod
) và sau đó chạy nó
Thật không may, việc hạn chế khả năng của người dùng để thiết lập bit thực thi trên một tệp hoặc thực thi các tệp khác ngoài các tệp trong danh sách trắng sẽ không làm giảm đáng kể vấn đề. Một số cuộc tấn công sẽ hoạt động và những cuộc tấn công không thể được sửa đổi một cách tầm thường để chúng thực hiện. Vấn đề cơ bản là hiệu quả của việc chạy tệp có thể đạt được ngay cả khi tệp không có quyền thực thi .
Điều này được minh họa tốt nhất bằng ví dụ. Giả sử evil
là một tệp trong thư mục hiện tại, nếu được cấp quyền thực thi ( chmod +x evil
) và run ( ./evil
), sẽ làm điều gì đó xấu xa. Tùy thuộc vào loại chương trình, hiệu ứng tương tự có thể đạt được bằng một trong những điều sau đây:
Không ai trong số đó, thậm chí là cái cuối cùng, yêu cầu tệp có quyền thực thi hoặc thậm chí người dùng có thể cấp quyền cho tệp thực thi.
Nhưng các hướng dẫn độc hại thậm chí không cần phải phức tạp. Hãy xem xét lệnh không độc hại này , đây là một trong những cách được đề xuất chính thức để cài đặt hoặc cập nhật NVM :
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
Lý do không độc hại là NVM không phải là phần mềm độc hại, nhưng nếu URL thay vào đó là tập lệnh của ai đó gây ác khi chạy, lệnh đó sẽ tải xuống và chạy tập lệnh. Tại bất kỳ thời điểm nào, bất kỳ tập tin sẽ cần phải được cấp quyền thực thi. Tải xuống và chạy mã chứa trong một tệp độc hại với một lệnh như thế này, tôi tin rằng, một hành động khá phổ biến mà kẻ tấn công lừa người dùng thực hiện.
Bạn có thể nghĩ đến việc cố gắng hạn chế những thông dịch viên nào có sẵn để người dùng chạy. Nhưng thực sự không có cách nào để làm điều này mà không ảnh hưởng đáng kể đến các tác vụ thông thường mà bạn có lẽ muốn người dùng có thể thực hiện. Nếu bạn đang thiết lập một môi trường cực kỳ hạn chế, gần như mọi thứ mà người dùng sẽ nghĩ làm trên máy tính đều không được phép, giống như một ki-ốt chỉ chạy một vài chương trình, thì điều này có thể cung cấp một số biện pháp bảo vệ có ý nghĩa. Nhưng nó không giống như trường hợp sử dụng của bạn.
Vì vậy, câu trả lời gần đúng cho câu hỏi của bạn là "Không." Câu trả lời đầy đủ hơn là bạn có thể quản lý để ngăn người dùng thực thi bất kỳ tệp nào ngoại trừ những tệp bạn cung cấp trên danh sách trắng. Nhưng đó là theo nghĩa kỹ thuật "thực thi" nghiêm ngặt, không cần thiết để đạt được hiệu quả đầy đủ của việc chạy hầu hết các chương trình hoặc tập lệnh. Để ngăn chặn điều đó , bạn có thể cố gắng làm cho danh sách trắng trở nên rất nhỏ, vì vậy nó không liệt kê bất kỳ thông dịch viên nào ngoại trừ những thông dịch viên có thể bị hạn chế cao. Nhưng ngay cả khi bạn quản lý được điều đó, người dùng không thể làm gì nhiều và nếu bạn làm cho nó nhỏ đến mức họ không thể tự làm tổn thương mình, họ có thể không thể làm gì được. (Xem bình luận của Thomas Ward .)
Nếu người dùng của bạn có thể tự làm tổn thương mình, họ có thể bị lừa làm tổn thương chính họ.
Bạn có thể hạn chế các chương trình cụ thể được sử dụng hoặc hành xử theo cách có khả năng gây hại và nếu bạn đang xem các mẫu cụ thể ransomware có xu hướng tuân theo, bạn có thể ngăn chặn một số trường hợp phổ biến cụ thể. (Xem AppArmor .) Điều đó có thể cung cấp một số giá trị. Nhưng nó sẽ không cung cấp cho bạn bất cứ điều gì gần với giải pháp toàn diện mà bạn hy vọng.
Bất cứ biện pháp kỹ thuật nào (nếu có) cuối cùng bạn thực hiện, cách tốt nhất của bạn là giáo dục người dùng. Điều này bao gồm yêu cầu họ không chạy các lệnh mà họ không hiểu và không sử dụng các tệp đã tải xuống trong các tình huống mà họ không thể giải thích lý do tại sao nó an toàn một cách hợp lý để làm như vậy. Nhưng nó cũng bao gồm những thứ như tạo bản sao lưu, để nếu có sự cố xảy ra (do phần mềm độc hại hoặc cách khác), tác hại được thực hiện sẽ càng ít càng tốt.