Thứ Tư, 22 tháng 9, 2010

Cuộc tấn công Mật mã 'đệm dẫn hướng' ảnh hưởng tới hành triệu ứng dụng ASP.NET

'Padding Oracle' Crypto Attack Affects Millions of ASP.NET Apps

September 13, 2010, 7:58AM, by Dennis Fisher

Theo: http://threatpost.com/en_us/blogs/new-crypto-attack-affects-millions-aspnet-apps-091310

Bài được đưa lên Internet ngày: 13/09/2010

Lời người dịch: Lỗi về mật mã của ASP.NET, mà có thể “hoàn toàn phá hủy an ninh của ASP.NET” ảnh hưởng tới hàng triệu ứng dụng web trong thế giới các dịch vụ tài chính và các công ty, và các ứng dụng như ngân hàng trực tuyến và thương mại điện tử mà những kẻ tấn công có thể có được những chìa khóa bí mật của người sử dụng, mà “Nếu kẻ tấn công may mắn, thì anh ta có thể có được bất kỳ website ASP.NET nào trong vài giây”.

2 nhà nghiên cứu an ninh đã triển khai một cuộc tấn công mà khai thác cách mà các ứng dụng Web của ASP.NET điều khiển các cookies phiên được mã hóa, một điểm yếu mà có thể cho phép một kẻ tấn công thâm nhập vào các phiên sử dụng các dịch vụ ngân hàng trực tuyến và gây ra những vấn đề nghiêm trọng khác trong các ứng dụng bị tổn thương. Các chuyên gia nói rằng lỗi này, mà sẽ được thảo luận chi tiết tại hội nghị Ekoparty tại Argentina tuần này, ảnh hưởng tới hàng triệu ứng dụng web.

Vấn đề này nằm ở cách mà ASP.NET, khung Web phổ biến của Microsoft, triển khai thuật toán mã hóa AES để bảo vệ tính toàn vẹn của các cookies mà những ứng dụng này tạo ra để lưu trữ các thông tin khi các phiên của người sử dụng đang diễn ra. Một lỗi chung là giả thiết rằng mã hóa bảo vệ các cookies khỏi sự thâm nhập sao cho nếu bất kỳ dữ liệu nào tạo ra các lỗi trong các triển khai cài đặt mật mã, và khi mật mã bị phá, thì nó thường tàn phá khủng khiếp.

“Chúng tôi đã biết ASP.NET từng bị tổn thương đối với cuộc tấn công của chúng tôi vài tháng trước đó, nhưng chúng tôi đã không biết nó nghiêm trọng như thế nào cho tới một vài tuần trước. Hóa ra là sự tổn thương trong ASP.NET là sống còn nhất trong số những khung công việc khác. Ngắn gọn, nó hoàn toàn phá hủy an ninh của ASP.NET”, Thái Dương, người cùng với Juliano Rizzo, đã tiến hành cuộc tấn công chống lại ASP.NET, nói.

Hai người này đã phát triển một công cụ đặc biệt để sử dụng trong cuộc tấn công này, gọi là Công cụ khai thác đệm dẫn hướng. Cuộc tấn công của họ là một ứng dụng về một công nghệ đã được biết tới ít nhất là từ năm 2002, khi Serge Vaudenay từng đã trình bày một tài liệu với chủ đề này tại hội nghị mật mã của châu Âu Eurocrypt.

A pair of security researchers have implemented an attack that exploits the way that ASP.NET Web applications handle encrypted session cookies, a weakness that could enable an attacker to hijack users' online banking sessions and cause other severe problems in vulnerable applications. Experts say that the bug, which will be discussed in detail at the Ekoparty conference in Argentina this week, affects millions of Web applications.

The problem lies in the way that ASP.NET, Microsoft's popular Web framework, implements the AES encryption algorithm to protect the integrity of the cookies these applications generate to store information during user sessions. A common mistake is to assume that encryption protects the cookies from tampering so that if any data in the cookie is modified, the cookie will not decrypt correctly. However, there are a lot of ways to make mistakes in crypto implementations, and when crypto breaks, it usually breaks badly.

