it-swarm-vi.com

WebGL có phải là vấn đề bảo mật không?

WebGL có phải là sự cố bảo mật tiềm ẩn do mức truy cập thấp mà nó cung cấp không?

Ví dụ, một trang web có thể cố gắng biên dịch và chạy bất kỳ nguồn shader nào nó muốn.

Có vẻ như bảo mật đặc biệt là một vấn đề với các trình duyệt web nguồn mở, vì kẻ tấn công có thể dễ dàng tìm thấy các lỗ hổng hơn trong quá trình thực hiện.

27
user9148

Đúng, WebGL thực sự là một rủi ro bảo mật tiềm tàng, mặc dù mức độ rủi ro rất khó đánh giá và sẵn sàng tranh luận. Có một số vấn đề khó khăn ở đây. Các trình duyệt đã đưa ra một số biện pháp phòng vệ chống lại các rủi ro bảo mật, nhưng dường như có một số tranh luận về việc liệu các biện pháp phòng vệ đó sẽ chứng minh đầy đủ trong thời gian dài.

Một rủi ro lớn là WebGL liên quan đến việc chạy mã trực tiếp trên thẻ video và phơi bày các API cung cấp quyền truy cập trực tiếp vào API thẻ video. Trình duyệt cố gắng sandbox mã này (ở một mức độ nhất định) và các trình duyệt thực thi một số hạn chế bảo mật được thiết kế để ngăn chặn hành vi nguy hiểm. Tuy nhiên, nhiều API trong số này và các triển khai của chúng ban đầu không được thiết kế để cung cấp cho các thực thể không đáng tin cậy (chúng chỉ có thể sử dụng được bởi các ứng dụng gốc, được tin cậy hoàn toàn), vì vậy có những lo ngại về việc đưa chúng ra các trang web tùy ý có thể cho phép các trang web để tấn công hệ thống của bạn.

một tờ giấy trắng có khả năng hiển thị cao (xem thêm phần tiếp theo ) đã xem xét tính bảo mật của việc triển khai WebGL trong các trình duyệt vào thời điểm đó và đã tìm thấy một số lỗ hổng. Họ đã tìm thấy một số vấn đề về an toàn bộ nhớ trong một số API WebGL và cũng tìm thấy một số cuộc tấn công cho phép một trang web đọc dữ liệu pixel của các trang web khác (có thể vi phạm tính bảo mật). Xem thêm nghiên cứu thứ ba này , đã chứng minh sự tồn tại của các lỗ hổng này trên một số trình duyệt và thẻ web (tại thời điểm đó).

Các trình duyệt đã đáp ứng điều này với một loạt các biện pháp phòng vệ: họ có các thẻ video trong danh sách đen với các vấn đề bảo mật đã biết; họ đã cố gắng khắc phục các sự cố an toàn bộ nhớ đã biết; và họ đã hạn chế sử dụng WebGL theo chính sách Xuất xứ tương tự , để ngăn chặn một trang web độc hại sử dụng WebGL để theo dõi việc sử dụng các trang web khác của người dùng .

Có một số cuộc tranh luận đang diễn ra về việc liệu các biện pháp phòng vệ này sẽ chứng minh đầy đủ trong dài hạn. Microsoft đã đưa ra quan điểm rằng WebGL là một rủi ro bảo mật quá lớn và các biện pháp phòng vệ hiện tại không đủ mạnh . Mặt khác, Mozilla đảm nhận vị trí phòng thủ mà họ đã đặt sẽ đầy đủ và WebGL cung cấp giá trị quan trọng cho web. Ars Technica có giải quyết vấn đề xuất sắc ; và đây là một báo cáo khác .

P.S. Tôi hoàn toàn không đồng ý với tuyên bố của bạn về việc nó đặc biệt là vấn đề đối với các trình duyệt web nguồn mở. Đó là một huyền thoại. Xem Nguồn mở so với Hệ thống nguồn đóng , đã bao gồm các đối số này. (Xem thêm Chrome vs Explorer - làm thế nào để giải thích bằng những từ đơn giản rằng nguồn mở tốt hơn? để thảo luận thêm về chủ đề này.)

31
D.W.

