Sandboxing là gì và làm thế nào để sandbox một chương trình


Sandboxes tồn tại bởi vì cát rất thú vị để chơi, nhưng chúng tôi không muốn nó bị theo dõi khắp sân trường và vào nhà. Nếu bạn từng dành bất kỳ thời gian nào trên bãi biển, bạn sẽ biết cát có sức lan tỏa như thế nào và khó có thể thoát khỏi. Trước khi bạn biết điều đó, có cát cát trên hành lang, cát trong đồ giặt và cát trong phòng tắm.

Trong thế giới máy tính, nhiều vấn đề tương tự tồn tại với các chương trình. Các chương trình chạy trên máy tính của bạn chia sẻ tài nguyên của máy tính đó. Tất cả các chương trình của bạn sử dụng cùng một bộ lưu trữ tĩnh như ổ đĩa, cùng bộ nhớ và cùng một đơn vị xử lý trung tâm (CPU). Khi các tài nguyên phổ biến như thế này được chia sẻ, bạn có thể kết thúc với một vấn đề cát. Một chương trình kết thúc trên tất cả máy tính của bạn vì nó ghi dữ liệu vào tất cả các phần của đĩa, truy cập bộ nhớ từ tất cả các vùng trong bộ nhớ của bạn và gửi yêu cầu tới CPU cùng với mọi chương trình khác. Chúng tôi giữ cát trong một hộp cát vì lý do tương tự, chúng tôi có các chương trình máy tính trong hộp cát: để chứa cát – hoặc chương trình Cát – đến một phạm vi có thể quản lý được.

Thiết kế máy tính cơ bản tạo điều kiện chia sẻ tài nguyên này. Bằng cách cho phép các chương trình chia sẻ tài nguyên, máy tính dường như có thể đa tác vụ và dường như đang làm rất nhiều việc cùng một lúc. Đây chính xác là loại hành vi mà chúng tôi yêu cầu từ máy tính, điện thoại, máy tính bảng và đồng hồ trong nhiều năm qua, nhưng những khả năng này có thể gây ra tác dụng phụ không mong muốn. Các chương trình có thể hành xử xấu và sụp đổ, hoặc khiến các chương trình khác bị sập; họ có thể có sự phụ thuộc vào một số ứng dụng khác trên máy tính mâu thuẫn với nhu cầu của các chương trình khác; và, ngày càng nhiều hơn, các chương trình là độc hại và cố gắng truy cập vào các khu vực bên ngoài để làm điều xấu.

Trình duyệt hộp cát

Mạng toàn cầu (www) ra đời vào năm 1989, và trình duyệt thực sự phổ biến đầu tiên, Mosaic, đã đẩy internet vào văn hóa phổ biến. Web được thiết kế để chia sẻ tài liệu; nó không bao giờ được thiết kế để hỗ trợ những gì chúng ta có bây giờ: một hệ thống phân phối dựa trên internet nơi phần mềm chạy trên đám mây. Khoảng cách giữa thiết kế và sử dụng thực tế đã tạo ra vô số cơ hội cho kẻ xấu sử dụng trình duyệt web làm cơ chế phân phối cho phần mềm độc hại của chúng.

Dòng nơi một máy tính để bàn vật lý kết thúc và internet bắt đầu rất mờ. Hầu hết các chương trình chúng tôi chạy ngày nay phụ thuộc một phần hoặc hoàn toàn vào kết nối internet trực tiếp để hoạt động. Với khả năng kết nối internet liên tục này ở phía sau, rõ ràng một vectơ tấn công rất hấp dẫn là các chương trình chúng ta sử dụng để truy cập internet. Đứng đầu danh sách đó là trình duyệt web đáng kính. Trên thực tế, năm 2016, công ty bảo mật internet Sucuri đã đăng nhập hơn nửa tỷ (mà tỷ tỷ với B) yêu cầu độc hại nhắm vào các trang web và trình duyệt trong một khoảng thời gian 30 ngày.

Bởi vì các trình duyệt rất phong phú và luôn luôn bật, nên chúng rất đáng được chú ý. Nhiều trình duyệt ngày nay được thiết kế để tự động chạy trong hộp cát của riêng chúng mà không cần bất kỳ thiết lập nào từ người dùng.

Google Chrome đã được sandbox từ đầu.
Mozilla Firefox mất nhiều thời gian hơn để triển khai hộp cát nhưng hiện tại gần như 100%.
Internet Explorer đã giới thiệu một số mức độ của hộp cát vào năm 2006 với IE 7 và hộp cát Microsoft Edge hiện đang xử lý tất cả các quy trình.
Trình duyệt Apple Safari Safari cũng chạy các trang web trong các quy trình riêng biệt.

