Serialization là quá trình chuyển đổi một đối tượng dữ liệu thành byte stream (luồng nhị phân), cho phép vận chuyển qua mạng hoặc lưu trữ trong cơ sở dữ liệu. Sau đó, nó có thể được tái tạo và sử dụng ở định dạng gốc ban đầu.
Với lợi ích của tính tiện lợi, hầu hết các ngôn ngữ lập trình cao cấp đều hỗ trợ tính năng này. Đáng chú ý, Serialization trong Java lại là nguồn của nhiều lỗ hổng bảo mật.
Oracle đang đề xuất kế hoạch dừng hỗ trợ Serialization Java
Reinhold đặt nặng rằng Serialization 'là một sai lầm nghiêm trọng'
Trả lời InfoWorld, Reinhold nói rằng quyết định thêm hỗ trợ serialization vào năm 1997 là một lỗi nghiêm trọng.
Reinhold cũng tiết lộ nhóm phát triển Java đang cố giảm hỗ trợ serialization từ các thành phần chính của ngôn ngữ lập trình, nhưng vẫn cung cấp plugin cho nhà phát triển để hỗ trợ serialization trong trường hợp cần thiết cho framework mới.
Không sẽ xuất hiện bản phát hành hoặc phiên bản Java mới do Oracle đang có kế hoạch giảm hỗ trợ serialization, ông thêm vào.
Cho đến khi Oracle triển khai điều này, các doanh nghiệp và những người quản lý dự án không muốn nhà phát triển hoặc module giả mạo, được biết đến với tên gọi hàm serialization/deserialization, ngăn chặn điều này thông qua bộ lọc serialization được thêm vào Java từ năm 2016 và sẽ hoàn toàn ngăn chặn các hoạt động này.
Vấn đề về bảo mật serialization/deserialization
Cuộc tấn công thông qua hoạt động serialization/deserialization đã nổi tiếng trong nhiều năm, dưới các hình thức khác nhau, trở thành một vấn đề quan trọng vào đầu năm 2015 khi Chris Frohoff và Gabriel Lawrence phát hiện lỗ hổng deserialization trong Apache Commons Collection, một ứng dụng Java rất phổ biến.
Các nhà nghiên cứu từ Foxglove Security đã mở rộng việc tìm kiếm các lỗ hổng vào cuối năm 2015, mô tả cách kẻ tấn công có thể tận dụng lỗ hổng deserialization trong ứng dụng Java khi nhà phát triển sử dụng thư viện Apache Commons Collection không chính xác để xử lý các hoạt động deserialization.
Trải qua thử nghiệm, họ chỉ ra rằng kẻ tấn công có thể tải lên dữ liệu độc hại trong các ứng dụng Java phổ biến như WebLogic, WebSphere, JBoss, Jenkins và OpenNMS. Dữ liệu này được tuần tự hóa và lưu trữ trong cơ sở dữ liệu hoặc bộ nhớ, nhưng khi ứng dụng deserialize, cũng đồng thời thực thi mã độc hại bổ sung.
Lỗ hổng này tạo ra tác động lớn đến hệ sinh thái Java vào năm 2016, tác động đến 70 thư viện Java khác nhau và thậm chí được sử dụng để xâm nhập vào các máy chủ của PayPal. Các tổ chức như Apache, Oracle, Cisco, Red Hat, Jenkins, VMWare, IBM, Intel, Adobe, HP và SolarWinds đã phát hành bản vá bảo mật để khắc phục lỗi trên sản phẩm của họ.
Lỗ hổng deserialization trong Java đặc biệt nguy hiểm. Các kỹ sư của Google đã nỗ lực sửa chữa các thư viện Java mã nguồn mở và giới hạn phạm vi của lỗ hổng. Hơn 2.600 dự án đã được vá, và Google đặt tên cho lỗ hổng này là Mad Gadget, mặc dù nó còn được biết đến với tên gọi Java Apocalypse.
Mặc dù vấn đề bảo mật liên quan đến serialization/deserialization trong Java đã được biết đến trong thời gian dài, lỗ hổng Java Apocalypse cảnh báo cả các doanh nghiệp và cộng đồng Java cần chú ý đến cách họ thực hiện việc tuần tự hóa và giải tuần tự hóa dữ liệu.
Lỗ hổng Serialization là vấn đề lớn trong Java
Trả lời InfoWorld, Reinhold nhấn mạnh rằng vấn đề về serialization chiếm 1/3 hoặc thậm chí 1/2 trong tổng số lỗi Java được biết đến.
Nhận định của Reinhold là hoàn toàn chính xác. Ví dụ, trong bản cập nhật bảo mật tháng 1/2018, Oracle đã vá 237 lỗ hổng bảo mật, trong đó 28.5% liên quan đến việc giải quyết các vấn đề về deserialization không an toàn.
Vấn đề này cũng rộng rãi xuất hiện trong các doanh nghiệp. Dựa trên báo cáo của ShiftLeft, đã phát hiện nhiều lỗ hổng serialization/deserialization trong nhiều SDK của nhà cung cấp SaaS.
Chỉ một lỗi deserialization trong Apache Struts (Java) năm trước đã tác động đến 65% tổng số công ty trong danh sách Fortune 100. Điều này cho thấy sự phổ biến của việc thực thi dữ liệu serialize và cách một lỗ hổng có thể đe dọa bảo mật của các công ty hàng đầu thế giới.
Trong khi Oracle đang giải quyết vấn đề trong Java, vấn đề serialization cũng ảnh hưởng đến các môi trường lập trình khác như .NET, Ruby và một số môi trường khác.
PUBG, một trong những tựa game bắn súng sinh tồn được đông đảo người chơi, đang phải đối mặt với những thách thức về hiệu suất, hứa hẹn sẽ mang đến cho người chơi những cập nhật lớn về hiệu suất trong thời gian tới. Thông tin chi tiết có thể được tìm hiểu tại bài viết 'PUBG hứa hẹn mang đến cập nhật hiệu suất lớn' trên trang Mytour.
