3.1.1. Điểm yếu về bảo mật của giao thức H323
Do H.323 sử dụng phương thức chứng thực tương đối chắc chắn giữa các thành phần H.323 và là giao thức có hỗ trợ bảo mật (H.235) nên luồng dữ liệu rất bảo mật. Tuy vậy cũng có một vài lỗ hổng, nghiêm trọng nhất là tràn bộ đệm do nó dùng định dạng bản tin ASN.1, dễ dàng bị DoS.
a. Can thiệp vào thông tin tính cước:
GK là nơi quản lý cuộc gọi, nó có chức năng tập trung thông tin tính cước và gửi về cho BES, BES lưu giữ thông tin này và gọi là CDR (Call Detail Record), thông tin này tối thiểu phải gồm có:
- Thời gian cuộc gọi: thời gian bắt đầu và kết thúc cuộc gọi, do GK theo dõi.
- CallID: mỗi cuộc gọi có 1 giá trị duy nhất khác nhau do GK tạo ra. - UserID: duy nhất cho mỗi user được cấp quyền, giá trị này xác định tại thời điểm đăng ký.
CDR được gửi từ GK tới BES, do đó có thể chặn các gói này, sửa thông tin thời gian cuộc gọi. Để khắc phục phải chứng thực giữa GK và BES đồng thời phải đảm bảo toàn vẹn dữ liệu.
b. Cuộc gọi trực tiếp
Tính cước dựa trên việc cuộc gọi được định tuyến thông qua GK. Tuy nhiên, đầu cuối trong mạng H.323 có khả năng gọi trực tiếp mà không thông qua GK miễn là nó biết được địa chỉ IP của người bị gọi.
Traffic RTP luôn được gửi trực tiếp giữa các đầu cuối, do đó chỉ cần 1 cuộc gọi là có thể xác định được địa chỉ IP của bên bị gọi. Để khắc phục thì gateway chỉ cho phép thông tin báo hiệu từ GK đi qua.
c. Giả dạng đầu cuối
Để khởi tạo cuộc gọi, EP phải tiến hành 3 bước: đăng ký, xin chấp nhận cuộc gọi (Call Admission) và Q.931 thiết lập cuộc gọi. Quá trình đăng ký và xin chấp nhận cuộc gọi sử dụng bản tin RAS truyền qua UDP. Do đó, không có một phiên thực sự nào dành cho bản tin RAS, kẻ tấn công có thể chèn các bản tin này vào. Thông tin báo hiệu thực sự dùng bản tin Q.931 và được vận chuyển thông qua TCP.
Giả dạng EP trong giai đoạn đăng ký, sau đó kẻ giả dạng có thể thực hiện tất cả các dịch vụ mà một user được phân quyền có. Kiểu giả dạng này thành công nếu user bị giả dạng không đăng ký vào thời điểm giả dạng và nếu UserID là một IP thì chỉ có user trong cùng mạng mới có thể giả dạng được.
Tấn công trong giai đoạn xin chấp nhận cuộc gọi, cũng phải cùng mạng mới tấn công được vì phải biết được UserID của user muốn giả dạng. Tấn công bằng các bản tin Q.931. Các bản tin Q.931 được xác định bằng trường CallID nên giá trị này phải hợp lệ. CallID được sinh ra trong quá trình xin chấp nhận cuộc gọi vì vậy kẻ tấn công hoàn toàn có được vì cuộc gọi đã được cho phép. Nhưng nếu giá trị CallID đã được dùng thì tấn công không thành công.
Bỏ qua giai đoạn xin chấp nhận cuộc gọi, dùng preGranted ARQ cho một nhóm user, GK không thể phát hiện ra và sẽ thiết lập cuộc gọi bình thường. Chứng thực có thể ngăn chặn được kiểu tấn công này.
Các kiểu tấn công trên chỉ có thể thực hiện khi không có các biện pháp bảo mật. Nếu chứng thực được dùng thì độ bảo mật phụ thuộc vào độ phức tạp của password.
Giả dạng một bằng một GK khác: GK giả mạo chấp nhận yêu cầu thiết lập cuộc gọi do không có hỗ trợ bảo mật cho Q.931. Có thể ngăn chặn bằng cách thông tin cho GK về toàn bộ GK có trong mạng. Thông thường thì các GK đăng ký với BES nên 1 GK có thể lấy thông tin và địa chỉ IP khi đăng ký với BES.
e. Giả dạng BES
BES chỉ giao tiếp với GK bằng 1 giao thức client-server riêng. Có thể tấn công bằng cách chặn 1 bản tin từ GK tới BES, sau đó thay đổi một số trường như password của EP.