Tin tức và phân tích của tất cả các thiết bị di động

Tính di động và bảo mật của WASM hoạt động như thế nào

Hãy xem hướng dẫn dành cho người mới bắt đầu này để biết cách hoạt động của Mô hình bảo mật và tính di động của WebAssembly (WASM).

Cả hai đều là Chủ đề WebAssugging nâng cao (WASM). Chúng tôi khuyên bạn nên đọc hai chủ đề trước trong loạt bài WebAssembly dành cho người mới bắt đầu.

Hãy bắt đầu.

Tính di động của WebAssugging

Tính di động của WebAssugging giúp nó sẵn sàng cho web. Trên thực tế, bạn có thể định nghĩa WASM là nền tảng hộp cát di động.

Ngoài ra, định dạng nhị phân của nó cho phép thực thi trên nhiều kiến ​​trúc tập lệnh và hệ điều hành khác nhau. Điều này có nghĩa là bạn có thể sử dụng WASM không chỉ trực tuyến mà còn ngoại tuyến.

Để hiểu tính di động của WASM, chúng tôi sẽ đề cập đến những vấn đề sau:

  • Môi trường cục bộ, hạn chế và không xác định.
  • Đặc điểm cụ thể của môi trường thời gian chạy
  • Tính di động của WASM trên và ngoài web

Địa phương, bị hạn chế và không xác định

WASM yêu cầu thực thi hiệu quả và môi trường phù hợp mang tính cục bộ, bị ràng buộc và không mang tính xác định. Tính không xác định là một tính toán xác định rằng thuật toán/trình biên dịch/môi trường tạo ra các hành vi hoặc kết quả khác nhau ngay cả đối với cùng một đầu vào. Nó trái ngược với một thuật toán xác định.

Hai khía cạnh còn lại, bị ràng buộc và cục bộ, có liên quan đến việc thực thi không xác định. Để thực thi không xác định hoạt động, bạn cần các trường hợp sử dụng được xác định rõ ràng và “bị hạn chế”.

Ngoài ra, những vụ hành quyết này mang tính “cục bộ” và không có tác động đến môi trường. Đọc thuyết không xác định chính thức của họ trong tài liệu WebAssembly để tìm hiểu thêm về nó.

Đặc điểm cụ thể của môi trường thời gian chạy

Để làm cho WebAssugging có thể di động, thời gian chạy được cho là cung cấp các tính năng sau:

  • Khả năng định địa chỉ chi tiết của bộ nhớ byte và 8-bit byte.
  • Số nguyên bù hai có dấu 32-bit. Tùy chọn 64bit.
  • Việc mô phỏng phần mềm có thể được thực hiện bằng cách truy cập bộ nhớ không được sắp xếp hoặc bẫy đáng tin cậy.
  • Hỗ trợ dấu phẩy động 32 bit và 64 bit như được định nghĩa trong IEEE 754-2008.
  • Tất cả các chủ đề chuyển tiếp tiến độ được đảm bảo.
  • Để truy cập 64 bit, wasm64 phải cung cấp toán tử bộ nhớ nguyên tử không khóa.
  • Toán tử lưu trữ nguyên tử không khóa bao gồm quyền truy cập 816 và 32bit.
  • wasm64 hỗ trợ bộ nhớ tuyến tính cao hơn 4 GiB với các chỉ mục hoặc con trỏ 64 bit.
  • Thứ tự byte endian nhỏ.

Tất cả các trình duyệt chính bao gồm Chrome, Edge, Firefox và WebKit đều hỗ trợ tất cả các yêu cầu về môi trường này.

Hơn nữa, WebAssugging đang phát triển với tốc độ nhanh chóng. Nhóm cộng đồng WASM và Nhóm làm việc W3C WebAssembly đang nỗ lực chuẩn hóa nó. Điều này có nghĩa là mỗi yêu cầu này có thể thay đổi trong tương lai.

Mạng WASM và tính di động ngoại tuyến

Mục tiêu chính của WebAssugging là cung cấp tính di động và hiệu suất gốc trong và ngoài web. Trong phần này, chúng ta hãy xem WASM đạt được điều này như thế nào.

# 1. Nhúng trên Internet

WASM tích hợp tốt với hệ sinh thái web, bao gồm mô hình bảo mật web, tính di động của web và API web. Ngoài ra, nó phải có đủ chỗ cho sự phát triển sáng tạo trong tương lai (đọc WebAssembly dành cho người mới bắt đầu – phần 2để hiểu mục tiêu của nó)