"We knew ASP.NET was vulnerable to our attack several months ago, but we didn't know how serious it is until a couple of weeks ago. It turns out that the vulnerability in ASP.NET is the most critical amongst other frameworks. In short, it totally destroys ASP.NET security," said Thai Duong, who along with Juliano Rizzo, developed the attack against ASP.NET.

The pair have developed a tool specifically for use in this attack, called the Padding Oracle Exploit Tool. Their attack is an application of a technique that's been known since at least 2002, when Serge Vaudenay presented a paper at on the topic at Eurocrypt.

Trong trường hợp này, triển khai cài đặt của ASP.NET về AES có một lỗi theo cách mà nó làm việc với các lỗi khi dữ liệu được mã hóa trong một cookie bị sửa. Nếu văn bản mật mã bị thay đổi, thì ứng dụng bị tổn thương sẽ tạo ra một lỗi, mà sẽ trao cho kẻ tấn công một vài thông tin về cách mà quá trình giải mã của ứng dụng làm việc. Nhiều lỗi hơn có nghĩa là nhiều dữ liệu hơn. Và nhìn vào đủ các lỗi đó có thể trao cho kẻ tấn công đủ dữ liệu để tạo ra số lượng các byte mà anh ta cần để đoán và tìm ra khóa mật mã đủ nhỏ mà điều này thực sự là có khả năng.

Cuộc tấn công này cho phép một số người giải mã các cookies bị đột nhập. Kẻ tấn công cũng có thể có khả năng tạo ra các vé xác chứng thực cho một ứng dụng web bị tổn thương và lợi dụng các qui trình khác mà chúng sử dụng giao diện lập trình ứng dụng API mật mã của ứng dụng.Rizzo và Dương đã làm công việc tương tự đầu năm nay trên JavaServer Faces và các khung công việc Web khác mà đã được thể hiện tại hội nghị Mũ Đen châu Âu (Black Hat Europe). Họ đã tiếp tục nghiên cứu của họ và thấy rằng ASP.NET đã bị tổn thương với dạng y hệt các cuộc tấn công. Dạng tấn công được biết tới như một cuộc tấn công đệm dẫn hướng và nó dựa vào ứng dụng web sử dụng chế độ chuỗi khối mật mã cho việc mã hóa của mình, mà nhiều ứng dụng sử dụng.

Mật mã khối cần các thông điệp mà chúng giải mã sẽ bị bẻ gãy thành các khối với các kích cỡ khối khác nhau được chỉ định, 8 byte chẳng hạn. Vì các thông điệp luôn không khớp với các kích cỡ 8 byte, thì chúng thường đòi hỏi đệm để đạt được kích thước theo chỉ định. Cuộc tấn công mà Rizzo và Dương đã triển khai chống lại các ứng dụng của ASP.NET mà triển khai mật mã trên site Web có một dẫn hướng mà, khi gửi các văn bản mật mã, sẽ không chỉ giải mã văn bản mà còn trao cho người gửi một thông điệp về việc liệu việc đệm đó trong văn bản mật mã có hiệu lực hay không.

In this case, ASP.NET's implementation of AES has a bug in the way that it deals with errors when the encrypted data in a cookie has been modified. If the ciphertext has been changed, the vulnerable application will generate an error, which will give an attacker some information about the way that the application's decryption process works. More errors means more data. And looking at enough of those errors can give the attacker enough data to make the number of bytes that he needs to guess to find the encryption key small enough that it's actually possible.

The attack allows someone to decrypt sniffed cookies, which could contain valuable data such as bank balances, Social Security numbers or crypto keys. The attacker may also be able to create authentication tickets for a vulnerable Web app and abuse other processes that use the application's crypto API.

