Chuyển đến nội dung chính
Một cuộc gọi tool đơn lẻ có thể trông hoàn toàn vô tội. Đọc một bản ghi CRM: được phép. Gọi một tool export: được phép. Chạm một host bên ngoài: được phép. Hình dạng của lần chạy — năm mươi lần đọc, rồi một export, rồi egress tới một host bạn chưa từng thấy vào 3 giờ sáng Chủ Nhật — mới là cuộc tấn công. Các verdict theo từng cuộc gọi phán xét mỗi cuộc gọi cô lập và không bao giờ thấy nó. Trang này đề cập hai cơ chế firewall theo dõi một lần chạy theo thời gian thay vì từng cuộc gọi một: quy tắc chuỗi (một chuỗi có thứ tự bạn soạn) và phát hiện bất thường hành vi (lệch khỏi mức bình thường đã học của workspace của bạn). Cùng nhau chúng là cách bạn phát hiện hành vi chuỗi tấn công của agent mà không quy tắc allow/deny đơn lẻ nào có thể bắt.
Mọi thứ ở đây được cấu hình trong console (Security → Firewall), mà các route quản lý dùng session / access token của bạn — không phải một relay key sk-orca-…. Các cuộc gọi /v1/* của agent bạn không thay đổi.

1. Tại sao quy tắc theo từng cuộc gọi bỏ sót chuỗi

Các tool globmệnh đề argument của firewall là phi trạng thái và xác định theo thiết kế — chúng quyết định một cuộc gọi, nhanh, trên hot path. Đó đúng là cái bạn muốn cho “block shell.exec rm -rf.” Nó đúng là sai cho một cuộc rò rỉ cháy-chậm nơi mỗi cuộc gọi riêng lẻ đều hợp pháp. Hai tool bổ trợ lấp khoảng trống:

Quy tắc chuỗi

Một quy tắc bạn soạn khớp một chuỗi có thứ tự các cuộc gọi trong một cửa sổ thời gian — “đọc hàng loạt → export → egress.” Bạn đặt tên mẫu.

Phát hiện bất thường

Firewall học hình dạng dùng tool bình thường của mỗi workspace và gắn cờ các lệch — vòng lặp retry, đường tool chưa-từng-thấy, và đột biến khối lượng/chi phí. Không quy tắc nào để soạn.

2. Quy tắc chuỗi: đặt tên chuỗi tấn công

Một quy tắc sequence sống bên trong một chính sách firewall như bất kỳ quy tắc nào khác, nhưng thay vì một tool_name_glob đơn nó mang một danh sách có thứ tự các bước. Mỗi bước là một tool glob với một min_count tùy chọn và một egress: true tùy chọn; các bước phải xảy ra theo thứ tự (xen kẽ với các cuộc gọi không liên quan là ổn) và cả chuỗi phải hoàn tất trong window_seconds.
{
  "label": "bulk-read-then-exfil",
  "verdict": "audit",
  "sequence": {
    "window_seconds": 600,
    "steps": [
      { "match": "crm.*",   "min_count": 50 },
      { "match": "*.export" },
      { "match": "*", "egress": true }
    ]
  }
}
Cái này kích hoạt khi một agent đọc 50+ bản ghi crm.*, rồi gọi bất kỳ tool *.export nào, rồi thực hiện bất kỳ cuộc gọi egress nào — tất cả trong vòng mười phút. Mỗi cuộc gọi tự thân sẽ qua; mẫu mới là tín hiệu.
Một chuỗi được đánh giá trên cuộc gọi hoàn tất nó. Vòng lặp quy tắc inline bỏ qua các quy tắc chuỗi (một cuộc gọi không thể thỏa một chuỗi nhiều bước); việc khớp chạy khi một cuộc gọi có thể là bước cuối của một chuỗi, tại đó firewall kéo các event gần đây của principal đó và kiểm tra chuỗi. verdict bạn đặt trên quy tắc là cái rồi xảy ra với cuộc gọi hoàn tất: audit ghi lại nó và cho qua, pending_approval giữ nó lại để con người xem xét, và deny block nó. Vậy một chuỗi có thể dừng cuộc gọi cuối của nó trong thời gian thực — chọn verdict cho khớp. Dùng audit khi bạn chỉ muốn phát hiện và cảnh báo; dùng pending_approval hoặc deny (hoặc ghép với một deny / quy tắc egress theo từng cuộc gọi) khi bạn cần một điểm dừng cứng.
Toàn bộ cú pháp trường sequencewindow_seconds: 0 cho không giới hạn thời gian, các mặc định min_count, ngữ nghĩa thứ tự bước — nằm trong schema quy tắc. Soạn các quy tắc chuỗi trong trình chỉnh sửa quy tắc của console; lưu là một hành động Developer+.

3. Phát hiện bất thường: lệch khỏi mức bình thường đã học

Trong khi các quy tắc chuỗi hỏi “chính mẫu cụ thể này có xảy ra không,” phát hiện bất thường hỏi “có bất cứ điều gì về lần chạy này bất thường với workspace này không.” Nó không cần quy tắc — firewall xây một baseline từ traffic của chính bạn và chấm điểm hoạt động live trên đó. Bốn loại hiện ra:
Khối lượng cuộc gọi theo-(tool, key) chấm điểm trên baseline đã học cho giờ-trong-tuần này. Một dòng hiện ra khi số đếm vượt một sàn tuyệt đối chạy cao so với baseline, hoặc khi z-score của nó vượt ngưỡng thống kê. Nên “100 cuộc gọi db.query vào 3 giờ sáng Chủ Nhật” nổi bật dù một đợt cùng kích thước vào 2 giờ chiều Thứ Ba thì không.
Cùng ý tưởng áp dụng cho chi tiêu: một tool đốt bội số chi phí baseline đã học cho giờ-trong-tuần này. Cảnh báo sớm denial-of-wallet — ghép nó với một quy tắc cap_cost để thực thi một trần cứng.
Một nhóm (conversation, tool, arguments) lặp lại nhiều lần trong một cửa sổ chật — một agent kẹt gọi cùng tool fail với cùng đối số lặp đi lặp lại, chứ không phải polling chậm hợp lệ.
Một chuyển tiếp tool_a → tool_b mà workspace này chưa bao giờ làm. Lần đầu một agent đi từ read_file thẳng tới http_fetch, cạnh đó sáng lên ngay cả khi cả hai tool đều được phép riêng lẻ.

Baseline giờ-trong-tuần

Baseline là một trung bình trượt 14 ngày chia theo giờ trong tuần (weekday × 24 + hour), nên Thứ Ba-14:00 được so sánh cụ thể với lịch sử Thứ Ba-14:00 trong quá khứ — không phải một trung bình mọi-thời-điểm phẳng vốn sẽ xóa nhịp điệu hàng ngày và hàng tuần thực của bạn. Một workspace hoàn toàn mới chưa có mức bình thường đã học vẫn bắt một cơn lũ hiển nhiên qua một sàn tuyệt đối, nên bạn được bảo vệ từ ngày đầu.
Feed báo cáo tên tool, key id đã che, số đếm, và một z-score — không bao giờ vật liệu key thô. Mỗi bất thường mang một biện pháp khắc phục đề xuất (rate_limit, review, hoặc block_tool) nên bước tiếp theo là một cú nhấp, không phải một phỏng đoán.

4. Một lượt đi cụ thể

Giả sử một prompt bị xâm phạm đẩy một trong các agent của bạn vào một vòng lặp thất bại chật, rồi dò một đường export nó chưa bao giờ chạm. Đây là cái bạn thấy — không quy tắc nào soạn trước:
1

Agent cư xử sai

Các hướng dẫn bị tiêm đẩy agent retry một db.query đang fail với đối số y hệt, rồi gọi report.export theo sau bởi một fetch đi ra ngoài — một đường mà workspace này chưa bao giờ chạy.
2

Mở feed bất thường

Trong Security → Firewall → Anomalies, lần chạy hiện ra một retry_loop trên db.query và một novel_path trên cạnh report.export → http_fetch. Đọc feed là một hành động Member — bất kỳ ai trong team đều có thể triage.
3

Xác nhận trong dấu vết events

Nhấp xuyên qua tới events loganalytics lần chạy để thấy chuỗi cuộc gọi chính xác, tương quan với lần chạy agent và conversation. Feed bất thường là Member-đọc-được, nhưng events log và dấu vết lần chạy mang xuất xứ cuộc-gọi-tool và là Developer+.
4

Chuyển phát hiện thành một quy tắc

Giờ bạn đã thấy chuỗi, hãy mã hóa nó: một deny trên export nguy hiểm, một egress allow-list trên fetch, hoặc một quy tắc chuỗi audit cả mẫu lần sau. Phát hiện bất thường tìm cái chưa biết; một quy tắc ghim cái đã biết.
Nếu feed ồn ào trong khi bạn tinh chỉnh — chẳng hạn một batch job hợp lệ thực sự đột biến mỗi Chủ Nhật — hãy snooze feed bất thường tối đa 7 ngày trong khi bạn điều tra. Snoozing là một hành động Developer+; cửa sổ được server-clamp nên phát hiện luôn tự quay lại.

5. Quy tắc chuỗi so với phát hiện bất thường

Chúng giải quyết các vấn đề kề nhau — chọn cái khớp với cái bạn biết:
Quy tắc chuỗiPhát hiện bất thường
Bạn soạnChuỗi chính xácKhông gì — nó học
BắtMột mẫu nhiều bước đã biếtCái chưa biết / bất thường
Hành độngÁp verdict của quy tắc lên cuộc gọi hoàn tất (audit / pending_approval / deny)Hiện ra trên feed
Một workspace trưởng thành chạy cả hai: phát hiện bất thường là radar hiện ra các chuỗi bạn không lường trước — chỉ hiện ra, không bao giờ block; các quy tắc chuỗi là cách bạn mã hóa những cái bạn có, nên chúng được gắn nhãn, theo dõi, và (với một verdict pending_approval hoặc deny) có thể quản trị cuộc gọi hoàn tất. Để có một điểm dừng cứng trên một cuộc gọi đơn bất kể chuỗi nào, dùng một verdict theo từng cuộc gọi.

6. RBAC & các route đằng sau feed

Feed bất thường và các quy tắc chuỗi nằm dưới các route quản lý firewall của workspace — session / access token của bạn, không bao giờ một relay key:
Method & pathVai tròMục đích
GET /api/workspace/firewall/anomaliesMemberĐọc feed bất thường (?window=).
POST /api/workspace/firewall/anomalies/snoozeDeveloper+Snooze feed ({until}, clamp về 7 ngày).
POST /api/workspace/firewall/rulesDeveloper+Tạo một quy tắc chuỗi (hoặc bất kỳ) dưới một chính sách.
POST /api/workspace/firewall/testDeveloper+Chạy thử một chính sách trên một cuộc gọi mẫu trước khi phụ thuộc vào nó.
Đọc feed mở cho mọi Member để cả team có thể triage; soạn quy tắc và snooze feed là các thao tác ghi Developer+, nhất quán với phần còn lại của mô hình RBAC firewall.

Đi đâu tiếp theo

Schema quy tắc

Toàn bộ trường sequence — steps, min_count, window_seconds, và mọi trường quy tắc khác.

Events log

Nơi các chuỗi đã khớp và bất thường đáp xuống — lọc theo lần chạy, bề mặt, và verdict.

Cap cost

Biến một tín hiệu burn_spike thành một trần chi tiêu cứng theo từng lần chạy.

Kiểm soát egress

Dừng bước rò rỉ cuối cùng của một chuỗi tại ranh giới mạng.
Để biết các playbook của kẻ tấn công mà các cơ chế này chống lại, xem tấn công theo chuỗi, rò rỉ dữ liệu, và quyền tự quyết quá mức. Để biết tham chiếu firewall sâu, xem Quy tắc Firewall.