Vậy WASM làm cách nào để đạt được khả năng tương thích với Internet? Nó sử dụng API JavaScript, cho phép các nhà phát triển dễ dàng sử dụng JavaScript để biên dịch các mô-đun WebAssugging. Nó cũng đảm nhiệm việc lưu trữ và truy xuất các mô-đun trình biên dịch, quản lý việc nhập từ các mô-đun trình biên dịch, quản lý bộ nhớ, v.v.

Để tìm hiểu thêm về cách WASM đạt được mức độ tương thích web cao, hãy đọc phần này: Nhúng Web – WebAssugging.

#2. Nhúng ngoại tuyến

Như đã đề cập trước đó, WASM cũng hoạt động trong môi trường không có mạng. Với tư cách là nhà phát triển hoặc công ty, bạn có thể xây dựng các ứng dụng hiệu suất cao hoặc viết các phần trong ứng dụng yêu cầu điều chỉnh hiệu suất. Ví dụ: nó có thể được sử dụng trên các thiết bị IoT, máy chủ trung tâm dữ liệu và ứng dụng máy tính để bàn/di động.

Vì các ứng dụng không phải web không thể sử dụng API web nên chúng dựa vào liên kết động WASM. Bạn cũng cần sử dụng thử nghiệm tính năng, một quy trình phát triển phần mềm thử nghiệm nhiều biến thể của tính năng để xem tính năng nào phù hợp nhất với trải nghiệm người dùng. Hơn nữa, các nhà phát triển có thể sử dụng máy ảo JavaScript để đơn giản hóa việc nhúng ngoại tuyến hoặc phát triển ứng dụng của họ mà không cần đến chúng.

Để tìm hiểu thêm, hãy đọc Không nhúng trên web – WebAssembly.

Bảo mật WebAssugging

WebAssugging là một giải pháp nhị phân cung cấp hiệu suất gốc. Nó hoạt động tốt trên web nhưng cũng có thể được tùy chỉnh để nhúng không phải trên web. Điều này làm cho WASM có sẵn rộng rãi trên các dịch vụ, giải pháp và quy trình. Tuy nhiên, điều này đồng nghĩa với nhiều thách thức về an ninh hơn.

Những thách thức và mối đe dọa bảo mật WASM

Mặc dù WebAssugging được coi là an toàn và hiệu quả nhưng nó lại tiềm ẩn nhiều rủi ro bảo mật, bao gồm:

  • Hộp cát WebAssembly
  • Quản lý bộ nhớ
  • Làm xáo trộn mã
  • Kiểm tra tính toàn vẹn

# 1. Hộp cát WebAssembly

WASM chạy trong trình duyệt web của bạn, giống như JavaScript. Nó sử dụng cùng một máy ảo (VM) như JavaScript. Hộp cát cung cấp thời gian chạy an toàn một cách hiệu quả và cản trở những gì hoạt động ngầm.

Vì vậy, nếu JavaScript/WebAssembly chứa mã độc thì khó phát hiện vì đó là hộp đen. Ngoài ra, mã WASM ở định dạng nhị phân sẵn sàng để chạy; nó hoạt động nhanh hơn, điều này khiến các giải pháp chống vi-rút khó tìm thấy mã độc hơn. Ví dụ: mã có thể bao gồm các quảng cáo không mong muốn hoặc khả năng chuyển hướng người dùng đến các trang web chứa phần mềm độc hại không mong muốn.

Ngoài ra, việc WebAssembly phụ thuộc quá nhiều vào JavaScript khi chạy trên web cũng đồng nghĩa với việc nó thừa hưởng các lỗ hổng JavaScript. Do đó, với tư cách là nhà phát triển, bạn phải tuân theo các biện pháp phòng ngừa và bảo mật JavaScript khi mã hóa WASM.

#2. Quản lý bộ nhớ

Quản lý bộ nhớ trong WASM rất phức tạp. Đầu tiên, nó không truy cập trực tiếp vào bộ nhớ vật lý khi nó được thực thi trong máy ảo. Vì vậy, nó sử dụng bộ nhớ máy chủ.

Thứ hai, việc thu thập rác trong WASM yêu cầu một quy trình rõ ràng, trong khi JavaScript sẽ tự dọn sạch.

