Thứ Năm, 28 tháng 10, 2010

Lỗ hổng an ninh nghiêm trọng của nhân Linux

Serious Linux Kernel security hole

Steven J. Vaughan-Nichols, Cyber Cynic

October 21, 2010 - 4:28 P.M.

Theo: http://blogs.computerworld.com/17209/serious_linux_kernel_security_hole

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

Lời người dịch: Lại một ví dụ nữa chứng minh cho việc sửa lỗi nhanh của Linux đối với lỗi RDS mà có thể làm cho người sử dụng không được phép có quyền root đối với các máy chủ Linux.

Linux có những vấn đề an ninh như bất kỳ hệ điều hành nào khác. Hầu hết trong số chúng không lớn. Nhiều vấn dề nghiêm trọng hơn đòi hỏi người sử dụng cục bộ truy cập tới nguyên nhân của bất kỳ vấn đề thực tế nào, và ngoại trừ những người sử dụng máy tính để bàn Linux mà không phải là một mối lo thực sự. Dù vấn đề an ninh mới nhất của Linux với RDS (Reliable Datagram Sockets) là một vấn đề thực sự.

RDS là một sáng tạo của Oracle. Nó được sử dụng cho việc gửi đi nhiều thông điệp từ một socket mạng duy nhất tới nhiều điểm đầu cuối. Vấn đề của RDS là việc bạn có thể sử dụng nó để giữ giao tiếp truyền thông trong nội bộ quá trình (IPC) đi mà không có thời gian timeout khi một hệ thống đang chạy dưới các tải rất lớn. Vì thế, bạn hầu như có thể sẽ sử dụng RDS nếu bạn đang chạy một máy chủ DBMS sống vòn hoặc một ứng dụng trong khi LAMP (Linux, Apache, MySQL PHP/Python/Perl).

VSR Security, công ty mà đã thấy lỗ hổng an ninh này, báo cáo rằng nhân Linux, bắt đầu từ 2.6.30, mà là lần đầu tiên sẽ đưa vào RDS, có thể bị tấn công bởi hầu hết bất kỳ người sử dụng nào theo cách mà có thể cho họ trở thành các siêu người sử dụng, nghĩa là root. Ngắn gọn, một số tới qua kết nối Internet có thể, theo lý thuyết, chiếm quyền kiểm soát một máy chủ Linux. Điều này là không tốt.

Vấn đề cốt lõi là việc “Các chức năng của nhân có trách nhiệm cho việc sao chép các dữ liệu giữa nhân và không gian người sử dụng không chứng minh được rằng một địa chỉ được cung cấp cho người sử dụng thực sự trú ngụ trong phân khúc của người sử dụng, [vì thế] một kẻ tấn công cục bộ có thể đư ra những lời gọi chức năng của socket bị làm giả một cách đặc biệt để viết những giá trị giả vào bộ nhớ của nhân. Bằng việc xúc tác cho khả năng này, có khả năng đối với những người sử dụng không có quyền để có được các quyền ưu tiên tới root”.

Tôi không biết liệu điều đó sẽ có làm được thế hay không, nhưng tôi có khả năng sử dụng mã nguồn khai thác để đánh sập máy chủ SuSE Linux trong phòng thí nghiệm của tôi từ xa. Hãy để tôi tự lặp lại: Không tốt. Những người khác đã nói rằng họ đã có khả năng sử dụng mã nguồn khai thác để mở một root shell trong Ubuntu 10.04

Linux has security problems like any other operating system. Most of them aren't that big a deal though. Many of the more serious ones require local user access to cause any real trouble, and except for Linux desktop users that's not a real concern. The latest Linux security problem with Reliable Datagram Sockets (RDS) though is a real problem.

RDS is an Oracle creation. It's used for sending multiple messages from a single network socket to multiple end-points. The point of RDS is that you can use it to keep inter-process communication (IPC) going without timeouts when a system is running under very heavy loads. Thus, you're most likely to be using RDS if you're running a mission-critical DBMS server or a Linux, Apache, MySQL, PHP/Python/Perl (LAMP) stack application.

VSR Security, the company that found the security hole, reports that Linux kernel, starting from 2.6.30, which was the first to include RDS, could be attacked in by almost any user in a way that would let them become the super-user, aka root. In short, someone coming in over an Internet connection could, in theory, take over a Linux server. This is Not good.

The core problem was that the "kernel functions responsible for copying data between kernel and user space failed to verify that a user-provided address actually resided in the user segment, [thus] a local attacker could issue specially crafted socket function calls to write arbitrary values into kernel memory. By leveraging this capability, it is possible for unprivileged users to escalate privileges to root."

I don't know if it will do that, but I was able to use the exploit code to knock out a SUSE Linux server in my lab remotely. Let me repeat myself: Not good. Others have reported that they've been able to use the exploit code to open up a root shell on Ubuntu 10.04.

Đối với vấn đề đánh vào hệ thống của bạn mà có RDS ở trên đó. Đặc biệt, bạn phải có lựa chọn thiết lập cấu hình nhân CONFIG_RDS được thiết lập. Thông thường thì đó là một lựa chọn trong hầu hết các phát tán hơn là một mặc định. Tất nhiên, nếu bạn thực sự cần RDS, bạn có thể chạy nó trên một máy chủ DBMS hoặc máy chủ Web mang tính sống còn. Đó là chỗ mới nhất mà bạn muốn một cuộc tấn công xảy ra. Điều kiện cần thiết khác cho một kẻ tấn công để có được máy chủ của bạn là sẽ có không hạn chế những người sử dụng có quyền tải lên các module gói mang tính gia đình. Điều đó, tôi tiết phải nói, là mặc định trong nhiều phát tán.

May thay, không giống như một số hệ điều hành khác mà tôi có thể gọi tên, các lỗ hổng an ninh có xu hướng được bịt thực sự nhanh trong Linux. Linus Torvalds đã đưa ra một sửa lỗi. Bạn cũng có thể biên dịch một nhân với sửa lỗi này, mà ít người làm thế ngày nay, hoặc chờ nhà phân phối Linux dòng trên của bạn đưa ra sửa lỗi.

Trong lúc chờ đợi, tôi khuyến cáo nếu bạn chạy một máy chủ Linux, và bạn đang sử dụng RDP, thì bạn đăng nhập vào như root và chạy lệnh sau:

echo "alias net-pf-21 off" > /etc/modprobe.d/disable-rds

Máy chủ của bạn có thể chạy chậm hơn cho tới khi sửa lỗi cuối cùng tới, nhưng trong khi chờ đợi bạn sẽ an toàn và đó mới chính là thứ quan trọng nhất.

For the problem to hit your system you have to have RDS on. Specifically, you have to have the CONFIG_RDS kernel configuration option set. That's usually an option in most distributions rather than a default. Of course, if you really need RDS, you're probably running it on a mission critical DBMS or Web server. That's the last place you want an attack to land. The other necessary condition for an attacker to get at your server is for there to be no restrictions on unprivileged users loading packet family modules. That, I regret to say, is the default on many distributions.

Fortunately, unlike some other operating systems I could name, security holes tend to get fixed really quick in Linux. Linus Torvalds has already issued a fix. You can either compile a new kernel with this fix, which few people do these days, or wait for your up-stream Linux distributor to issue the fix.

In the meantime, I recommend if you're running a Linux server, and you're using RDP, that you log in as root and run the following command:

echo "alias net-pf-21 off" > /etc/modprobe.d/disable-rds

Your server may run slower until the final fix is in, but in the meantime you'll be safe and that's the most important thing.

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.