2009-09-28 27 views
7

Các vấn đề bảo mật chính cần xem xét khi chấp nhận tải lên hình ảnh là gì, ngoài những thứ thông thường cho tất cả các video tải lên HTTP?Các sự cố bảo mật khi chấp nhận tải lên hình ảnh

Tôi chấp nhận tải lên hình ảnh và sau đó hiển thị những hình ảnh đó cho người dùng khác.

Làm cách nào để xác minh, ví dụ: hình ảnh đã tải lên thực sự là một tệp hình ảnh hợp lệ? Có bất kỳ lỗ hổng đã biết nào trong người xem có thể bị khai thác bởi các tệp hình ảnh không đúng định dạng mà tôi nên quan tâm về việc vô tình truyền đi cùng với việc khai thác không? (Nhanh chóng googling dường như cho thấy rằng có một lần trong IE5/6.)

Tôi có nên loại bỏ tất cả siêu dữ liệu hình ảnh để giúp người dùng ngăn chặn việc tiết lộ thông tin không chủ ý? Hay có một số thứ an toàn và cần thiết hoặc hữu ích để cho phép?

Có bất kỳ tính năng phức tạp nào của các định dạng hình ảnh phổ biến có thể là lỗ hổng bảo mật không?

Có thư viện nào xử lý các vấn đề này không? (Và/hoặc với các vấn đề khác như chuyển đổi JPEG tiến triển sang JPEG bình thường, downsampling để chuẩn hóa kích thước, tối ưu hóa PNG, v.v.)

Trả lời

2

Một số điều tôi đã học gần đây từ một web security video:

  • Các tùy chọn hạt nhân là để phục vụ tất cả các nội dung được tải lên từ một tên miền riêng biệt mà chỉ phục vụ nội dung tĩnh - tất cả các tính năng bị vô hiệu hóa và không có gì quan trọng được lưu trữ ở đó.
  • Xem xét xử lý hình ảnh qua imagemagick, v.v. để loại bỏ doanh nghiệp vui nhộn.
  • Để biết ví dụ về những gì bạn đang gặp phải, hãy tìm GIFAR, một kỹ thuật đặt GIF và Java JAR trong cùng một tệp.
+0

Tùy chọn đầu tiên của bạn không dễ dàng đạt được đối với hầu hết mọi người, vì nó giả sử bạn có một máy chủ hoàn toàn riêng biệt không liên quan đến một trong những chính (mật khẩu, vv), và cũng là một chút vô dụng, tùy thuộc vào mục tiêu của một kẻ tấn công. –

+1

Bạn sẽ đề xuất vòng loại nào thay vì "tùy chọn hạt nhân"? –

2

Nguy cơ lớn nhất của bạn là kẻ tấn công cố gắng tải lên một số loại mã thực thi lên máy chủ của bạn. Nếu tệp được tải lên sau đó có thể duyệt trên web, kẻ tấn công có thể làm cho mã chạy trên máy chủ của bạn. Bảo vệ tốt nhất của bạn là trước tiên lưu tệp đã tải lên vào vị trí không thể duyệt công khai, hãy thử tải tệp đó dưới dạng hình ảnh bằng ngôn ngữ lập trình của bạn và cho phép nó nếu nó có thể được phân tích thành công dưới dạng hình ảnh. Rất nhiều thời gian mọi người sẽ muốn thay đổi kích thước hình ảnh anyway để thực sự làm điều này là không có thêm công việc. Khi hình ảnh được xác thực, bạn có thể di chuyển nó vào khu vực có thể xem công khai cho máy chủ web của bạn.

Ngoài ra, hãy đảm bảo bạn có giới hạn về kích thước tải lên tệp. Hầu hết các nền tảng sẽ có một số loại giới hạn tại chỗ theo mặc định. Bạn không muốn người dùng độc hại lấp đầy đĩa của mình bằng tệp tải lên vô tận.

+0

Cách phân phát tệp qua HTTP làm cho tệp chạy trên máy chủ? –

+0

Nó phụ thuộc vào nền tảng của bạn. Ví dụ, trong PHP, nếu tôi tải lên một hình ảnh có tên myhackerscript.php và sau đó lướt nó lên trang web của bạn, hãy đoán xem? myhackerscript.php chạy trên máy chủ của bạn. – Asaph

+0

Đúng, chắc chắn và đó là lời khuyên tốt cho mọi video tải lên. Điều gì về rủi ro cho người dùng của tôi, mặc dù? –

2

Nguy cơ đẩy lỗi bên trong trình định dạng hình ảnh không phải là "chính xác" vấn đề của bạn, nhưng bạn vẫn có thể trợ giúp bằng cách làm theo cách thực hành chung "ánh xạ .jpg" sang ngôn ngữ thực thi của bạn và xử lý từng hình ảnh bằng tay (theo cách này bạn cũng có thể tham khảo kiểm tra).

Bạn cần phải cẩn thận của:

  • dân tải lên mã như hình ảnh (.jpg với thực tế C# mã bên trong)
  • bất kỳ phần mở rộng không hợp lệ (bạn kiểm tra này)
  • dân cố gắng làm các cuộc tấn công liên quan đến đường dẫn đến bạn

Điều cuối cùng là những gì bạn cần phải cảnh giác, nếu bạn đọc động trong hình ảnh (như bạn sẽ làm, nếu bạn làm theo lời khuyên đầu tiên).

Vì vậy, hãy đảm bảo bạn chỉ mở mã trong thư mục có liên quan và, có thể quan trọng hơn, khóa người dùng thực hiện tác vụ này. Tôi có nghĩa là người dùng máy chủ web. Đảm bảo rằng nó chỉ có quyền đối với đọc từ thư mục bạn đang làm việc và những thứ logic khác như vậy.

Siêu dữ liệu loại bỏ? Chắc chắn tại sao không, nó khá lịch sự của bạn, nhưng tôi sẽ không được hạt về nó.

0

Một trong những lỗ hổng mà tôi biết là "cửa hậu WMF". WMF là "Windows Metafile" - một định dạng đồ họa được hiển thị bởi thư viện Windows GDI. Đây là wikipedia article.

Kẻ tấn công có khả năng thực thi mã tùy ý trên máy của người dùng. Điều này có thể xảy ra khi người dùng chỉ xem tệp qua trình duyệt, bao gồm nhưng không giới hạn đối với Internet Explorer. Vấn đề này được cho là cố định trong năm 2006.

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