Sau khi đọc hầu hết các câu trả lời, tôi nghĩ câu hỏi của bạn đã được trả lời một cách gián tiếp. Tôi chỉ muốn nói điều này trực tiếp. Java không bị các vấn đề tương tự như bạn thấy trong C/C++ vì nó bảo vệ nhà phát triển khỏi các kiểu tấn công bộ nhớ này (tràn bộ nhớ đệm, tràn tràn, vv). Những điều đó không thể xảy ra.Bởi vì có bảo vệ cơ bản này trong các lỗ hổng bảo mật ngôn ngữ đã di chuyển lên ngăn xếp.
Hiện chúng đang diễn ra ở cấp độ cao hơn. SQL injection, XSS, DOS, vv Bạn có thể tìm ra cách để tải Java từ xa mã độc hại, nhưng để làm điều đó có nghĩa là bạn cần khai thác một số lỗ hổng khác ở lớp dịch vụ để đẩy mã từ xa vào một thư mục sau đó kích hoạt Java để tải thông qua trình nạp lớp. Các cuộc tấn công từ xa về mặt lý thuyết là có thể, nhưng với Java thì việc khai thác phức tạp hơn. Và thường nếu bạn có thể khai thác một số lỗ hổng khác thì tại sao không chỉ đi sau và cắt java ra khỏi vòng lặp. Các thư mục có thể ghi trên thế giới nơi mã java được tải từ có thể được sử dụng để chống lại bạn. Nhưng tại thời điểm này là nó thực sự Java đó là vấn đề hoặc quản trị sys của bạn hoặc nhà cung cấp của một số dịch vụ khác có thể khai thác?
Lỗ hổng duy nhất tạo ra tiềm năng mã từ xa mà tôi đã thấy trong Java qua nhiều năm là từ mã gốc mà VM tải. Lỗ hổng libzip, phân tích cú pháp tệp gif, v.v ... Và đó chỉ là một số vấn đề. Có thể cứ 2-3 năm một lần. Và một lần nữa, thô tục là mã nguồn gốc được JVM nạp không phải trong mã Java.
Là một ngôn ngữ Java rất an toàn. Ngay cả những vấn đề này tôi đã thảo luận có thể bị tấn công về mặt lý thuyết có móc trong nền tảng để ngăn chặn chúng. Việc ký mã sẽ ngăn chặn hầu hết điều này. Tuy nhiên, rất ít chương trình Java chạy với một Trình quản lý bảo mật được cài đặt. Chủ yếu là do hiệu suất, khả năng sử dụng, nhưng chủ yếu là vì những vulns là rất hạn chế trong phạm vi tốt nhất. Tải mã từ xa trong Java đã không tăng lên đến mức dịch mà tràn bộ đệm đã làm trong cuối những năm 90/2000 cho C/C++.
Java không phải là bằng chứng đạn làm nền tảng, nhưng khó khai thác hơn trái cây khác trên cây. Và tin tặc là cơ hội và đi cho quả treo thấp đó.
Chỉ vì tò mò, tại sao bạn đã phân loại tràn bộ đệm dưới dạng lỗ hổng c/C++? Có thể ngay cả trong Java, nếu VM có cùng lỗ hổng. –
Thông thường, các lỗ hổng nằm trong ứng dụng chứ không phải trong ngôn ngữ. – Jonas
@Vineet: Để công bằng, nguy cơ tạo tràn bộ đệm trong mã * Java * mà bạn viết không tồn tại; tương tự cho C# và các ngôn ngữ được quản lý khác. Nguy cơ tràn bộ đệm trong bản thân máy ảo là rất thấp, giúp loại bỏ được 99,9% rủi ro tổng thể. –