Bảo mật & quyền riêng tư

Giả định lỗ hổng: giám sát hành vi microservice để đảm bảo an ninh

Một bài đăng trên Kubernetes Blog năm 2023 lập luận rằng tất cả các microservice đều dễ bị tổn thương. Bài viết đề xuất phân tích hành vi an ninh nhằm phát hiện và chặn các cuộc tấn công bằng cách giám sát mẫu tương tác giữa client và service.

A magnifying glass inspecting a glass cube with circuit lines, revealing hidden red warnings.
Hình ảnh: Kubernetes Blog, giấy phép CC BY 4.0

Được dịch tự động từ bản gốc tiếng Anh.

Trong một bài đăng trên Kubernetes Blog vào tháng 1 năm 2023, David Hadas từ IBM Research Labs đã lập luận rằng các nhà phát triển phải chấp nhận thực tế là các microservice của họ vốn dĩ dễ bị tổn thương. Ông đề xuất chuyển trọng tâm từ việc xây dựng các hệ thống bất khả xâm phạm sang giám sát các bất thường về hành vi, vốn là tín hiệu cho thấy nỗ lực khai thác lỗ hổng.

Chuyện gì đã xảy ra

Đầu tư vào an ninh mạng đã tăng trưởng hàng năm, nhưng số lượng các sự cố an ninh mạng thành công vẫn tiếp tục gia tăng. Hadas lưu ý rằng xu hướng này cho thấy các chiến lược truyền thống tập trung vào việc loại bỏ mọi điểm yếu đang thất bại. Các công cụ tấn công ngày càng trở nên tinh vi hơn, và động lực tài chính dành cho kẻ tấn công đảm bảo rằng chúng sẽ luôn tìm được điểm xâm nhập nếu có. Do đó, việc dựa vào tạo ra một dịch vụ hoàn toàn không có lỗ hổng không còn là một chiến lược khả thi.

Bài viết cho rằng các tổ chức nên thừa nhận một cách chủ động rằng dịch vụ của họ chứa những điểm yếu chưa được biết đến. Thay vì cố gắng loại bỏ tất cả các lỗ hổng, điều thường không thể thực hiện trong thực tế, các nhóm nên tập trung vào việc ngăn chặn các lỗ hổng đó bị khai thác. Nếu kẻ tấn công không thể tận dụng thành công một điểm yếu, rủi ro vẫn chỉ mang tính lý thuyết chứ không trở thành hiện thực. Sự thay đổi tư duy này dịch chuyển vành đai phòng thủ từ tính toàn vẹn của mã nguồn sang hành vi lúc chạy (runtime).

Hadas giới thiệu khái niệm "Phân tích Hành vi An ninh" (Security-Behavior Analytics) như là cơ chế chính cho phương pháp tiếp cận mới này. Bằng cách phân tích cách các client tương tác với các service và cách các service phản hồi, các nhóm có thể phát hiện những bất thường cho thấy một cuộc tấn công đang diễn ra. Phương pháp này không yêu cầu phải biết trước lỗ hổng cụ thể; nó chỉ cần nhận ra rằng tương tác hiện tại lệch khỏi các chuẩn mực dự kiến.

Cách thức hoạt động

Giám sát hành vi an ninh dựa trên tính dự đoán được của các tương tác microservice. Trong một hệ thống được thiết kế tốt, các client gửi các yêu cầu có cấu trúc, đều đặn, và các service phản hồi theo những cách nhất quán. Một cuộc khai thác, chẳng hạn như SQL injection, buộc hệ thống phải hành xử bất thường. Ví dụ, một client độc hại có thể gửi tên người dùng chứa các ký tự đặc biệt như dấu cách hoặc dấu bằng, điều mà người dùng bình thường không bao giờ làm. Tương tự, service có thể mất nhiều thời gian hơn để phản hồi hoặc trả về các tập dữ liệu lớn bất thường khi xử lý yêu cầu như vậy.

Figure from the original article: Giả định lỗ hổng: giám sát hành vi microservice để đảm bảo an ninh
Hình từ bài viết gốc · Kubernetes Blog · CC BY 4.0

Bằng cách giám sát những sai lệch này, các công cụ an ninh có thể chặn các cuộc tấn công ở nhiều giai đoạn. Giám sát phía client phát hiện các mẫu yêu cầu bất thường trước khi chúng tiếp cận logic ứng dụng. Giám sát phía service xác định các lệnh gọi nội bộ bất thường, thời gian phản hồi hoặc đầu ra dữ liệu. Kết hợp cả hai lớp tạo ra một hàng phòng thủ vững chắc khiến nhiều lỗ hổng trở nên không thể khai thác, ngay cả khi mã nguồn bên dưới vẫn còn lỗi. Kẻ tấn công phải tạo ra một cuộc khai thác mô phỏng hoàn hảo hành vi bình thường, điều này khó khăn hơn nhiều so với việc tìm kiếm một lỗi mã nguồn.

Phương pháp này đặc biệt hiệu quả trong kiến trúc microservice so với monolith. Các ứng dụng monolithic đan xen nhiều chức năng khác nhau, khiến việc phân biệt giữa các loại yêu cầu và hành vi nội bộ trở nên khó khăn. Microservices, theo thiết kế, có các ngữ cảnh bị giới hạn (bounded contexts) và giao diện rõ ràng. Tính mô-đun này phơi bày lưu lượng truy cập nội bộ và xác định các kỳ vọng nghiêm ngặt cho từng thành phần, giúp các quan sát viên dễ dàng phát hiện bất thường trong các service cụ thể mà không bị nhiễu bởi các quy trình không liên quan.

