Các công cụ lọc lưu lượng truy cập ở cấp ứng dụng (Tường lửa ứng dụng web, WAF) bảo vệ chống lại các cuộc tấn công có chủ đích, hack các ứng dụng web và trang web của công ty để đánh cắp và thay thế dữ liệu bí mật, đồng thời chặn các cuộc tấn công từ danh sách TOP 10 của OWASP và cố gắng gây ra sự từ chối dịch vụ (DoS) và DDoS). Tuy nhiên, họ có những sai sót. Làm cách nào để cải thiện hiệu suất WAF?
- Giới thiệu
- Làm việc WAF bằng chữ ký
- Nhược điểm của phương pháp chữ ký
- WAF hoạt động dựa trên mô hình hành vi
- Nhược điểm của mô hình hành vi
- Khó khăn khi phát hành bản phát hành ứng dụng web mới
- Ví dụ và mô tả về biểu thức chính quy
- Ví dụ tối ưu hóa chữ ký
- Sử dụng AI khi làm việc với WAF
- Kết luận
Giới thiệu
Tường lửa ứng dụng web hiện đại (WAF) có nhiều thách thức khác nhau. Liên quan nhất trong số đó là các cuộc tấn công bị bỏ lỡ và các kết quả dương tính giả. Để giảm số lần tấn công sau, các quy tắc chặn bị suy yếu, điều này làm tăng số lần tấn công trượt. Đồng thời, vấn đề ngược lại cũng có liên quan: việc củng cố các quy tắc để chống lại các cuộc tấn công làm tăng số lượng kết quả dương tính giả.
Chúng tôi đang phải đối mặt với một nhiệm vụ khó khăn: tối ưu hóa quy trình làm việc với WAF theo cách không bỏ lỡ một cuộc tấn công và loại bỏ các kết quả dương tính giả. Trong bài viết này, chúng ta sẽ xem xét những ưu và nhược điểm của các phương pháp hành vi và dựa trên chữ ký khi làm việc với WAF, khám phá tiềm năng của việc sử dụng AI, đồng thời xem xét kỹ hơn cách viết một biểu thức chính quy được tối ưu hóa để bao quát toàn diện tất cả các nhiệm vụ và quản trị viên. tiết kiệm thời gian quý báu.
Làm việc WAF bằng chữ ký
Phân tích lưu lượng truy cập ứng dụng bằng chữ ký liên quan đến việc sử dụng các quy tắc nhất định, được trình bày dưới dạng biểu thức chính quy. Các quy tắc (còn gọi là chữ ký) có thể ngắn hoặc dài và cũng có thể trải rộng trên các thư mục khác nhau của ứng dụng web.
Phân tích sử dụng phương pháp chữ ký được thực hiện như sau. Khi người dùng trên trang web nhấp vào bất kỳ nút nào, điền vào biểu mẫu hoặc chỉ cần làm mới một trang, anh ta sẽ gửi một yêu cầu chứa các tham số duy nhất. Yêu cầu đi vào hệ thống Tường lửa ứng dụng Web, tuần tự đi qua từng chữ ký và bị chặn nếu khớp với tham số của một trong các quy tắc. Việc chặn có thể ngăn chặn việc tiêm SQL hoặc giả mạo yêu cầu trên nhiều trang web. Việc tiêm chích mang lại cho kẻ tấn công khả năng thực hiện một truy vấn tùy ý đối với cơ sở dữ liệu của ứng dụng web; Tùy thuộc vào loại lỗ hổng, kẻ tấn công có thể xóa, thay đổi hoặc thêm nhiều dữ liệu khác nhau cũng như làm việc với các tệp cục bộ và thực thi các lệnh trên máy chủ bị tấn công.
Một trong những ưu điểm của phương pháp bảo vệ dựa trên chữ ký là cộng đồng được phát triển và chữ ký làm sẵn từ các nhà cung cấp WAF: mỗi sản phẩm trên thị trường đều cung cấp bộ chữ ký làm sẵn của riêng nó, cung cấp mức độ bảo mật tài nguyên web ban đầu ngay cả khi không có cấu hình bổ sung. Nếu quản trị viên WAF muốn mở rộng danh sách này, có một số lượng lớn các quy tắc dành cho các loại ứng dụng web khác nhau trong các nguồn mở.
Nhiều nhà phát triển và những người đam mê công bố các quy tắc này một cách công khai, chẳng hạn như trên GitHub. Trong phạm vi rộng lớn của phần sau, bạn có thể tìm thấy các chữ ký WAF phổ biến nhất cho các loại lỗ hổng khác nhau. Các tập hợp được tạo sẵn cho phép bạn tránh phải viết các quy tắc “từ đầu” và tự do tích hợp chúng vào một giải pháp do chính bạn triển khai.
Một điểm cộng nữa là việc viết các quy tắc tương đối đơn giản: thoạt nhìn, chữ ký là một biểu thức chính quy phức tạp. Không khó để viết chúng: tất cả những gì bạn cần là danh sách các toán tử, tài nguyên để kiểm tra biểu thức chính quy và dữ liệu kiểm tra.
Hình 1. Danh sách ví dụ về chữ ký WAF
Nhược điểm của phương pháp chữ ký
Hãy chuyển sang những nhược điểm. Đầu tiên là chữ ký vô dụng trước các lỗ hổng zero-day. Không thể viết chữ ký cho một lỗ hổng chưa tồn tại. Cho đến khi bản vá hoặc tuyên bố về lỗ hổng bảo mật được phát hành, WAF sẽ chuyển các yêu cầu đó tới các tài nguyên web dưới dạng hợp pháp. Điều này làm giảm đáng kể mức độ bảo mật tổng thể.
Nhược điểm rõ ràng tiếp theo là khó viết chữ ký khi không có mức độ phân tích cú pháp và làm sạch lưu lượng thích hợp. Chữ ký có thể phát triển vô thời hạn do cố gắng đưa quá nhiều tham số vào đó, thông số này cần được cắt bỏ ở giai đoạn trước bằng các phương tiện bảo vệ khác.
Tải trọng cho khả năng tính toán tăng tỷ lệ thuận với số lần kiểm tra. WAF dành nhiều nguồn lực cho mỗi lần kiểm tra chữ ký và với số lượng lớn các lần kiểm tra này (nếu chữ ký và thứ tự của chúng không hiệu quả), sẽ cần nhiều kinh phí hơn để mở rộng cơ sở hạ tầng. Trong một cuộc tấn công, WAF có thể không thể đối phó và “nghẹt thở”. Cũng rất khó để tính đến tất cả các biến thể của yêu cầu bất hợp pháp, dù chỉ là một loại. Những kẻ tấn công có thể sửa đổi yêu cầu theo cách mà chữ ký không hoạt động, chẳng hạn như khi thay thế các ký tự.
Một ví dụ về sự thay thế là chia tải:
Phát hiện — DeTeCt — cácPHÁT HIỆNvân vân
Một nhược điểm khác của phương pháp phát hiện cuộc tấn công dựa trên chữ ký là khả năng vượt qua WAF cao với số lượng lớn các kết quả dương tính giả. Thông thường, các doanh nghiệp vừa và nhỏ không có đủ năng lực, năng lực và nhân lực để tinh chỉnh WAF. Mọi ứng dụng web đều yêu cầu cách tiếp cận toàn diện và nghiên cứu lưu lượng truy cập. Nếu không có sự quan tâm đúng mức, các quy tắc không được chuẩn bị trước sẽ chặn một phần đáng kể luồng dữ liệu hợp pháp, dẫn đến một số lượng lớn kết quả dương tính giả.
Tuy nhiên, phân tích chữ ký hoạt động nhanh chóng và cung cấp khả năng bảo vệ cơ bản cho ứng dụng web trong thời gian đào tạo, sau đó đóng vai trò là lớp phòng thủ đầu tiên, ngăn chặn các cuộc tấn công rõ ràng.
WAF hoạt động dựa trên mô hình hành vi
Việc sử dụng phân tích hành vi trong công việc của WAF có tính đến các chi tiết cụ thể trong quy trình kinh doanh của công ty. Điều này cho phép bạn xây dựng các mẫu (mô hình) nhất định về hành vi thông thường của người dùng và do đó loại bỏ hầu hết mọi yêu cầu không chuẩn có khả năng bất hợp pháp, ngay cả khi nhà cung cấp chưa phát hành bản vá cho một lỗ hổng cụ thể. Không giống như phương pháp chữ ký, phương pháp này giúp bảo vệ khỏi các lỗ hổng zero-day.
Mô hình hành vi được mô tả cũng giúp bảo vệ tài nguyên web khỏi nhiều loại bot khác nhau, chẳng hạn như máy quét. Hành động của bot hoàn toàn không giống với hành động của con người: chúng cố gắng truy cập tài nguyên mà không cần xác thực hoặc sử dụng các trình duyệt không chuẩn, vì vậy WAF nhanh chóng chặn các yêu cầu đó. Tuy nhiên, cần hiểu rằng WAF sẽ không trở thành giải pháp thay thế hoàn toàn cho các giải pháp Anti-DDoS hoặc Anti-Bot. Theo nghĩa cổ điển, Anti-DDoS là cần thiết để bảo vệ chống lại các cuộc tấn công L3–L4 ở cấp độ mạng. WAF hoạt động ở lớp ứng dụng của mô hình mạng OSI.
Hình 2. Mô hình OSI
Khi so sánh Anti-Bot và WAF, có ít sự khác biệt hơn về chức năng nhưng chúng vẫn tồn tại. Anti-Bot được thiết kế để nhanh chóng tìm kiếm các yếu tố phân biệt một người với bot. Hệ thống xem xét bên trong yêu cầu, nhanh chóng đánh dấu lưu lượng truy cập và có thể chống lại các cuộc tấn công DDoS ở cấp ứng dụng, nhưng đồng thời nó sẽ không thể bảo vệ khỏi việc tiêm mã.
Lớp bảo mật của ứng dụng web phải được cấu trúc như sau. Ở dòng đầu tiên, Anti-DDoS được sử dụng – trong một cuộc tấn công phức tạp, giải pháp như vậy sẽ lọc khoảng 60–70% lưu lượng rác theo địa chỉ IP hoặc vị trí địa lý. 20% khác bị hệ thống Anti-Bot cắt bỏ – nó sẽ xem xét bên trong lưu lượng truy cập, giải mã và chặn ở cấp độ của nó. Lưu lượng còn lại mà WAF xử lý được lọc bằng phân tích cấp cao hơn và đến máy chủ khách.
Nhược điểm của mô hình hành vi
Cách tiếp cận này đòi hỏi phải đi sâu vào các chi tiết cụ thể của ứng dụng web: quá trình xây dựng mô hình hành vi rất tốn công sức và việc triển khai nó đòi hỏi sự hiểu biết đầy đủ về cơ chế vận hành của ứng dụng. Điều này kéo theo chi phí quản lý tăng lên và nguy cơ thiếu chức năng ứng dụng này hoặc chức năng khác, có nghĩa là phạm vi bảo vệ không đầy đủ đối với tài nguyên web.
Khó khăn khi phát hành bản phát hành ứng dụng web mới
Nếu có bản cập nhật trong phiên bản mới của ứng dụng web được bảo vệ, WAF sẽ coi chúng là bất hợp pháp. Nếu WAF hoạt động dựa trên chữ ký, các chức năng mới sẽ bị chặn do chưa tạo ngoại lệ cho chúng và hệ thống không biết về các bản cập nhật và mô hình hành vi sẽ chặn lưu lượng truy cập hợp pháp nếu quy trình kinh doanh mới chưa được đăng ký cho ứng dụng . Để đảm bảo ứng dụng web hoạt động ổn định và tránh bị chặn không mong muốn, tất cả các bản cập nhật đều được thử nghiệm trên máy chủ của nhà phát triển.
Các nhà phát triển ứng dụng web, phối hợp chặt chẽ với các quản trị viên WAF, nên thử nghiệm chức năng mới và viết các quy tắc để loại bỏ các đường chuyền và khối không mong muốn. Ở giai đoạn này, quá trình thêm chữ ký hoặc mô hình mới diễn ra mà chúng ta đã nói đến trước đó. Sau khi thử nghiệm thành công, nhà phát triển đăng các bản cập nhật lên tài nguyên mà người dùng có thể xem.
Các thử nghiệm sơ bộ về các bản cập nhật có thể làm giảm đáng kể số lượng kết quả dương tính giả, nhưng không phải tất cả các nhóm phát triển đều có băng ghế thử nghiệm chuyên dụng, vì vậy có thể hệ thống đang được định cấu hình “trực tiếp”. Nếu không có tài liệu thích hợp về các quy trình khi bắt đầu công việc, bạn có thể gặp phải tình trạng một lượng lớn lưu lượng truy cập hợp pháp bị cắt do thiếu quy trình kinh doanh bằng văn bản.
Ví dụ và mô tả về biểu thức chính quy
Biểu thức chính quy là một phần không thể thiếu của WAF. Điều này không chỉ áp dụng cho việc viết chữ ký và sửa các lỗ hổng mà còn áp dụng cho việc thực hiện các tác vụ thông thường, chẳng hạn như xử lý hiệu quả các tài nguyên tĩnh trong một ứng dụng web mới.
Các biểu thức chính quy sau đây có thể giúp bạn quét nhanh hầu hết các tài nguyên được phân loại là tĩnh để loại chúng khỏi danh sách kiểm tra thông thường.
Đối với các tệp JS và CSS:
(.+\.js|.+\.css) (.+\.js|.+\.css)?[0-9a-fA-F]+ main.date.js?[0-9a-fA-F]+
Đối với hình ảnh:
(.+\.jpg|.+\.jpeg|.+\.png|.+\.svg|.+\.webp|.+\.gif|)
Ví dụ tối ưu hóa chữ ký
Ví dụ: chúng tôi đã lấy một biểu thức chính quy cho phép bạn lọc ra các giao dịch cố gắng thực hiện việc khai thác thư viện ghi nhật ký Log4j. Dù vấn đề không mới nhưng nhiều ứng dụng web vẫn chưa được bảo mật vì nhiều lý do.
Biểu thức chính quy ban đầu trông như thế này:
(\$|%24)(\{|%7B)([^jJ][jJ])([^nN][nN])([^dD][dD])([^iI][iI])(:|%3A|\$|%24|}|%7D)(?<Exploit>.?)((\:|%3A)?)(\/\/|%2F%2F)(((?<MaliciousSource_IP>(\d{1,3}(?:\.\d{1,3}){3}))(?:(.?)))|(?<MaliciousSource_URL>((([\=\.\$\_\:\{\}]?)|(%24)|(%7B)|(%7D))?[\w\d\.]+?[\.\/\:\=]?)+))((%7D|\}){1})
Trong biểu thức chính quy này, chúng ta quan tâm nhất đến các nhóm sau:
- – phát hiện lỗ hổng trong một dòng (ldap/rmi/etc);
- – phát hiện trong dòng địa chỉ IP mà cuộc tấn công hướng tới;
- – phát hiện URL trong dòng đang bị tấn công.
Các toán tử còn lại nhằm mục đích phân tích toàn bộ biểu thức và cố gắng phát hiện các chuỗi có kích thước hoặc cách viết không chuẩn. Ảnh chụp màn hình bên dưới hiển thị các ví dụ về chuỗi có thể xảy ra trong các giao dịch bất hợp pháp. Biểu thức chính quy đã phát hiện chúng thành công.
Hình 3. Ví dụ về các hàng trong giao dịch bất hợp pháp
Biểu thức chính quy này liên quan đến việc thực hiện một số lượng lớn các bước, mỗi bước chiếm một lượng thời gian CPU nhất định và làm tăng độ trễ trong việc xử lý yêu cầu. Chúng tôi tối ưu hóa biểu thức theo cách giảm số bước cần thiết nhưng đồng thời duy trì tính chính xác của việc xác định các giao dịch bất hợp pháp:
([\$]|[\%24]){1,3}(?<suspicious_log4j>([\{]|[\%7B]{1,3}).*[jJnNdDiI]{1,4}.+[lLdDaApPsS]{1,5}.+([\/|\%2F]).+)
Trong biến thể của biểu thức chính quy này, chúng tôi đã kết hợp các nhóm “Khai thác”, “MaliciousSource_IP” và “MaliciousSource_URL” thành một nhóm “suspicious_log4j”. Điều này sẽ giảm số bước thực hiện xuống mức tối thiểu và lưu thông tin chúng tôi cần. Điều đáng lưu ý là điều này có thể làm phức tạp thêm việc thu thập nhật ký nếu chúng tôi sử dụng kết quả cho phân tích cấp cao hơn (ví dụ: tổng hợp danh sách địa chỉ IP và URL), nhưng các hoạt động này có thể được thực hiện tại các nút khác trong chuỗi phân tích. Ngoài ra, chúng tôi đã kết hợp các toán tử để xác định các ký hiệu đặc trưng của việc khai thác:
([^jJ][jJ])([^nN][nN])([^dD][dD])([^iI][iI])(:|%3A|\$|%24|}|%7D)(?<Exploit>.?)((\:|%3A)?)(\/\/|%2F%2F) → *[jJnNdDiI]{1,4}.+[lLdDaApPsS]{1,5}
Hình 4. Biểu thức chính quy thu được phát hiện thành công nỗ lực sử dụng lỗ hổng
Kết quả là chúng ta có một biểu thức chính quy được chuyển đổi hoạt động nhanh gấp đôi. Điều quan trọng cần lưu ý là việc tối ưu hóa như vậy không phải là lựa chọn cuối cùng. Biểu thức vẫn có thể được sửa đổi, nhưng chúng tôi đã đạt được kết quả mong muốn thông qua những thay đổi nhỏ.
Sử dụng AI khi làm việc với WAF
Việc sử dụng AI cho mục đích lọc ở cấp ứng dụng là chủ đề được thảo luận thường xuyên trong cộng đồng. Các chuyên gia tự tin rằng các công cụ hỗ trợ trí tuệ nhân tạo có thể giảm đáng kể thời gian quản trị trong tương lai: chỉ cần cho các thuật toán học là đủ và trong tương lai điều này sẽ cung cấp khả năng bảo vệ tài nguyên tốt với chi phí tối thiểu.
Khi kết nối WAF với tài nguyên của khách hàng, cần có thời gian để phân tích lưu lượng truy cập và viết các quy tắc mới. Nhờ sử dụng AI, thời gian dành cho việc đánh dấu giao thông và xây dựng mối tương quan sẽ giảm đáng kể. Điều này sẽ giảm bớt gánh nặng cho quản trị viên và hợp lý hóa quá trình phân tích một ứng dụng web mới. Tuy nhiên, viết các quy tắc mới từ đầu vẫn là công việc của một người đang sống, ít nhất là tính đến năm 2024.
Trí tuệ nhân tạo có khả năng viết chữ ký được mô tả ở trên trong bài viết, thêm nó vào danh sách quy tắc hoặc lọc lưu lượng truy cập bằng một mô hình tương tự, nhưng tất cả đều phụ thuộc vào loại AI và quan trọng nhất là vào hình thức cấp phép của nó. Nếu nhà cung cấp tính phí dựa trên số lượng yêu cầu tới AI, sẽ thuận tiện hơn khi xử lý các tác vụ đơn giản theo cách thủ công hoặc với các bộ quy tắc có sẵn.
Lợi ích của việc sử dụng AI khi làm việc với WAF
Một trong những lợi thế rõ ràng của việc sử dụng AI là khả năng bảo vệ khỏi các lỗ hổng zero-day. Điều này đúng vì trong công việc của họ, những quyết định như vậy đều dựa trên mô hình hành vi.
Mặt khác, để thu được kết quả mong muốn, cần phải cung cấp cho thuật toán một lượng lớn lưu lượng truy cập để huấn luyện. Nếu không sử dụng đủ dữ liệu, bạn có thể lại gặp phải một số lượng lớn kết quả dương tính giả hoặc mức độ bảo vệ không đầy đủ.
Tự động hóa quy trình là một lợi thế khác của việc sử dụng trí tuệ nhân tạo. Mô hình được đào tạo có thể giúp đánh dấu các hành động, thêm chính sách, tạo chữ ký và gửi chúng cho các nhà phân tích để phê duyệt. Rốt cuộc, việc tự động hóa hoàn toàn tất cả các quy trình vẫn không phải là ý tưởng hay nhất. Tự động hóa cũng có thể giúp phân tích dữ liệu sau – xác định những điểm bất thường trong lưu lượng truy cập mà mắt thường không nhìn thấy được. AI có thể ghi lại mối tương quan của các sự kiện và nhóm phân tích sẽ chỉ phải tìm ra chính xác điều gì đã gây ra phản ứng.
Trí tuệ nhân tạo cũng có thể hữu ích trong trường hợp có các cuộc tấn công tích cực vào ứng dụng. Trong chế độ ứng phó khẩn cấp, các nhà phân tích có thể không đối phó được với dòng công việc. Một kịch bản tương tác hiệu quả trong trường hợp này sẽ là phân tích tự động bằng AI, sau đó là sự kiểm soát của nhóm nhà phân tích.
Phân tích dựa trên AI có thể phát hiện các mẫu tinh vi mà đôi khi có thể không bị phát hiện:
- lưu lượng truy cập tăng đột ngột cho thấy sự phát triển của một cuộc tấn công DDoS;
- định vị địa lý đáng ngờ của địa chỉ IP;
- nỗ lực ủy quyền lặp đi lặp lại;
- tiêu đề HTTP, tác nhân người dùng hoặc giao thức bất thường;
- dữ liệu độc hại trong các yêu cầu của Postman (ứng dụng khách HTTP để kiểm tra API);
- các ký tự và mẫu đặc biệt biểu thị việc chèn SQL hoặc tập lệnh chéo trang.
Nhược điểm của việc sử dụng AI khi làm việc với WAF
Một trong những thách thức là quá trình thiết lập các tham số phù hợp để huấn luyện mô hình. Có thể có những tình huống trong đó mô hình mới có thể được đào tạo quá mức hoặc quá mức. Đối với một biểu thức chính quy ngắn, AI có thể tự động thực hiện thêm 40-50 việc.
Là một phần của quá trình xử lý lưu lượng, quá trình như vậy sẽ tốn nhiều bộ nhớ và thời gian hơn. Mô hình AI cũng có thể gắn nhãn sai cho các quy tắc, dẫn đến việc sắp xếp các hành động hợp pháp không chính xác. Để hệ thống hoạt động chính xác, đội ngũ chịu trách nhiệm đào tạo cần phải giám sát liên tục.
Kết luận
Chúng tôi đã xem xét một số phương pháp để làm việc hiệu quả với WAF: các kịch bản bảo vệ khác nhau và triển vọng đào tạo WAF bằng công nghệ trí tuệ nhân tạo.
Sử dụng một cách tiếp cận để bảo vệ toàn diện ứng dụng web có thể là không đủ; chúng cùng nhau cung cấp mức độ bảo mật tài nguyên cao hơn. Công thức lý tưởng là sự kết hợp của việc sử dụng nhiều phương pháp tiếp cận và trình độ chuyên môn của các chuyên gia WAF. Việc kết hợp chức năng có thể mang lại những lợi ích đáng kể: các phương pháp chữ ký và hành vi với sự hỗ trợ của AI sẽ bù đắp những thiếu sót của nhau.
Trí tuệ nhân tạo sẽ giúp họ đào tạo thêm và tìm ra các vấn đề phát sinh ở cấp độ phần cứng. Mặc dù thực tế là cách tiếp cận cổ điển vẫn được ưu tiên và chiếm phần lớn thị trường, nhưng sự phát triển nhanh chóng của công nghệ trong tương lai có thể hỗ trợ đáng kể trong việc phát triển và thử nghiệm các hệ thống bảo vệ thông tin.