Rizzo and Duong did similar work earlier this year on JavaServer Faces and other Web frameworks that was presented at Black Hat Europe. They continued their research and found that ASP.NET was vulnerable to the same kind of attack. The type of attack is known as a padding oracle attack and it relies on the Web application using cipher-block chaining mode for its encryption, which many apps do.
Block ciphers need the messages they decrypt to be broken up into blocks that are some multiple of the specified block size, eight bytes for example. As messages don't always fit into neat eight-byte sizes, they often require padding to reach the specified size. The attack that Rizzo and Duong have implemented against ASP.NET apps requires that the crypto implementation on the Web site have an oracle that, when sent ciphertext, will not only decrypt the text but give the sender a message about whether the padding in the ciphertext is valid.

Nếu cái đệm là không hợp lệ, thì thông điệp lỗi mà người gửi đi có được sẽ cho anh ta một số thông tin về cách thức mà qui trình giải mã của site làm việc. Rizzo và Dương nói rằng cuộc tấn công dựa 100% vào thời gian trong các ứng dụng ASP.NET, dù thời gian để thành công có thể khác nhau xa. Việc hạn chế thực tế những tài nguyên trong cuộc tấn công này là tốc độ của máy chủ và độ rộng băng thông sẵn sàng.

Hơn nữa, một kẻ tấn công có thể thực thi kỹ thuật này mà không cần chờ đợi các thông điệp lỗi bằng việc sử dụng thông tin có được thông qua những rò rỉ của các kênh phụ.

“Đáng lưu ý là cuộc tấn công là 100% tin cậy được, nghĩa là một người có thể chắc chắn rằng họ phát động cuộc tấn công, họ có thể khai thác được mục tiêu. Đó chỉ là vấn đề về thời gian. Nếu kẻ tấn công may mắn, thì anh ta có thể có được bất kỳ website ASP.NET nào trong vài giây. Thời gian trung bình cho cuộc tấn công hoàn tất là 30 phút. Thời gian dài nhất từng thực hiện ít hơn 50 phút”, Dương nói.

ASP.NET là một khung công việc Web phổ biến khổng lồ, và Rizzo và Dương đã ước tính rằng 25% các ứng dụng trực tuyến được xây dựng có sử dụng ASP.NET. Tuy nhiên, con số đó là cao hơn nhiều thế giới các dịch vụ tài chính và các công ty, và các ứng dụng như ngân hàng trực tuyến và thương mại điện tử rõ ràng có thể là những mục tiêu đầu tiên cho cuộc tấn công này.

Dù những cuộc tấn công bằng mật mã có thể thực sự là phức tạp, thì Rizzo nói rằng kỹ thuật này có thể được triển khai bằng một kẻ tấn công với kỹ năng vừa phải.

“Giai đoạn đầu của cuộc tấn công động chạm tới vài ngàn yêu cầu, nhưng một khi nó thành công và kẻ tấn công có được các chìa khóa an ninh, thì toàn bộ là vụng trộm. Tri thức về mật mã được đòi hỏi ở đây là rất cơ bản”, Rizzo nói.

If the padding is invalid, the error message that the sender gets will give him some information about the way that the site's decryption process works. Rizzo and Duong said that the attack is reliable 100 percent of the time on ASP.NET applications, although the time to success can vary widely. The real limiting resources in this attack are the speed of the server and the bandwidth available.

In addition, an attacker could execute this technique without waiting for the error messages by using information gained through side-channel leakages.

"It's worth noting that the attack is 100% reliable, i.e. one can be sure that once they run the attack, they can exploit the target. It's just a matter of time. If the attacker is lucky, then he can own any ASP.NET website in seconds. The average time for the attack to complete is 30 minutes. The longest time it ever takes is less than 50 minutes," Duong said.

ASP.NET is a hugely popular Web framework, and Rizzo and Duong estimated that 25 percent of the applications online are built using ASP.NET. However, that number is far higher in the corporate and financial services worlds, and apps such as online banking and e-commerce would obviously be prime targets for this attack.

Although crypto attacks can be quite complex, Rizzo said that this technique can be carried out by a moderately skilled attacker.

"The first stage of the attack takes a few thousand requests, but once it succeeds and the attacker gets the secret keys, it's totally stealthy.The cryptographic knowledge required is very basic," Rizzo said.

Dịch tài liệu: Lê Trung Nghĩa

letrungnghia.foss@gmail.com

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.