2011-08-14 27 views
11

Dường như hiện tại không có phương pháp JavaScript thuần túy để truy cập vào khay nhớ tạm thời của hệ thống bằng cách sử dụng hầu hết các trình duyệt hiện đại, Internet Explorer là một ngoại lệ. Trên nhiều câu hỏi Stack Overflow khác (ví dụ: Clipboard access using Javascript - sans Flash?), giải thích rằng giới hạn này là biện pháp bảo mật có chủ ý để bảo vệ chống lại các trang web đọc mật khẩu hoặc dữ liệu nhạy cảm khác từ khay nhớ tạm.Tại sao viết vào clipboard trong JS được coi là một lỗ hổng bảo mật?

Mặc dù có vẻ như rõ ràng rằng đọc từ khay nhớ tạm sẽ là một rủi ro bảo mật rất lớn, không rõ lý do tại sao viết vào khay nhớ tạm. Kịch bản nào, nếu có, là các trình duyệt bảo vệ chống lại bằng cách từ chối JS khả năng sao chép dữ liệu vào clipboard?

Trả lời

14

Ghi vào khay nhớ tạm là cách để các trang web độc hại (hoặc mã khác chạy trong các trang web, chẳng hạn như quảng cáo dựa trên flash) lừa người dùng lây lan phần mềm độc hại. Điều này xảy ra một vài năm trước với quảng cáo dựa trên flash đã sao chép URL phần mềm độc hại vào khay nhớ tạm, với hy vọng người dùng sẽ dán nó khi họ định dán thứ gì đó khác, làm ô nhiễm những thứ như bài đăng trên facebook, diễn đàn và e-mail. Thay vì một liên kết đến một bức ảnh của con mèo của Dì Tilly, bạn sẽ dán một liên kết đến một số phần mềm độc hại do ổ đĩa. Thông thường đây là những "bạn đã bị nhiễm virus, trả cho chúng tôi 50 đô la cho phần mềm xóa" lừa đảo chống vi-rút giả mạo. Tôi đã làm một số nghiên cứu về nó, như rất nhiều khách hàng ClipMate của tôi đã hỏi tại sao những URL khó chịu này đột nhiên xuất hiện trong ClipMate. Trong khi nghiên cứu, tôi đã bị tấn công bởi các quảng cáo dựa trên flash trên MSNBC và DIGG. Clipboard sau đó đã bị khóa lại trong Flash 10. Bạn có thể đọc thêm về saga của tôi tại đây: http://www.clipboardextender.com/defective-apps/clipboard-virus-not-exactly-but-still-dangerous

Tôi kỳ vọng rằng hạn chế JavaScript là để ngăn chặn những điều tương tự xảy ra.

+2

Bây giờ * điều này * là một vấn đề bảo mật thực sự. Chỉ cần những gì tôi đang tìm kiếm. Cảm ơn. – goodside

+0

Câu trả lời hay, cảm ơn thông tin này. –

+0

Họ có thể sử dụng Flash, giống như cách Github thực hiện. – danuker

6

Điều gì sẽ xảy ra nếu người dùng không muốn ghi đè clipboard của mình?

+0

Chính xác. Ví dụ, một người dùng với KeePass có thể có mật khẩu mà anh ta cần trong clipboard, và ghi đè dữ liệu mà anh ta muốn lưu trữ với máy của bạn sẽ phá hoại và gây phiền nhiễu, đó là lý do tại sao các trình duyệt không muốn hành vi này. – mopsled

+2

Flash chỉ hỗ trợ nó khi nhấp vào một cái gì đó.Tôi không thấy lỗ hổng bảo mật nếu nó được thực hiện trong JavaScript theo cùng một cách. Nó sẽ tiết kiệm rất nhiều rắc rối với các giải pháp Flash. – pimvdb

+2

Tôi sẽ chấp nhận điều này nếu không có gì hấp dẫn hơn hiển thị, nhưng điều này có vẻ như một lý do tầm thường để vô hiệu hóa một cái gì đó có khả năng hữu ích. Mất clipboard là một sự khó chịu tồi tệ nhất, vì không có kỳ vọng rằng đó là một kho lưu trữ lâu dài cho các dữ liệu quan trọng. Ngoài ra, có vô số cách khác để làm phiền người dùng bằng JS được hỗ trợ phổ biến, như tạo thông báo bật lên. – goodside

3

Nếu người dùng mong rằng khay nhớ tạm của họ chứa một thứ, nhưng bí mật nó được thay thế bằng một thứ khác, ngay cả đó là vấn đề bảo mật tiềm ẩn, không chỉ là một sự phiền toái.

Mặc dù một vector tấn công không chắc, nhưng không phải là điều không hợp lý khi nghĩ đến điều gì đó liên quan đến kỹ thuật xã hội: thuyết phục người dùng dán thông tin bị thay đổi bí mật vào trường mật khẩu trên tài nguyên đích. Tài nguyên đó sau đó sẽ được bảo vệ bằng mật khẩu được biết đến với kẻ tấn công.

0

Ngoài các vấn đề về lỗ hổng nêu trên, có ít nhất một tình huống trong đó việc triển khai API clipboard tạm thời của IMP có thể làm tăng một số vấn đề bảo mật. Ngày nay, chúng tôi có các API mới để thiết lập kết nối giữa các cửa sổ riêng biệt mà không cần gọi phía máy chủ, như postMessage, MessageChannel hoặc, giả sử, BroadcastChannel gần đây được giới thiệu với Firefox. Các API này có mức hỗ trợ trình duyệt khác nhau nhưng tất cả chúng đều đang xem xét các vấn đề liên quan đến nguồn gốc. Đó là, nó sẽ không thể nhận được một tin nhắn từ một cửa sổ trên một máy chủ khác nhau, trừ khi cửa sổ này thực sự rõ ràng cho phép nó.

Điều này không giữ với API khay nhớ tạm. Hãy tưởng tượng rằng một số mã trên trang dán mã vào clipboard và khay nhớ tạm này được quét bởi một số cửa sổ khác. Đây là một số kịch bản rất kỳ lạ và có tính thuyết phục cao, phụ thuộc vào một số giả định khá kỳ lạ và kỳ lạ, nhưng đáng nói đến nó.

Các vấn đề liên quan