Chi tiết chính

  • Bài viết xác định bốn giai đoạn trong vòng đời dịch vụ đòi hỏi các chiến lược giám sát khác nhau: hoạt động bình thường, tồn tại CVE đã biết, khả năng khai thác đang hoạt động và lạm dụng pod.
  • Trong giai đoạn "Dễ bị tổn thương", khi một CVE được công bố nhưng việc vá lỗi mất vài tuần, giám sát có thể chặn các yêu cầu khớp với mẫu lỗ hổng cụ thể.
  • Ở giai đoạn "Có thể khai thác", các công cụ có thể lọc lưu lượng truy cập đầu vào dựa trên chữ ký khai thác đã biết để ngăn chặn việc thực thi.
  • Nếu một đối tượng xấu lạm dụng một pod, hệ thống có thể xác định instance bị xâm nhập và khởi động lại nó trong khi vẫn giữ các pod khỏe mạnh đang chạy.
  • Guard, một dự án mã nguồn mở thuộc dự án Knative của CNCF, được trích dẫn như một công cụ cung cấp giám sát hành vi an ninh độc lập này cho các workload HTTP trên Kubernetes.
  • Kiến trúc microservice về bản chất phù hợp hơn với việc giám sát này vì tính mô-đun của nó phơi bày các ranh giới rõ ràng và các mẫu tương tác có thể dự đoán được.

Tại sao điều này quan trọng

Đối với các kỹ sư phần mềm và lãnh đạo kỹ thuật, góc nhìn này giảm bớt áp lực phải đạt được sự an toàn mã nguồn hoàn hảo, vốn thường là một mục tiêu phi thực tế. Thay vào đó, nó nhấn mạnh vào khả năng phục hồi vận hành. Bằng cách chấp nhận rằng các lỗ hổng sẽ tồn tại, các nhóm có thể ưu tiên xây dựng các cơ chế phát hiện và phản hồi vào hạ tầng của họ. Điều này phù hợp với các nguyên tắc Zero Trust, nơi niềm tin không bao giờ được giả định và việc xác minh diễn ra liên tục.

Figure from the original article: Giả định lỗ hổng: giám sát hành vi microservice để đảm bảo an ninh
Hình từ bài viết gốc · Kubernetes Blog · CC BY 4.0

Việc triển khai an ninh dựa trên hành vi cũng thay đổi cách các nhóm nhìn nhận phản ứng sự cố. Thay vì chờ đợi một bản vá để sửa một CVE đã biết, họ có thể triển khai các quy tắc hành vi để giảm thiểu mối đe dọa ngay lập tức. Điều này cho phép các dịch vụ vẫn trực tuyến và hoạt động trong khi các nhóm an ninh giải quyết nguyên nhân gốc rễ. Nó biến an ninh từ một chức năng kiểm soát cổng (gatekeeping) thành một biện pháp bảo vệ vận hành liên tục.

Hơn nữa, phương pháp này tận dụng các lợi ích hiện có của microservices. Các nhóm đã đầu tư vào khả năng quan sát (observability) và giám sát vì lý do hiệu suất. Việc mở rộng các công cụ này để bao gồm phân tích hành vi an ninh thêm một lớp bảo vệ mà không đòi hỏi phải đại tu toàn bộ kiến trúc. Nó biến dữ liệu telemetry tiêu chuẩn thành một tài sản an ninh, giúp khoản đầu tư vào khả năng quan sát sinh lời gấp đôi.

Bạn có thể làm gì

  • Kiểm toán thiết lập giám sát hiện tại của bạn để xem liệu nó có thu thập siêu dữ liệu chi tiết về yêu cầu và phản hồi cần thiết cho phân tích hành vi hay không.
  • Xác định các hành vi cơ sở (baseline) cho các microservice quan trọng của bạn, bao gồm cấu trúc yêu cầu điển hình, thời gian phản hồi và khối lượng dữ liệu.
  • Triển khai cảnh báo cho các sai lệch so với các cơ sở này, chẳng hạn như các bộ ký tự bất thường trong trường đầu vào hoặc sự gia tăng đột biến trong kích thước payload phản hồi.
  • Khám phá các công cụ như Guard từ dự án Knative để thêm giám sát hành vi an ninh chuyên dụng vào các cụm Kubernetes của bạn.
  • Phát triển các playbook để tự động khởi động lại các pod bị xâm nhập khi phát hiện lạm dụng, đảm bảo tính liên tục của dịch vụ.

Công cụ từ cửa hàng Bytechap

Đọc tiếp

Xây dựng với AI

Việc tái tạo mô hình OLMo 3 7B trên TPU tiết lộ các lỗi ẩn trong trình tải dữ liệu

Một nghiên cứu tình huống của Google đã tái tạo thành công mô hình OLMo 3 của AI2 trên các bộ xử lý TPU, khớp với các chỉ số hiệu suất nhưng đồng thời phát hiện ra những lỗi phân mảnh dữ liệu nghiêm trọng khiến việc ghi nhớ dữ liệu bị nhầm lẫn là sự cải thiện.

Tất cả bài viết