Ngoài ra, khi hàm WASM trả về đầu ra cho JavaScript, nó sẽ trả về một con trỏ tới một vị trí trong không gian bộ nhớ WASM được phân bổ. Do đó, nếu bộ nhớ chuyên dụng đầy, WASM có thể gặp sự cố, làm hỏng trải nghiệm người dùng. Để ngăn chặn điều này, các nhà phát triển phải sử dụng trình khử trùng để gỡ lỗi mã hoặc chuỗi công cụ như emscripten.

#3. Làm xáo trộn mã

Việc thực hiện hộp cát WASM sẽ khiến mã của nó bị xáo trộn. Ngoài ra, định dạng nhị phân WASM cũng không thể đọc được bằng con người, gây khó khăn cho kỹ thuật đảo ngược vốn cần thiết để xác định mã độc.

Điều này khiến mã WebAssembly khó gỡ lỗi do thiếu định dạng mà con người có thể đọc được. Điều này mở ra nhiều lỗ hổng bảo mật, bao gồm khả năng tin tặc ẩn mã đánh cắp thông tin nhạy cảm hoặc thực hiện việc tiêm mã để chiếm quyền điều khiển máy chủ.

#4. Kiểm tra tính toàn vẹn

Bất kỳ dữ liệu nào được gửi qua Internet đều dễ bị xử lý dữ liệu. Ví dụ: tin tặc có thể thực hiện cuộc tấn công trung gian để thay đổi giá trị dữ liệu. Đây là một vấn đề đối với WASM vì không có cách thích hợp nào để thực hiện kiểm tra tính toàn vẹn.

Tuy nhiên, nó có thể hoạt động với JavaScript để thực hiện kiểm tra tính toàn vẹn. Một cách khác để xác định các lỗ hổng tiềm ẩn trong mã WASM là sử dụng các công cụ tích hợp như Jit. Nó đảm bảo rằng mã không có tác nhân xấu và không thể ảnh hưởng đến các ứng dụng hoặc cơ sở hạ tầng đám mây xung quanh.

Hiểu mô hình bảo mật WASM

WebAssembly rất coi trọng vấn đề bảo mật. Do đó, trong các tài liệu chính thức của WASM, họ đã đề cập rằng mô hình bảo mật của họ đảm bảo hai mục tiêu quan trọng:

  • Đảm bảo không có mô-đun bị lỗi hoặc độc hại nào ảnh hưởng đến người dùng của bạn
  • Đảm bảo các nhà phát triển có thể giảm thiểu mọi rủi ro bảo mật và xây dựng các ứng dụng bảo mật đồng thời đảm bảo rằng điểm 1 luôn được duy trì.
  • Mô hình bảo mật WASM giả định rằng các ứng dụng WebAssembly chạy độc lập mà không thể thoát khỏi môi trường sandbox. Tuy nhiên, API có thể mở đường cho việc tấn công vào môi trường máy chủ.

    Một kỹ thuật chịu lỗi khác liên quan đến việc chạy các ứng dụng một cách xác định với những kỳ vọng hạn chế. Bằng cách đảm bảo đáp ứng cả hai điều kiện, hầu hết các lần khởi chạy ứng dụng đều được coi là an toàn.

    Để cải thiện tính bảo mật, nhà phát triển nên thực thi chính sách cùng nguồn gốc cho luồng thông tin. Nếu bạn đang phát triển cho các mạng không phải Internet, bạn phải sử dụng mô hình bảo mật POSIX. Nếu bạn muốn đọc thêm về mô hình bảo mật của nó, hãy xem: Bảo mật – WebAssugging.

    Giao diện hệ thống WebAssugging (WASI)

    WASI (Giao diện hệ thống WebAssembly) cũng đóng vai trò quan trọng trong việc nhúng WASM bên ngoài mạng vì nó cải thiện tính bảo mật. Nó là một giao diện hệ thống mô-đun cung cấp các tính năng bảo mật thú vị và tính di động.

    Trên thực tế, giờ đây nó là một phần của tab nhóm con của giao diện WebAssembly và do đó đã được chuẩn hóa. Nhờ WASI, WASM được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau của điện toán biên/máy chủ. Ngoài ra, WASI đơn giản hóa việc bảo mật khi chuyển sang nhúng ngoại tuyến từ môi trường nhúng web.

    những từ cuối

    Tính di động và bảo mật của WebAssembly là hai chủ đề lớn. một phần 3 WebAssugging dành cho người mới bắt đầu, chúng tôi đã cố gắng đơn giản hóa và chia nhỏ nó, đặc biệt là cho người mới bắt đầu.

    Sau đó, bạn có thể xem bảng tóm tắt JavaScript dành cho nhà phát triển và người học.