Serialization là quá trình lấy một đối tượng dữ liệu và chuyển đổi nó thành byte stream (luồng nhị phân), vì vậy nó có thể được vận chuyển qua mạng hoặc được lưu bên trong cơ sở dữ liệu, sau đó được deserialize và sử dụng ở định dạng gốc ban đầu.
Vì ưu điểm là tiện lợi nên phần lớn các ngôn ngữ lập trình cao cấp đều hỗ trợ tính năng này. Đáng nói là Serialization trong Java lại là trung tâm, nguồn của các lỗ hổng bảo mật.
Oracle lên kế hoạch ngừng hỗ trợ Serialization Java
Reinhold nhấn mạnh Serialization "là một sai lầm nghiêm trọng"
Trả lời với InfoWorld, Reinhold cho biết việc bổ sung hỗ trợ serialization vào năm 1997 là một sai lầm nghiêm trọng.
Reinhold cũng cho biết nhóm phát triển Java hiện đang cố gắng 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 cho các nhà phát triển hệ thống plug-in để hỗ trợ các hoạt động serialization nếu cần framework mới.
Sẽ không có ngày phát hành hoặc phiên bản Java mới nào được phát hành vì kế hoạch của Oracle là giảm hỗ trợ serilization, ông nói thêm.
Cho đến khi Oracle triển khai điều này, công ty và trưởng dự án không muốn nhà phát triển hoặc module giả mạo có tên gọi là hàm serialization/deserialization có thể ngăn chặn điều này thông qua bộ lọc serialization được bổ sung trên Java vào năm 2016 và sẽ chặn hoàn toàn các hoạt động này.
Vấn đề bảo mật serialization/deserialization
Các cuộc tấn công thông qua các hoạt động serialization/deserialization được biết đến trong nhiều năm qua, dưới dạng này hay dạng khác, và trở thành vấn đề quan trọng vào đầu năm 2015, khi 2 nhà nghiên cứu là Chris Frohoff và Gabriel Lawrence phát hiện lỗ hổng deserialization trong Apache Commons Collection, ứng dụng Java khá 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, cho thấy cách thức kẻ tấn công có thể sử dụng lỗ hổng deserialization trong các ứng dụng Java khi các 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.
Thử nghiệm của họ cho thấy kẻ tấn công có thể tải lên các dữ liệu độc hại bên trong các ứng dụng Java phổ biến như WebLogic, WebSphere, JBoss, Jenkins và OpenNMS. Dữ liệu này sẽ được tuần tự hóa và lưu trữ bên trong cơ sở dữ liệu hoặc bộ nhớ, nhưng khi ứng dụng deserialize các dữ liệu này, các ứng dụng cũng sẽ thực thi các mã độc hại bổ sung.
Lỗ hổng này đã gây ảnh hưởng lớn đến hệ sinh thái Java vào năm 2016, trong đó ảnh hưởng đến 70 thư viện Java khác nhau, thậm chí còn được sử dụng để xâm nhập 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 cũng đã phát hành các 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 cũng đã làm việ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, với hơn 2.600 dự án được vá. Google gọi lỗ hổng này là Mad Gadget, tuy nhiên nó được biết đến với tên gọi là Java Apocalypse.
Trong khi các vấn đề bảo mật serialization/deserialization trong Java được biết đến trong suốt thời gian dài, lỗ hổng Java Apocalypse cảnh báo các công ty và cộng đồng Java cần chú ý đến cách mà họ serialize và deserialize các dữ liệu của mình.
Lỗ hổng Serialization là vấn đề lớn trong Java
Trả lời với InfoWorld, Reinhold nhấn mạnh các vấn đề serialization chiếm 1/3 hoặc thậm chí là 1/2 trong tổng số tất cả các lỗi Java được biết đến.
Nhận định của Reinhold hoàn toàn đúng. Chẳng hạn như trong bản cập nhật bảo mật tháng 1/2018, Oracle đã sửa 237 lỗ hổng bảo mật, trong đó 28.5% là giải quyết các hoạt động deserialization không an toàn.
Vấn đề này cũng khá phổ biến với các công ty. Theo báo cáo của ShiftLeft tiết lộ khá nhiều lỗ hổng serialization/deserialization được phát hiện trên số lượng lớn các SDK của nhà cung cấp SaaS.
Chỉ một lỗi deserialization Apache Struts (Java) hồi năm ngoái đã ảnh hưởng đến 65% tất cả các công ty trong danh sách Fortune 100, cho thấy việc thực thi dữ liệu serialize phổ biến như thế nào và làm thế nào mà một lỗ hổng có thể phá vỡ 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, 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 là một trong những game bắn súng sinh tồn được đông đảo người chơi nhất hiện nay, tuy nhiên bạn sẽ thấy được các vấn đề về hiệu suất của trò chơi khiến cho trải nghiệm PUBG của bạn không được trọn vẹn. Không muốn để Fornite liên tục vượt mặt mình, PUBG hứa hẹn tung các bạn cập nhật hiệu suất lớn trong thời gian tới. Các bạn có thể tham khảo thêm tại bài viết "PUBG hứa hẹn tung các bạn cập nhật hiệu suất lớn" được chia sẻ trên Taimienphi.vn nhé.