Bỏ qua

Global CEL Rules

Global CEL Rules

Giới thiệu Common Expression Language (CEL)

CEL (Common Expression Language) là ngôn ngữ biểu thức (expression language) được Google phát triển, dùng để đánh giá điều kiện logic một cách linh hoạt, ngắn gọn và hiệu quả.
CEL thường được sử dụng trong các hệ thống cần xử lý rule động, lọc sự kiện, kiểm tra điều kiện, hoặc tùy biến hành vi mà không cần biên dịch lại mã nguồn.

Cấu trúc tổng thể của file CEL rule

metadata:
  author: "Blue"
  email: "blue@team.com"

rules:
- uuid: "00000000-0000-0000-0000-000000000001"
    description: "Suspicious activities alerts and boost level to 13"
    filter_expr: "alert.rule.description.contains('suspicious activities')"
    transform_expr: "13.0"
    metadata:
    note: "Boost alerts to level 13"
    field: "rule.level"

- uuid: "00000000-0000-0000-0000-000000000004"
    description: "Drop agent event queue is flooded"
    filter_expr: "alert.rule.description.contains('Agent event queue is flooded')"
    transform_expr: ""
    metadata:
    note: "Drop agent event queue is flooded"
    action: "drop"

2.1 Metadata

metadata:
  author: "Blue"
  email: "blueteam@netnam.com"

Mục đích: Cung cấp thông tin mô tả về người tạo, giúp dễ quản lý hoặc chia sẻ rule.

Các trường phổ biến:

  • author: Tên người viết hoặc nhóm chịu trách nhiệm.
  • email: Liên hệ hỗ trợ hoặc báo cáo lỗi.

(Phần này không ảnh hưởng đến logic xử lý, chỉ để mô tả.)

2.2 Rule

Danh sách các rule được định nghĩa. Mỗi rule có cấu trúc chuẩn sau:

uuid: "<mã định danh duy nhất>"
description: "<mô tả ngắn về mục đích rule>"
filter_expr: "<điều kiện CEL dùng để lọc sự kiện>"
transform_expr: "<giá trị hoặc hành động thay đổi>"
metadata:
  note: "<ghi chú thêm>"
  field: "<tên trường cần thay đổi>"
  action: "<hành động đặc biệt>"

Cấu hình CEL rule trên portal

CEL rule là tập hợp điều kiện logic được viết bằng CEL, dùng để lọc hoặc kích hoạt cảnh báo dựa trên nội dung sự kiện (event).
Điểm mạnh là cấu trúc linh hoạt, dễ thay đổi — bạn có thể điều chỉnh điều kiện phát hiện mà không cần chỉnh sửa file rule XML/phức tạp.

  1. Vào Menu Rule & Decoder
  2. Chọn Global Rules
  3. Chỉnh sửa rule theo nhu cầu thực tế

3.1 Ví dụ minh họa

Rule 1: Nâng cấp mức cảnh báo

Khi event có mô tả chứa chuỗi “suspicious activities” → CEL rule sẽ gán rule.level = 13.

rules:
  uuid: "00000000-0000-0000-0000-000000000001"
  description: "Suspicious activities alerts and boost level to 13"
  filter_expr: "alert.rule.description.contains('suspicious activities')"
  transform_expr: "13.0"
  metadata:
    note: "Boost alerts to level 13"
    field: "rule.level"

Rule 2: Bỏ qua sự kiện tràn hàng đợi

Khi event chứa chuỗi “Agent event queue is flooded” → CEL rule sẽ drop (bỏ qua) sự kiện, không gửi lên cảnh báo.

uuid: "00000000-0000-0000-0000-000000000004"
description: "Drop agent event queue is flooded"
filter_expr: "alert.rule.description.contains('Agent event queue is flooded')"
transform_expr: ""
metadata:
  note: "Drop agent event queue is flooded"
  action: "drop"

Rule 3: Kết hợp nhiều sự kiện với logic OR ||

Giả sử trường hợp cần “drop” cảnh báo “ET SHELLCODE Rothenburg Shellcode” dưới đây, không hiện lên Portal:

Có thể thấy trong alert trường “rule.description” có chữ ET SHELLCODE Rothenburg Shellcode, như vậy filter_expr tương ứng là: alert.rule.description.contains(‘SHELLCODE Rothenburg Shellcode’ (luôn cần có chữ alert ở đầu)

Tương tự như vậy, với alert “GPL SHELLCODE x86 0xEB0C NOOP”

Ghép hai rule vào sử dụng operator OR ||. Rule dưới đây có nghĩa là drop nếu nội dung chứa GPL SHELLCODE hoặc SHELLCODE Rothenburg.

Rule 4: Kết hợp nhiều sự kiện với logic AND &&

Có thể kết hợp cả && và || như rule bên dưới. Rule dưới đây có nghĩa là khi manager.name chứa 20250825113021.292 và targetFilename hoặc Google Chrome hoặc Acrobat thì drop alert.

Tài liệu tham khảo

https://github.com/google/cel-spec/blob/master/doc/langdef.md