Nếu bạn đang chạy một trình duyệt kỳ lạ hoặc muốn có sự tách biệt lớn hơn giữa HĐH và trình duyệt của bạn, bạn có thể muốn xem các tùy chọn hộp cát thủ công được liệt kê trong phần tiếp theo.

Hướng dẫn sử dụng hộp cát

Mặc dù các trình duyệt là một điểm yếu rất quan trọng trong bất kỳ hệ điều hành nào, nhưng không có nghĩa chúng là điểm yếu duy nhất. Bất kỳ ứng dụng nào cũng có khả năng gây độc hại và do đó, tư thế bảo mật của bất kỳ máy tính nào cũng có thể được tăng cường bằng cách sử dụng hộp cát. Sandboxing thủ công là quá trình định cấu hình hệ thống của bạn thành sandbox một ứng dụng có thể có toàn quyền truy cập vào hệ thống của bạn.

Máy ảo

Ảo hóa máy tính để bàn đã đi một chặng đường dài trong những năm gần đây và giờ đây khá dễ dàng để cài đặt và sử dụng máy ảo. Một cỗ máy ảo đúng như âm thanh của nó: một cỗ máy của Cameron không có thật. Nó thực sự chỉ là một phần mềm. Việc sử dụng phổ biến nhất của máy ảo là cài đặt một bản sao của hệ điều hành của bạn vào nó và chạy máy ảo đó trên máy tính để bàn của bạn như thể nó là một máy vật lý khác. Kiểu phân tách này cung cấp rất nhiều bảo mật vì các chương trình chỉ có thể truy cập tài nguyên bên trong máy ảo. Nếu một phần mềm độc hại đã chiếm giữ và lây nhiễm vào hệ thống của bạn, nó sẽ chỉ có thể lây nhiễm vào máy ảo, điều này hạn chế mức độ thiệt hại mà nó có thể gây ra. Nó thậm chí có thể chạy các hệ điều hành thay thế trong một máy ảo, chẳng hạn như chạy phân phối Linux trong máy ảo trên PC Windows.

Có nhiều ứng dụng ảo hóa, mỗi ứng dụng nhắm vào một loại trường hợp sử dụng cụ thể. Các ứng dụng ảo hóa máy tính để bàn phổ biến và trưởng thành nhất mà người dùng bình thường có thể xử lý là VirtualBox và Parallels.

Bối cảnh: Một ảo hóa bao gồm hai phần chính. Thuật ngữ tổ chức đề cập đến máy tính vật lý thực tế chạy phần mềm ảo hóa. Thuật ngữ khách mời đề cập đến hệ điều hành đang chạy trong ứng dụng ảo hóa.

VirtualBox

VirtualBox thuộc sở hữu của Oracle và có khách hàng cho mọi hệ điều hành chính. Sau khi cài đặt VirtualBox, bạn có thể tạo một máy ảo bằng cách sử dụng nút Mới. Bạn cần phải cung cấp phương tiện cài đặt hệ điều hành vì VirtualBox không đi kèm với điều đó. Các bản phân phối Linux có thể dễ dàng tìm thấy trên internet – một danh sách tốt là bản phân phối trang web và đối với các hệ điều hành độc quyền như Windows, bạn sẽ cần có CD cài đặt tiện dụng.

Song song

Parallels rất giống với VirtualBox với một ngoại lệ đáng chú ý là nó chỉ chạy trên macOS và được chế tạo riêng để chạy Windows trong máy ảo. Nếu bạn đang tìm kiếm sự kết hợp đó, chạy Windows trên máy tính để bàn macOS của bạn – thì Parallels có thể là giải pháp tốt nhất cho bạn. Parallels không miễn phí, tuy nhiên có bản dùng thử miễn phí 30 ngày.

Sandboxie

Phương châm của Sandboxie sườn là Tin tưởng Không có Chương trình. Nó chỉ chạy trên Windows và yêu cầu tách các chương trình đang chạy khỏi hệ điều hành cơ bản. Bảng điều khiển Sandboxie được sử dụng để chỉ định các chương trình cụ thể để chạy trong hộp cát. Các chương trình phổ biến nhất có các mối đe dọa lớn nhất, như trình duyệt và chương trình email, được liệt kê dưới dạng tùy chọn cấu hình theo mặc định và các ứng dụng khác có thể được thêm vào khi cần thiết.

