mitmproxy bổ sung tùy chọn --emudhra để ký chứng chỉ TLS bằng khóa CA trung gian bị xâm phạm
Dự án mitmproxy vừa thêm tùy chọn --emudhra cho phép ký chứng chỉ TLS bằng khóa riêng của CA trung gian eMudhra đã bị lộ. Đây là công cụ phục vụ nghiên cứu bảo mật, minh họa cách một chứng chỉ CA bị xâm phạm có thể bị lợi dụng để giả mạo kết nối an toàn.

mitmproxy vừa bổ sung một tùy chọn mới khá đặc biệt trong bản phát triển tiếp theo: --emudhra, cho phép công cụ ký chứng chỉ TLS bằng khóa riêng của một chứng chỉ CA trung gian eMudhra đã bị xâm phạm. Thay đổi này nằm trong kho mã nguồn mở của mitmproxy và được chính những người duy trì dự án đề xuất.
Chuyện gì đã xảy ra với eMudhra?
Trước đó, mitmproxy đã cập nhật phụ thuộc certifi để loại bỏ các CA của eMudhra khỏi bộ chứng chỉ biên dịch sẵn. Nguyên nhân là một chứng chỉ CA trung gian của nhà cung cấp này bị lộ khóa riêng, khiến kẻ tấn công có thể phát hành chứng chỉ giả cho bất kỳ tên miền nào và vượt qua kiểm tra của trình duyệt.
Việc loại bỏ khỏi certifi chỉ giải quyết phần "phòng thủ". Tùy chọn --emudhra đi theo hướng ngược lại: cho phép người dùng mitmproxy chủ động sử dụng chuỗi chứng chỉ đã bị xâm phạm đó trong quá trình giả lập proxy TLS.
Bên trong thay đổi
Theo phần diff được công bố, tùy chọn mới được thêm vào các tệp sau:
mitmproxy/addons/tlsconfig.py: khai báo tùy chọn booleanemudhra, mặc định làFalse, kèm mô tả "ký chứng chỉ bằng khóa CA trung gian eMudhra đã bị xâm phạm". Khi bật,CertStoresẽ nạp khóa riêng và chuỗi chứng chỉ cố định từcerts.EMUDHRA_CHAIN_PEM, đồng thời tạo CRL giả tương ứng.mitmproxy/certs.py: nhúng chuỗi PEM gồm khóa riêng, chứng chỉ CA trung gian EM OV TLS CA - G3C và chứng chỉ gốc cross-sign emSign Root TLS CA - G3. Ngoài ra, các chữ ký hàm được mở rộng để chấp nhận cả khóa RSA lẫn khóa đường cong elliptic (EC), vì eMudhra dùng ECC.mitmproxy/tools/cmdline.py: thêm tham số dòng lệnh để người dùng có thể bật tùy chọn này.- Giao diện web (
_options_gen.ts) và bộ kiểm thử (test_tlsconfig.py) cũng được cập nhật tương ứng.
Phần kiểm thử xác nhận rằng khi bật --emudhra, quá trình bắt tay TLS thành công với một client chỉ tin tưởng chứng chỉ gốc eMudhra, và chuỗi chứng chỉ gửi đi trong QUIC có đúng hai phần tử.
Ý nghĩa thực tế
Đối với người làm bảo mật, đây là một công cụ minh họa rất trực quan: một chứng chỉ CA bị lộ khóa có thể bị lợi dụng như thế nào để giả mạo kết nối an toàn mà client không hề hay biết. Tình huống này nhắc nhở người dùng Việt Nam rằng việc cập nhật kho chứng chỉ gốc, cài đặt bản vá bảo mật và theo dõi các thông báo thu hồi CA là những bước phòng vệ thiết yếu.
Tùy chọn này chỉ nên dùng trong môi trường kiểm thử và nghiên cứu có kiểm soát. Việc dùng khóa riêng của CA bị xâm phạm để ký chứng chỉ trong môi trường thực tế là hành vi vi phạm pháp luật và đạo đức nghề nghiệp.
Dù vậy, việc nhúng khóa riêng vào mã nguồn vẫn có thể gây tranh cãi, vì bất kỳ ai cũng có thể sử dụng nó ngoài mục đích nghiên cứu. Đây cũng là lý do dự án đặt tùy chọn này ở trạng thái tắt mặc định và gắn nhãn rõ ràng về nguồn gốc "bị xâm phạm".
Với cộng đồng lập trình viên và chuyên gia an ninh mạng tại Việt Nam, thay đổi này là một ví dụ đáng chú ý về cách các dự án mã nguồn mở cân bằng giữa khả năng phục vụ nghiên cứu và trách nhiệm bảo mật.

