intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

So sánh các công cụ phát hiện lỗ hổng Java Insecure Deserialization được sử dụng trong kiểm thử bảo mật

Chia sẻ: Phó Cửu Vân | Ngày: | Loại File: PDF | Số trang:6

5
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài viết "So sánh các công cụ phát hiện lỗ hổng Java Insecure Deserialization được sử dụng trong kiểm thử bảo mật" trình bày về cách áp dụng và so sánh các công cụ được sử dụng trong quá trình kiểm thử xâm nhập dành riêng cho lỗ hổng bảo mật Java Insecure Deserialization. Các công cụ đó bao gồm: Ysoserial, Gadget Inspector, Marshalsec, Joogle. Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: So sánh các công cụ phát hiện lỗ hổng Java Insecure Deserialization được sử dụng trong kiểm thử bảo mật

  1. Hội nghị Quốc gia lần thứ 26 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2023) SO SÁNH CÁC CÔNG CỤ PHÁT HIỆN LỖ HỔNG JAVA INSECURE DESERIALIZATION ĐƯỢC SỬ DỤNG TRONG KIỂM THỬ BẢO MẬT Lê Thị Trang Linh và Phạm Đức Long Khoa Công nghệ thông tin, Đại học Điện Lực Email:tranglinh2011@gmail.com, phmclong@gmail.com Abstract— Những năm gần đây, xu hướng phát triển của các ứng dụng web ngày càng gia tăng từ đó dẫn tới sự gia tăng dữ liệu được lưu chuyển trên Internet. Tuy nhiên nguy cơ tồn tại song hành của sự phát triển này chính là việc lộ lọt các dữ liệu nhạy cảm từ chính các ứng dụng web. Dữ liệu nhạy cảm này có thể bị truy cập trái phép nếu attacker khai thác được các lỗ hổng bảo mật của ứng dụng web. Do đó, việc kiểm thử xâm nhập (Penetration Test) là điều cần thiết đối với bất kì ứng dụng web nào. Kiểm thử phần mềm (Software Testing) là quá trình kiểm tra, xác minh và đánh giá phần mềm để xác định xem nó có hoạt động đúng như yêu cầu đã đặt ra hay không. Trong khi đó, kiểm thử xâm nhập là một phần Hình 1. Cơ chế Serialization và Deserialization [16] của kiểm thử phần mềm, tuy nhiên tập trung hơn vào việc xác định và khai thác các lỗ hổng bảo mật để từ đó Nguy cơ tiềm ẩn trong 2 cơ chế này đến từ việc dữ đưa ra các biện pháp bảo mật cần thiết nhằm bảo đảm liệu được deserialize đến từ nguồn không an toàn. Thật rằng phần mềm và hệ thống không bị xâm nhập và truy cập trái phép. Trong bài này chúng tôi sẽ trình bày về vậy, kẻ tấn công (attacker) hoàn toàn có thể tự tạo một cách áp dụng và so sánh các công cụ được sử dụng trong luồng byte và truyền nó vào máy chủ từ xa cho phép quá trình kiểm thử xâm nhập dành riêng cho lỗ hổng bảo deserialize, qua đó kiểm soát luồng thực thi của ứng mật Java Insecure Deserialization. Các công cụ đó bao dụng trên máy chủ thông qua luồng byte bằng cách tận gồm: Ysoserial, Gadget Inspector, Marshalsec, Joogle. dụng và xâu chuỗi các mã Java, các mã Java riêng lẻ gọi là gadget, còn khi các gadget được xâu chuỗi lại Keywords- Penetration Test, Gadget Chain, Java với nhau thì được gọi là gadget chain. Insecure Deserialization, Ysoserial, Gadget Inspector, Với mức độ ảnh hưởng nguy hiểm và đa dạng như: Marshalsec, Joogle. RCE [4], Denial of Service (DoS) [5],… thì rất nhiều công cụ đã được sinh ra để phục kiểm thử xâm nhập I. GIỚI THIỆU dành riêng cho loại lỗ hổng này như: Ysoserial [6], Cơ chế serialization [1] trong Java cho phép chuyển Gadget Inspector [7], Marshalsec [8], Joogle [9]. Trong đổi trạng thái của đối tượng (object) trở thành một bài báo này chúng tôi sẽ trình bày cơ chế hoạt động và luồng byte (bytestream) để tiến hành truyền dữ liệu đa so sánh các công cụ trên trong kiểm thử xâm nhập để nền tảng hoặc đa tiến trình hoặc để lưu trữ dài hạn [2]. nâng cao tính bảo mật cho các ứng dụng web sử dụng Ngược lại với serialization, cơ chế deserialization được ngôn ngữ lập trình Java. sử dụng để khôi phục lại trạng thái của object từ luồng byte. II. CƠ CHẾ HOẠT ĐỘNG CỦA CÁC CÔNG CỤ Ysoserial là công cụ được công bố trong bài trình bày Marshalling Pickles [10], [11] tại hội thảo AppSecCali 2015. Công cụ này là một tập hợp các gadget chain được phát hiện trong các thư viện Java nổi tiếng, trong điều kiện thích hợp nó có thể dùng để khai thác các ứng dụng Java thực hiện deserialize không an toàn. Công cụ này có thể phục vụ cả trong Blackbox ISBN 978-604-80-8932-0 500
  2. Hội nghị Quốc gia lần thứ 26 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2023) Penetration Testing và Whitebox Penetration Testing, tuy nhiên khi đã biết chắc chắn được thư viện mà ứng Bắt đầu dụng cần kiểm thử đang dùng là gì thì việc sử dụng ysoserial trong Whitebox Penetration Testing chỉ để tăng thêm sự chắc chắn trong việc ứng dụng có lỗ hổng Chỉ định các hay không. Cơ chế hoạt động của công cụ Ysoserial thông số ứng với được mô phỏng ở hình 2. kiểu gadget chain muốn tìm Bắt đầu Tool tìm kiếm các kho chứa mã nguồn mở trên internet dựa trên thông số đã cho Chỉ định command và Tool tiến hành trích xuất và gadget chain phân tích các mã nguồn mở để xác định các gadget có thể sử dụng được Tool tiến hành tạo ra payload Kết thúc Kết thúc Hình 3. Cơ chế hoạt động của công cụ Joogle Việc có thể truy vấn từ nhiều thư viện mã Hình 2. Cơ chế hoạt động của công cụ Ysoserial nguồn mở là rất tiện lợi nhưng điểm hạn chế của Joogle chính là kiểm thử viên phải tự truyền các thông số và Payload được tạo ra sẽ được kiểm thử viên tiến hành chạy tool hoàn toàn thủ công. Sau khi tool (pentester) tiến hành gửi vào nơi nhận dữ liệu dạng cho ra các gadget thì kiểm thử viên phải tiến hành kiểm serialize trên ứng dụng cần kiểm thử. Nếu ứng dụng có tra thủ công để xác định xem các gadget có thể sử dụng lỗ hổng thì payload sẽ thực thi gadget chain và kích trong bối cảnh ứng dụng cần kiểm thử không, nếu cần hoạt các command đã chỉ định ban đầu, command này họ sẽ sử dụng các gadget này để xây dựng nên gadget có thể mang mục đích để RCE [4]. Ngược lại nếu các chain thực sự sử dụng được. command này không được kích hoạt thì có thể chỉ định command khác hoặc gadget chain khác để tạo ra Gadget Inspector là công cụ được công bố payload mới, nếu như thử qua tất cả các command và trong bài trình bày Automated Discovery of gadget chain đều không hoạt động thì có thể tạm thời Deserialization Gadget Chains [13], [14], [15] tại hội đánh giá là ứng dụng không bị lỗ hổng. thảo DEFCON 26 năm 2018. Công cụ này cũng sử dụng cơ chế phân tích tĩnh, nó kiểm tra trong các thư Joogle là công cụ phân tích tĩnh mã nguồn của viện nằm trên Classpath và các thư viện tích hợp sẵn các dự án mã nguồn mở trên GitHub, GitLab, của ứng dụng, từ đó tự động tìm ra các gadget chain có Bitbucket,… để tìm ra các gadget nằm trong các mã thể sử dụng để khai thác trong ứng dụng. Gadget nguồn này. Mỗi khi khởi động, Joogle sẽ truy vấn các Inspector giúp kiểm thử viên nhanh chóng đánh giá gadget chain giống với các thông số mà kiểm thử viên mức độ ảnh hưởng của lỗ hổng deserialization trong đã chỉ định. Công cụ này có thể phục vụ cả Blackbox ứng dụng và lên phương án khắc phục. Công cụ này và Whitebox Penetration Testing. Cơ chế hoạt động được sử dụng trong Whitebox Penetration Testing. Cơ của công cụ Joogle được mô phỏng ở hình 3. chế hoạt động của Gadget Inspector được mô tả trong hình 4. ISBN 978-604-80-8932-0 501
  3. Hội nghị Quốc gia lần thứ 26 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2023) Cấu trúc các thành phần trong mô hình thực nghiệm: Bắt đầu máy tính của kiểm thử viên, Web Server là đối tượng cần kiểm thử xâm nhập. Mục tiêu thực nghiệm: Kiểm tra xem web server có bị Đưa vào công cụ lỗ hổng Java Insecure Deserialization hay không. Nếu toàn bộ các tệp có thì thực hiện chiếm quyền máy chủ. jar, war của ứng dụng cần kiểm Khi kiểm thử một ứng dụng web, kiểm thử viên có thể thử thấy dấu hiệu nhận biết việc ứng dụng có sử dụng chức năng deserialization thông qua signature như: 1 luồng bytestream có chuỗi byte “ACED” ở đầu tiên, 1 Tool tiến hành phân tích các chuỗi ký tự được base64 encode có chuỗi “rO0AB” ở tệp jar, war để tìm ra các đầu. gadget chain có thể sử dụng được Kết thúc Hình 4. Cơ chế hoạt động của công cụ Gadget Inspector Marshalsec cũng là 1 công cụ bao gồm tập hợp các gadget chain trong các thư viện Java nổi tiếng. Điều này khá tương đồng với Ysoserial. Cơ chế hoạt động của Marshalsec cũng khá tương đồng với Ysoserial tuy Hình 6. Bytestream có chuỗi “aced” nằm ở đầu [17] nhiên Marshalsec có hỗ trợ nhiều thư viện deserialization hơn. Điểm hạn chế của Ysoserial và Marshalsec là đều sử dụng các gadget chain đã biết. III. THỰC NGHIỆM Hình 7. Chuỗi ký tự được base64 encode có chuỗi 1. Sử dụng Ysoserial để thực hiện Blackbox “rO0AB” nằm ở đầu Penetration Testing: Payload của người dùng thông thường Mô tả chi tiết cấu trúc các thành phần trong r00AB mô hình thực nghiệm ở hình 5: Thông tin của người dùng - Máy của kiểm thử viên đóng vai trò kẻ tấn công. - Web Server là đối tượng cần kiểm thử xâm nhập. 3. Lấy thông có được sau khi deserialize hiển thị cho người dùng Web server có endpoint là “/deserialize” có chức năng: 2. Deserialize phần payload mà người dùng gửi tới nhận vào payload (payload là dữ liệu được serialize có chứa thông tin người dùng) và thực hiện deserialize Máy của người dùng thông thường Web Server Payload của kiểm thử viên ` r00AB phần payload này để lấy ra thông tin bên trong và hiển Command của kiểm thử viên thị thông tin bên trong lại cho người dùng. Lưu ý: giao thức HTTP không hỗ trợ truyền tải dữ liệu serialize dạng bytestream nên dữ liệu này phải được base64 encode. - Web Server chạy hệ điều hành Kali Linux và phiên Máy của kiểm thử viên Web Server cần kiểm thử 3. Deserialize phần payload mà kiểm thử bản java 8. -Web Server chứa tệp “secret.txt” nằm ở thư mục viên gửi tới, kích hoạt gadget chain và thực thi command của kiểm thử viên “home/kali/Desktop” chứa thông tin nhạy cảm như tài khoản gmail. Netcat Gadget Chain Hình 5. Mô hình mô phỏng quá trình thực hiện kiểm thử xâm nhập dựa trên công cụ Ysoserial. Hình 8. Thông tin nhạy cảm bên trong tệp secret.txt nằm ở web server ISBN 978-604-80-8932-0 502
  4. Hội nghị Quốc gia lần thứ 26 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2023) Sau khi gửi payload, cổng được mở trên netcat được web server kết nối tới, qua đó kiểm thử viên đã chiếm được quyền điều khiển của web server và đọc được các thông tin nhạy cảm từ tệp “secret.txt”. Hình 9. Request chứa payload người dùng gửi tới endpoint “/deserialize” Hình 10. Response được trả về khi người dùng gửi tới endpoint “/deserialize” ở hình 9 Kiểm thử viên mở một cổng trên netcat để các máy khác có thể kết nối vào cổng này, mục tiêu ở đây là cho web server kết nối vào đây. Hình 11. Kiểm thử viên mở cồng 8888 trên netcat Hình 14. Kiểm thử viên chiếm được quyền điều khiển Kiểm thử viên tiến hành tạo ra payload thông qua của web server ysoserial. Bên trong payload chứa command với mục 2. Sử dụng GadgetInspector để thực hiện Whitebox đích để web server kết nối với cổng trên netcat mà Penetration Testing: kiểm thử viên đã mở, nếu kết nối này thành công thì Đóng gói ứng dụng cần kiểm thử vào tệp “.jar” hoặc kiểm thử viên có thể chiếm quyền điều khiển web “.war”. Trong phần mô phỏng, ứng dụng được đóng server. Sau khi tạo xong payload, tiến hành gửi tới gói vào tệp “demoysoserial-0.0.1-SNAPSHOT.jar”. endpoint “/deserialize” của web server. Đưa tệp “.jar” này vào làm tham số khi chạy Gadget Inspector. Hình 15. Câu lệnh chạy gadget inspector Sau khi chạy, kết quả cho ra các gadget chain được lưu trong tệp “gadget-chains.txt” Hình 12. Request chứa payload của kiểm thử viên gửi tới endpoint “/deserialize” Hình 16. Các gadget chain được tìm ra bởi gadget inspector. Kiểm thử viên cần đánh giá xem các gadget chain được Hình 13. Response được trả về khi kiểm thử viên gửi tìm ra có thể sử dụng được không và đánh giá mức độ tới endpoint “/deserialize” ở hình 12 ảnh hưởng của các gadget chain được tìm ra. Nếu gadget chain thực sự sử dụng được thì cần lên kế hoạch để khắc phục. ISBN 978-604-80-8932-0 503
  5. Hội nghị Quốc gia lần thứ 26 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2023) 3. Sử dụng Joogle để thực hiện Blackbox/Whitebox ứng dụng mục tiêu đang sử dụng, qua đó tạo nên Penetration Testing: gadget chain thực sự sử dụng được. Joogle cho ta 1 vài thông số để thực hiện truy vấn ra Trong Whitebox Penetration Testing, kiểm thử viên đã các gadget, công cụ này cũng cho phép ta lưu thông tin biết chắc chắn ứng dụng cần kiểm thử của mình đang các gadget này ra tệp CSV. dùng thư viện nào, phiên bản java nào thì sẽ dễ dàng hơn cho việc truyền các thông số để thực hiện truy vấn. Hạn chế của công cụ này chính là việc thực hiện truy vấn và lọc ra các gadget đều phải thực hiện thủ công. 4. Sử dụng Marshalec để thực hiện Blackbox Hình 17. Thông tin các gadget được lưu trong tệp CSV Penetration Testing cũng gần tương tự như khi sử dụng Ysoserial. Tuy nhiên, trong thực tế có nhiều thư viện Trong Blackbox Penetration Testing, khi kiểm thử viên thực hiện Deserialization, vậy nên tùy vào việc đối nhận biết được ứng dụng mục cần kiểm thử đang sử tượng cần kiểm thử sử dụng thư viện Deserialization dụng phiên bản java nào hoặc sử dụng thư viện java nào thì ta có thể lựa chọn cân nhắc giữa Marshalsec và nào thì có thể sử dụng Joogle để truy vấn ra các gadget Ysoserial. có thể sử dụng được ở phiên bản và thư viện java mà IV. SO SÁNH CÁC CÔNG CỤ TRONG KIỂM THỬ XÂM NHẬP So sánh hai công cụ được phục vụ trong Blackbox Penetration Testing: Ysoserial Marshalsec Giống nhau Sử dụng để tạo payload serialized Cung cấp chức năng cho phép thực hiện Không cung cấp tấn công trên các hệ thống sử dụng cơ chế serialization Cung cấp khả năng Khác nhau thực hiện các kịch bản tấn công phức tạp hơn và kiểm tra Không cung cấp nhiều khía cạnh của việc sử dụng serialization trong một hệ thống So sánh hai công cụ được phục vụ trong Whitebox Penetration Testing: Joogle Gadget Inspector Giống nhau Sử dụng cơ chế static analysis Phân tích mã nguồn Phân tích mã nguồn của chính ứng dụng các open-source để được kiểm thử viên tìm gadget chain chỉ định để tìm gadget chain Khác nhau Kiểm thử viên phải Kiểm thử viện truyền các thông số không phải lặp lại và tiến hành chạy nhiều bước thủ tool hoàn toàn thủ công, tool chỉ cần công trong nhiều lần chạy một lần để có để lọc ra kết quả được kết quả Việc so sánh các công cụ sẽ cung cấp thêm thông tin về các công cụ, có thể hỗ trợ việc kiểm thử xâm nhập lỗ hổng Java Insecure Deserialization, qua đó có thể dễ dàng đưa ra lựa chọn công cụ phù hợp để thực hiện kiểm thử. Về hướng phát triển trong thời gian sắp tới, chúng tôi sẽ xây dựng hệ đa chuyên gia hỗ trợ ra quyết định xác định lỗ hổng dựa trên sự kết hợp các bộ công cụ trên và tối ưu hoá các tham số trong các công cụ để nâng cao hiệu năng. ISBN 978-604-80-8932-0 504
  6. Hội nghị Quốc gia lần thứ 26 về Điện tử, Truyền thông và Công nghệ Thông tin (REV-ECIT2023) [11] Chris Frohoff and Gabe Lawrence, “Marshalling Pickles”, TÀI LIỆU THAM KHẢO https://www.youtube.com/watch?v=KSA7vUkXGSg in AppSecCali, 2015. [1] M. Herlihy and B. Liskov, “A value transmission method for abstract data types,” ACM Trans. Program. Lang. Syst., vol. 4, [12] S. Esser, “Utilizing code reuse/rop in php application no. 4, pp. 527– 551, 1982. exploits,” in Proceedings of the Black Hat USA, 2010. [2] J. C. S. Santos, R. A. Jones, C. Ashiogwu, and M. Mirakhorli, [13] Ian Haken, “Automated Discovery of Deserialization Gadget “Serialization-aware call graph construction,” in Proceedings Chains”, https://www.youtube.com/watch?v=wPbW6zQ52w8 of the 10th ACM SIGPLAN International Workshop on the in DEFCON 26, 2018. State Of the Art in Program Analysis (SOAP). ACM, 2021, [14] Ian Haken, “Automated Discovery of Deserialization Gadget pp. 37–42. Chains”, https://i.blackhat.com/us-18/Thu-August-9/us-18- [3] I.Sayar (IRIT), A.Bartel, E.Bodden, Y.L.Traon, "An In-depth Haken-Automated-Discovery-of-Deserialization-Gadget- Study of Java Deserialization Remote-Code Execution Chains.pdf in DEFCON 26, 2018. Exploits and Vulnerabilities" [15] Ian Haken, “Automated Discovery of Deserialization Gadget [4] Svoboda, “Exploiting java deserialization for fun and profit,” Chains”, https://i.blackhat.com/us-18/Thu-August-9/us-18- 2016. Haken-Automated-Discovery-of-Deserialization-Gadget- [5] Y. Wei, X. Sun, L. Bo, S. Cao, X. Xia, and B. Li, “A Chains-wp.pdf in DEFCON 26, 2018. comprehensive study on security bug characteristics,” J. Softw. [16] A. Issac. Serialization Filtering — Deserialization Evol. Process., vol. 33, no. 10, 2021 Vulnerability Protection in Java, 2021. URL [6] Ysoserial, 2023, https://github.com/frohoff/ysoserial https://medium.com/tech-learnings/serialization-filtering- deserialization-vulnerability-protection-in-java-349c37f6f4 [7] Gadget Inspector, 2023, https://github.com/JackOfMostTrades/gadgetinspector [17] gyyyy@Orion Attack and Defense Laboratory, https://paper.seebug.org/792/ [8] Marshalsec, 2023, https://github.com/mbechler/marshalsec [9] Joogle, 2023, https://github.com/Contrast-Security- OSS/joogle. [10] Chris Frohoff and Gabe Lawrence, “Marshalling Pickles”, https://www.slideshare.net/frohoff1/appseccali-2015- marshalling-pickles in AppSecCali, 2015. ISBN 978-604-80-8932-0 505
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2