Dữ liệu bên trong Sandboxie bị hủy khi đóng hộp cát, nhưng có thể định cấu hình Sandboxie để dữ liệu quan trọng không bị thay đổi. Các thư mục chứa email và dấu trang trình duyệt web là ví dụ về dữ liệu có thể tồn tại trong việc xóa hộp cát.

Sandboxie được thiết kế cho người dùng gia đình và điều đó được phản ánh trong giá rẻ của nó.

Hệ điều hành Qubes

QubesOS (phát âm là Cub Cubes) xứng đáng được đề cập đặc biệt cho ảo hóa. Qubes sử dụng trình ảo hóa Xen thay vì VirtualBox. Nó khởi chạy một số hệ điều hành khách và mỗi hệ thống tách biệt với nhau. Điều này cho phép hộp cát của các ứng dụng riêng lẻ, mỗi ứng dụng trong máy ảo riêng của mình, thay vào đó chỉ là hộp cát cho toàn bộ hệ điều hành khách. Sự khác biệt đặc biệt của QubesOS là Xen là hệ điều hành riêng của nó; không có máy chủ lưu trữ hệ điều hành nào của hệ thống điều hành trên hệ thống. Tôi đã viết thêm về Qubes và các bản phân phối Linux ẩn danh khác ở đây.

Dành thời gian để sandbox hệ thống của bạn có thể cung cấp một sự bảo vệ vững chắc chống lại nhiều loại phần mềm độc hại và giúp phát triển phần mềm. Không có sự thay thế cho một liều hoang tưởng lành mạnh khi sử dụng internet, nhưng cách ly các ứng dụng dễ bị tổn thương hơn của bạn có thể giúp ích.

Các loại sự cố chương trình không phải hộp cát có thể gây ra

Các chương trình đâm vào nhau

Trong những ngày đầu của máy tính, CPU đã phân phát tài nguyên trên cơ sở đầu tiên đến trước được phục vụ trước. Điều này hoạt động tốt khi máy tính của chúng tôi không hoạt động nhiều, nhưng ngày nay các phương pháp phân bổ tài nguyên phức tạp hơn nhiều được sử dụng. Các CPU bảo vệ quyết liệt các ranh giới của các tài nguyên mà chúng đã phân bổ và, nếu một chương trình cố gắng truy cập vào một tài nguyên không được chỉ định cụ thể cho nó, chương trình hoặc các chương trình khác có thể bị sập.

Chạy một chương trình trong hộp cát cho phép hệ thống phân bổ trước các tài nguyên như bộ nhớ và dung lượng ổ đĩa trước chương trình yêu cầu bất cứ điều gì. Điều này đảm bảo rằng các tài nguyên đó đã sẵn sàng cho chương trình bất cứ khi nào nó cần và cũng đảm bảo rằng không có chương trình nào khác có thể sử dụng các tài nguyên đó.

Các chương trình với sự phụ thuộc khác nhau

Mỗi chương trình có rất nhiều phiên bản của chính nó. Rất ít chương trình hoàn hảo về mọi mặt khi ra mắt lần đầu, đó là lý do tại sao chúng tôi liên tục phải chịu chu kỳ nâng cấp không bao giờ kết thúc. Các thiết bị của chúng tôi mãi mãi cho chúng tôi biết rằng các bản cập nhật cần được áp dụng hoặc các phiên bản mới của chương trình của chúng tôi có sẵn. Điều quan trọng là cho phép các bản cập nhật này diễn ra càng sớm càng tốt vì nhiều bản cập nhật này có liên quan đến vấn đề bảo mật hoặc hiệu suất. Tắt các nâng cấp thường khiến thiết bị của bạn kém an toàn hơn và chạy ở trạng thái kém lý tưởng.

Bên dưới các ứng dụng chính mà chúng ta sử dụng và tương tác hàng ngày là một bộ các chương trình trợ giúp. Các chương trình này tồn tại để giúp ứng dụng chính chạy đúng. Con người chúng ta hiếm khi biết về các chương trình này, nhưng chương trình chính không thể hoạt động mà không có chúng. Các chương trình trợ giúp này được gọi là phụ thuộc theo cách nói của nhà phát triển. Cũng giống như bất kỳ chương trình nào khác, những phụ thuộc này liên tục cập nhật và thay đổi, đó là nơi mọi thứ có thể trở nên khó khăn.

Nếu một chương trình chính sử dụng một chức năng cụ thể mà phụ thuộc cung cấp, nhưng phụ thuộc được nâng cấp và đột nhiên không còn chức năng đó nữa, thì ứng dụng chính sẽ sụp đổ. Ứng dụng chính không nhận được kết quả mong đợi từ sự phụ thuộc đó. Trong nhiều trường hợp, lỗi phụ thuộc quá bất ngờ đến nỗi ứng dụng chính sẽ gặp sự cố không mong muốn. Nhà phát triển ứng dụng chính có lẽ đã cảnh báo trước về những thay đổi đối với sự phụ thuộc, do đó có thể khó tính đến tình huống như vậy và xử lý nó một cách duyên dáng.

