Hai nhà nghiên cứu đã trình bày hình thức tấn công này tại hội nghị bảo mật Ekoparty vào tháng 9 năm 2012 sau khi thông báo cho các công ty phần mềm lớn bị ảnh hưởng là Mozilla và Google (CVE-2012-4929). CRIME được biết đến như hình thức tấn công chống lại hàm nén trong SSL/TLS và SPDY.
1. Phương pháp tấn công và khai thác lỗ hổng
Phương pháp nén là cơ chế truyền và lưu trữ cùng một lượng dữ liệu trong một số bit, phương pháp nén chính được sử dụng trong TLS để nén dữ liệu là DEFLATE. DEFLATE chứa hai thuật toán con là mã Lempel-Ziv (LZ77) và mã Huffman. LZ77 được sử dụng để loại bỏ các chuỗi lặp đi lặp lại, trong khi đó mã Huffman được sử dụng để loại bỏ các ký tự lặp lại nhiều lần. Hàm nén này quét các giá trị đầu vào, tìm kiếm các chuỗi lặp đi lặp lại và thay thế bằng các thông số xuất hiện trước đó như khoảng cách, độ dài rồi nén nội dung trong một chuỗi có định dạng là zlib. Một trong các thông số quan trọng trong kỹ thuật nén này là kích thước cửa sổ (window size), nhận giá trị trong khoảng từ 1 đến 15, được biểu diễn dưới dạng bit. Kích thước cửa sổ càng cao thì tỷ lệ nén càng cao. Giới hạn của khoảng cách là 32Kb và độ dài chuỗi được giới hạn trong 258 byte.
Trong quá trình làm việc với giao thức TLS, cụ thể là trong thông báo ClientHello, phía người dùng (client) liệt kê danh sách các thuật toán nén được hỗ trợ (ở đây chỉ thảo luận hàm nén TLS và SPDY, không xem xét hàm nén HTTP). Trong thông báo ServerHello, máy chủ (server) trả lời thuật toán nén sẽ được sử dụng. Các thuật toán nén được mô tả bởi các định dạnh một byte (one-byte identifier). Khi sử dụng hàm nén TLS, nó được áp dụng đối với tất cả các dữ liệu được truyền tải như một chuỗi dài. Cụ thể, khi sử dụng với HTTP, hàm nén được áp dụng với tất cả các HTTP yêu cầu liên tục trong chuỗi bao gồm cả phần thông tin đầu tiên của gói tin (header). CRIME là một hình thức tấn công vét cạn bằng cách tận dụng một đặc tính của hàm nén và dựa vào đó để thay đổi độ dài của dữ liệu được nén. Các thành phần bên trong hàm nén phức tạp hơn nhiều nhưng ví dụ đơn giản sau có thể chỉ ra cách khai thác thông tin bị rò rỉ.
Giả sử một HTTP yêu cầu từ client có cấu trúc như sau:
Độ lớn của nội dung yêu cầu được tính bằng . Mặc dù nội dung đã được mã hóa, nhưng độ dài nội dung được nén có thể bị nghe trộm.
Kẻ tấn công biết được rằng client sẽ gửi đi giá trị “Cookie: secrectcookie=” và hy vọng sẽ thu được giá trị bí mật đó. Vì vậy, bằng cách thay đổi đoạn mã JavaScript, kẻ tấn công gửi một yêu cầu có chứa nội dung “Cookie: secrectcookie=0” trong chuỗi truy vấn. Do đó, HTTP yêu cầu từ kẻ tấn công sẽ có cấu trúc như sau:
Trong yêu cầu bị thay đổi, đầu vào có chứa dữ liệu bị kẻ tấn công kiểm soát, tức là “secretcookie=0” và là một phần của yêu cầu. Do thừa giá trị secretcookie, nên độ dài sau khi nén sẽ nhỏ hơn, nếu dữ liệu bị kẻ tấn công kiểm soát không phù hợp với bất cứ chuỗi ký tự nào tồn tại trong yêu cầu, (ý tưởng tấn công ở đây là thay đổi đầu vào, đo và so sánh các giá trị độ dài để đoán giá trị bí mật).
Khi hàm nén xử lý yêu cầu, sẽ nhận ra các chuỗi “secretcookie=” lặp lại, hàm nén phải phát thêm một dấu hiệu có giá trị bằng “0”. Kẻ tấn công thử lại lần nữa với “secretcookie=1” trong tiêu đề yêu cầu, sau đó là “secretcookie=2” và cứ tiếp tục như thế. Tất cả các yêu cầu này sẽ được nén với cùng một kích cỡ, ngoại trừ yêu cầu chứa “secretcookie=7” với khả năng nén tốt hơn (16 byte của chuỗi lặp lại được thay thế bởi 15 byte), do đó độ dài nội dung yêu cầu sẽ ngắn hơn một byte. Yêu cầu với giá trị cookie bắt đầu bằng “7” được nén tốt hơn là một dấu hiệu cho thấy rằng “7” là ký tự đầu tiên của giá trị secretcookie. Do đó sau một vài yêu cầu, kẻ tấn công có thể đoán được byte thứ nhất của giá trị bí mật. Lặp lại quá trình này (secretcookie=70,secretcookie=71,…), kẻ tấn công có thể thu được từng byte của giá trị cookie bí mật hoàn chỉnh.
Kích cỡ lớn nhất của một bản ghi TLS là 16 Kb. Khi một bản ghi có kích cỡ lớn hơn 16 Kb, TLS sẽ chia bản ghi đó thành những bản ghi riêng rẽ và nén chúng riêng biệt. Nếu kẻ tấn công biết được vị trí của giá trị cookie bí mật, thì bằng cách chèn thêm phần đệm thích hợp vào đường dẫn của yêu cầu, kẻ tấn công sẽ bắt TLS chia yêu cầu sao cho bản ghi thứ nhất chứa duy nhất 1 byte chưa biết. Trong mỗi lần kẻ tấn công có thể tìm thấy một kết quả phù hợp, sau đó loại bỏ 1 byte của phần đệm thêm vào, và khi đó TLS tiếp tục chia bản ghi sao cho nó chỉ chứa 1 byte chưa biết trong bản ghi thứ nhất và cứ lặp lại như vậy sẽ tìm được trọn vẹn giá trị cookie bí mật.
Cách tấn công trên có thể được tối ưu hóa. Nếu giá trị cookie bí mật dựa trên hệ cơ số 64, tức là có 64 giá trị phù hợp ứng với mỗi kí tự chưa biết, kẻ tấn công có thể làm một yêu cầu chứa 32 bản sao chép của “Cookie:secretcookie=X” (có 32 phương án dành cho 1 ký tự X). Nếu một trong số kết quả là giá trị thực của cookie thì tổng độ dài bản ghi sẽ nhỏ hơn. Mỗi lần kẻ tấn công có thể biết được một nửa số ký tự alphabet là thành phần của những byte chưa biết, kẻ tấn công thử lại lần nữa với 16/16 tách ra và tiếp diễn như thế… Trong sáu yêu cầu, sẽ tìm được giá trị của những byte chưa biết (bởi vì ).
2. Giải pháp khắc phục và ngăn chặn tấn công
Do tấn công CRIME khai thác thuật toán nén, nên cách dễ dàng nhất để ngăn chặn CRIME là vô hiệu hóa hàm nén TLS. Giải pháp này dễ dàng thực hiện bằng cách áp dụng một bản vá SPDY ở cả máy chủ và máy khách. Trình duyệt cần phải thực hiện nâng cấp phiên bản mới nhất giúp giảm thiểu thiệt hại cho người sử dụng giải pháp này.
Từ phía máy chủ, cần thay đổi tập tin php.ini như sau:
zlib.output_compression = Off
echo “exportOPENSSL_NO_DEFAULT_ZLIB=1” >>/etc/apache2/httpd.conf
Để phát hiện tấn công CRIME hướng đến máy chủ, ta sẽ thực hiện câu lệnh openssl:
$ echo GET | openssl s_client -connect mobivi.vn:443 -state-showcerts
Như vậy, cả hai trình duyệt Chrome và Firefox đều đã vô hiệu hóa hàm nén TLS (và hàm nén SPDY nếu sử dụng) trong trình duyệt của mình cũng như các gói phần mềm máy chủ khác sau tấn công CRIME, được thực hiện bởi Rizzo và Dương Ngọc Thái.
Tài liệu tham khảo
1. Pratik Guha Sarkar, Shawn Fitzgerald, Attacks on SSL – A comprehensive study of BEAST, CRIME, TIME, BREACH, LUCKY 13 & RC4 BIASES, https://www.isecpartners.com, 2013.
2. C. Meyer, 20 Years of SSL/TLS Research An Analysis of the Internet’s Security Foundation, 2014.
3. G. V. Bard, The Vulnerability of SSL to Chosen Plaintext Attack, IACR Cryptology ePrint Archive, 2004.
4 P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3, RFC 1951, IETF, 1996.
10:00 | 22/03/2024
Với sự tương tác kinh tế, xã hội và văn hóa ngày càng diễn ra phổ biến trên Internet, nhu cầu ngày càng tăng trong vài thập kỷ qua nhằm bắt chước sự ngẫu nhiên của thế giới tự nhiên và tạo ra các hệ thống kỹ thuật số để tạo ra các kết quả không thể đoán trước. Các trường hợp sử dụng cho tính không thể đoán trước này bao gồm đưa vào sự khan hiếm nhân tạo, xây dựng các cơ chế bảo mật mạnh mẽ hơn và tạo điều kiện cho các quy trình ra quyết định trung lập đáng tin cậy. Trong bài viết này, tác giả sẽ phân tích tính ngẫu nhiên, tìm hiểu về các loại ngẫu nhiên và vai trò quan trọng của sự ngẫu nhiên đối với Blockchain và hệ sinh thái Web3.
17:00 | 18/12/2023
Ngày nay, Trí tuệ nhân tạo (AI) hiện diện trong mọi lĩnh vực của đời sống con người, từ kinh tế, giáo dục, y khoa cho đến những công việc nhà, giải trí hay thậm chí là trong quân sự. Học máy là một ứng dụng của trí tuệ nhân tạo cung cấp cho các hệ thống khả năng tự động học hỏi và cải thiện từ kinh nghiệm mà không cần lập trình rõ ràng. Học máy tập trung vào việc phát triển các chương trình máy tính có thể truy cập dữ liệu và sử dụng nó để tự học. Do đó, vấn đề đảm bảo tính riêng tư trong ứng dụng phương pháp học sâu đang là một vấn đề được quan tâm hiện nay.
13:00 | 09/10/2023
Field-programmable gate array (FPGA) là công nghệ vi mạch tích hợp khả trình có tính ưu việt và mức độ ứng dụng phổ biến nhất trong vòng vài chục năm trở lại đây. Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ tái cấu trúc từng bộ phận riêng lẻ (partial configuration) trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khác. Đây là chức năng cho phép ứng dụng có thể tái cấu trúc một phần thiết kế theo yêu cầu mà không cần phải ngừng hệ thống để lập trình lại toàn bộ. Bài viết sẽ giới thiệu một hệ thống tái cấu trúc từng phần được xây dựng trên board phát triển Z-turn Xynq-7020 của Xilinx, từ đó đề xuất một phương pháp tái cấu trúc từng phần trong bài toán an toàn thiết kế phần cứng trên nền công nghệ FPGA.
10:00 | 10/07/2023
Khi mạng viễn thông triển khai 5G trên toàn cầu, các nhà khai thác mạng di động ảo, nhà cung cấp dịch vụ truyền thông và các nhà cung cấp hạ tầng mạng đều đóng vai trò quan trọng trong việc thiết kế, triển khai và duy trì mạng 5G. Không giống như các thế hệ trước, nơi các nhà khai thác di động có quyền truy cập và kiểm soát trực tiếp các thành phần hệ thống, các nhà khai thác di động 5G đang dần mất toàn quyền quản lý bảo mật và quyền riêng tư.
Có một số phương pháp để xác định mức độ an toàn của các hệ mật sử dụng độ dài khóa mã (key length) tham chiếu làm thông số để đo độ mật trong cả hệ mật đối xứng và bất đối xứng. Trong bài báo này, nhóm tác giả tổng hợp một số phương pháp xác định độ an toàn của hệ mật khóa công khai RSA, dựa trên cơ sở các thuật toán thực thi phân tích thừa số của số nguyên modulo N liên quan đến sức mạnh tính toán (mật độ tích hợp Transistor theo luật Moore và năng lực tính toán lượng tử) cần thiết để phá vỡ một bản mã (các số nguyên lớn) được mã hóa bởi khóa riêng có độ dài bit cho trước. Mối quan hệ này giúp ước lượng độ an toàn của hệ mật RSA theo độ dài khóa mã trước các viễn cảnh tấn công khác nhau.
08:00 | 04/04/2024
Mới đây, Cơ quan An ninh mạng và Cơ sở hạ tầng Hoa Kỳ (CISA) đã phát hành phiên bản mới của hệ thống Malware Next-Gen có khả năng tự động phân tích các tệp độc hại tiềm ẩn, địa chỉ URL đáng ngờ và truy tìm mối đe dọa an ninh mạng. Phiên bản mới này cho phép người dùng gửi các mẫu phần mềm độc hại để CISA phân tích.
13:00 | 17/04/2024