Một số điểm chính:

  • WebGL không chỉ hiển thị OpenGL cho JavaScript. Tất cả các điểm vào đã bị hạn chế để loại bỏ khả năng truy cập bộ nhớ ngoài giới hạn, do đó trình duyệt luôn có thể kiểm tra các truy cập ngoài giới hạn (và làm như vậy được bao phủ bởi các kiểm tra tuân thủ).
  • WebGL không cho phép chạy các shader gần như tùy ý trên GPU. Tuy nhiên, hãy nhớ rằng các shader không phải là mã mục đích chung tùy ý. Họ chỉ có thể truy cập bộ nhớ rất cụ thể theo cách mà trình duyệt kiểm tra các truy cập ngoài giới hạn. Các shader được xác thực và dịch bởi trình biên dịch shader được nhúng trong trình duyệt trước khi được chuyển đến trình điều khiển GPU.
  • Chỉ có một lỗ hổng bảo mật chính xác trong thông số WebGL: thông số WebGL ban đầu cho phép sử dụng hình ảnh có nguồn gốc chéo làm kết cấu WebGL và đã chứng minh rằng một cuộc tấn công thời gian có thể đọc thành công những điều này. Điều này đã được sửa chữa vào giữa năm 2011 và phiên bản hiện tại của thông số WebGL, 1.0.1, được bảo mật.
  • Có thể tìm hiểu thêm về bảo mật WebGL tại đây: http://www.khronos.org/webgl/security/
10
Benoit Jacob

Có vẻ như bảo mật đặc biệt là vấn đề với các trình duyệt web nguồn mở.

Thưa ngài là rất sai. Nó đã chứng minh nhiều lần rằng các chương trình mã nguồn mở thường an toàn hơn rất nhiều so với các chương trình nguồn đóng, bởi vì có rất nhiều con mắt kiểm tra mã.

Ngoài ra tất cả các trình duyệt chạy những thứ này trong một hộp cát. Việc thoát ra khỏi hộp cát sẽ khó khăn, nhưng nó sẽ gây ra nhiều vấn đề trong nguồn đóng như trong các trình duyệt nguồn mở.

3
Lucas Kauffman

Hãy so sánh WebGL với javascript.

Sự khác biệt quan trọng giữa (mã shader chạy qua) WebGL và javascript là mã shader được chạy trên thẻ GPU, trong khi javascript được chạy trên CPU.

Cho dù mã được giải thích hoặc biên dịch là ít hậu quả; kết quả tiềm năng cho các lỗ hổng vẫn còn đó.

Vì vậy, javascript có nhiều khả năng lạm dụng hơn, vì một khi một đoạn mã giả mạo thoát ra khỏi nhà tù trình duyệt, về cơ bản nó có quyền truy cập vào PC của bạn. Một tập lệnh shader WebGL giả mạo có thể nhận được, uh, truy cập vào GPU của bạn.

Có những yếu tố làm phức tạp quan điểm đơn giản này; javascript đã xuất hiện được một thời gian, vì vậy đã nhận được nhiều sự xem xét kỹ lưỡng hơn và có nhiều lỗ hổng hơn được đóng lại. javascript phức tạp hơn nhiều. Javascript là một ngôn ngữ phức tạp hơn nhiều. Vân vân.

1
Michael Slade

WebGL cho phép truy cập vào đường dẫn GL vào lõi GPU của bạn. Một số nhà sản xuất tích hợp GPU trực tiếp trên chip CPU. Điều này cho phép GPU chia sẻ bộ nhớ CPU bên trong, thay vì có bộ nhớ riêng, như là trường hợp với chipset đồ họa bên ngoài. Đây là một rủi ro bảo mật thông tin tiềm năng.

Bộ xử lý song song đói năng lượng như GPU cũng rất lý tưởng cho các ứng dụng mã hóa.

Có rất nhiều ví dụ về bitminers dựa trên webgl trong botnet. Mặc dù không phải là mối đe dọa bảo mật thông tin (ngược lại, bitminers là cơ sở để bảo mật thông tin blockchain), các botnet này đánh cắp một lượng điện năng đáng kinh ngạc từ các mạng lưới rộng lớn của các thiết bị vô tình mà chúng chạy trên đó.

Điều này có nghĩa là Bitcoin có dấu chân carbon đang phát triển nhưng phần lớn ẩn, đây là mối đe dọa an ninh môi trường tiềm năng.

Nếu bạn nhận thấy rằng một số trang web làm chậm màn hình của bạn mà không tăng tải CPU, thì rất có thể chúng đang chạy mã webgl trên GPU của bạn. Cũng là một nguyên nhân có thể gây ra sự cạn kiệt năng lượng thiết bị di động bí ẩn.

Các ứng dụng di động (như trình duyệt web) có thể chạy mã GPU liên tục trong nền và có thể yêu cầu khởi động lại thiết bị để tạm dừng chúng.

0
Dominic Cerisano