Hầu hết các lập trình viên làm hết sức mình để đảm bảo tương thích ngược, điều đó có nghĩa là ngay cả khi phiên bản mới hơn của ứng dụng của họ không có chức năng như trước đây, nó vẫn sẽ xử lý các yêu cầu cho chức năng đó một cách duyên dáng để các ứng dụng khác tùy thuộc vào nó sẽ không bị sập. Tuy nhiên, một số ngoại lệ rất đáng chú ý như Java và Python được biết đến là rất khó để làm việc trong quá trình nâng cấp. Trong thế giới Linux, cụm từ nổi tiếng, phụ thuộc địa ngục, đề cập đến những vấn đề cố hữu với các bản cập nhật hệ thống lớn. Trong một số trường hợp, các chương trình phụ thuộc có sự phụ thuộc của riêng họ, và nó không phải là không nghe thấy để kết thúc trong một tình huống nâng cấp mà nó không thể đáp ứng tất cả các phụ thuộc. Ví dụ: nếu chương trình Puppy Vet Tracker của tôi cần phiên bản 2.0 của một số chương trình phụ thuộc, nhưng chương trình Trích dẫn Chiến tranh giữa các vì sao của tôi cần phiên bản 1.0 của cùng một chương trình, thì nó không thể đáp ứng yêu cầu đó cho cả hai chương trình.

Các nhà phát triển thường gặp phải loại vấn đề này và hộp cát là một cách để giải quyết nó. Tạo một hộp cát và cài đặt Puppy Vet Tracker của tôi vào đó sẽ cho phép chương trình phụ thuộc được nâng cấp lên phiên bản 2.0. Hệ thống máy tính chính sẽ vẫn còn với phiên bản 1 của chương trình phụ thuộc, và do đó tôi vẫn có thể nhận được báo giá Star Wars hàng ngày của mình. Thắng-thắng.

Chương trình độc hại

Xem xét một tình huống trong đó một ứng dụng chia sẻ máy tính của bạn với tất cả các chương trình đang chạy khác. Một số chương trình chạy trên máy tính của bạn có thể chứa thông tin nhạy cảm. Có lẽ bạn có tài liệu pháp lý, bảng tính ngân sách hoặc trình quản lý mật khẩu mở và những ứng dụng đó đang lưu trữ một số dữ liệu trong bộ nhớ. Các chương trình độc hại tồn tại thăm dò xung quanh các khu vực của máy tính được gán cho các chương trình khác để xem những gì chúng có thể tìm thấy. Trong những năm gần đây, việc phân bổ tài nguyên đã trở nên tốt hơn nên chương trình khó truy cập dữ liệu không thuộc các khu vực được gán cụ thể cho nó, nhưng các kỹ thuật hack như cố gắng đọc ngoài bộ nhớ được gán cho chương trình có thể hoạt động.

Thủ thuật để lọc dữ liệu thành công (loại bỏ dữ liệu khỏi hệ thống của bạn) luôn dựa vào việc đánh lừa người dùng máy tính để cài đặt phần mềm độc hại. Điều này thường được thực hiện với các chiến thuật lừa đảo hoặc kỹ thuật xã hội và có thể dẫn đến thỏa hiệp bán buôn của một hệ thống nơi mọi tệp có thể bị đánh cắp.

Các chương trình hộp cát có thể cung cấp một sự bảo vệ rất mạnh mẽ chống lại các chương trình độc hại. Khi một chương trình được đóng hộp đúng cách, nó chỉ có thể truy cập vào bộ nhớ và dung lượng ổ đĩa được gán cho nó. Do đó, việc mở các tài liệu nhạy cảm trong hộp cát thường sẽ ngăn khả năng của chương trình độc hại có thể truy cập vào chúng vì tài liệu này không có trong bộ nhớ trong cùng một không gian bộ nhớ với chương trình độc hại. Phải nói rằng, có một nỗ lực rất phối hợp của tin tặc để xâm nhập vào và ra khỏi hộp cát. Cái này được gọi là thoát khỏi môi trường ảo và được coi là một kiểu tấn công nghiêm trọng đến mức gần đây Microsoft đã trả 105.000 đô la cho một nhóm hack mũ trắng chứng minh rằng có thể sử dụng Trình duyệt Edge.

Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map