Video: Shell Scripting Tutorial for Beginners 4 - Pass Arguments to a Bash-Script (Tháng mười một 2024)
Một chuyên gia bảo mật cho biết, một lỗi được phát hiện trong Bash, một trình thông dịch lệnh được sử dụng rộng rãi, gây ra rủi ro bảo mật nghiêm trọng cho các hệ thống Unix và Linux. Và e rằng bạn muốn loại bỏ vấn đề chỉ là sự cố máy chủ, hãy nhớ rằng Mac OS X sử dụng Bash. Nhiều chuyên gia cảnh báo nó có thể tồi tệ hơn Heartbleed.
Lỗ hổng có mặt trong hầu hết các phiên bản của Bash, từ phiên bản 1.13 đến 4.3, theo Stephane Chazelas, một quản trị viên viễn thông và mạng Unix và Linux tại Akamai, người đầu tiên tiết lộ lỗi này. Nhóm ứng phó khẩn cấp máy tính (CERT) tại Bộ An ninh Nội địa đã cảnh báo trong một cảnh báo rằng nếu bị khai thác, lỗ hổng có thể cho phép tin tặc từ xa thực thi mã độc trên hệ thống bị ảnh hưởng. Cơ sở dữ liệu lỗ hổng NIST đã đánh giá lỗi 10 trên 10 về mức độ nghiêm trọng.
"Lỗ hổng này có khả năng là một vấn đề rất lớn", Tod Beardsley, giám đốc kỹ thuật tại Rapid7 nói.
Lỗ hổng phải làm với cách Bash xử lý các biến môi trường. Khi gán một hàm cho một biến, bất kỳ mã bổ sung nào trong định nghĩa cũng sẽ được thực thi. Vì vậy, tất cả những kẻ tấn công phải làm là bằng cách nào đó nối thêm một loạt các lệnh trong định nghĩa đó, một cuộc tấn công tiêm mã cổ điển, và họ sẽ có thể chiếm quyền điều khiển máy bị ảnh hưởng từ xa. Chazelas và các nhà nghiên cứu khác đã xem xét lỗ hổng đã xác nhận rằng có thể khai thác dễ dàng nếu mã được đưa vào các biến môi trường, chẳng hạn như tính năng ForceCommand trong OpenSSH sshd, mô-đun mod_cgi và mod_cgid trong Máy chủ HTTP HTTP hoặc tập lệnh môi trường cho các máy khách DHCP.
"Một số lượng lớn các chương trình trên Linux và các hệ thống UNIX khác sử dụng Bash để thiết lập các biến môi trường sau đó được sử dụng trong khi thực hiện các chương trình khác", Jim Reavis, giám đốc điều hành của Liên minh bảo mật đám mây, viết trong một bài đăng trên blog.
So sánh Heartbleed không thể tránh khỏi
Hãy xem xét hai điều về lỗ hổng này: máy chủ Linux / Unix được sử dụng rộng rãi trong các trung tâm dữ liệu trên toàn thế giới cũng như được nhúng trong nhiều thiết bị; lỗ hổng đã có mặt trong nhiều năm. Vì Bash rất phổ biến, nên việc so sánh với Heartbleed, lỗ hổng trong OpenSSH được phát hiện trở lại vào tháng 4 là không thể tránh khỏi. Robert Graham của Errata Security đã được mệnh danh là ShellShock.
Nhưng nó có phải là Heartbleed 2 không? Hơi khó nói một chút. Đây chắc chắn là một vấn đề nghiêm trọng, bởi vì nó cho phép kẻ tấn công truy cập vào vỏ lệnh, đây là tấm vé vàng để có thể làm bất cứ điều gì chúng muốn trên máy đó.
Hãy nghĩ về kích thước. Các máy chủ Web Apache cung cấp năng lượng cho phần lớn các trang web trên thế giới. Như chúng ta đã học trong Heartbleed, có rất nhiều máy không phải Linux / Unix sử dụng OpenSSH và Telnet. Và DHCP là công cụ giúp chúng ta dễ dàng bật và tắt mạng. Điều này có nghĩa là ngoài máy tính và máy chủ, có thể các hệ thống nhúng khác, chẳng hạn như bộ định tuyến, cũng dễ bị tấn công. Graham Gian của Errata Security, người đã thực hiện một số phân tích kỹ lưỡng nhất về lỗi cho đến nay, đã thực hiện một số lần quét và dễ dàng tìm thấy vài nghìn máy chủ dễ bị tấn công, nhưng tại thời điểm này hơi khó để ước tính mức độ nghiêm trọng của vấn đề.
Tuy nhiên, lỗ hổng Heartbleed đã xuất hiện chỉ bằng cách cài đặt phiên bản OpenSSL dễ bị tấn công. Lỗi này không đơn giản như vậy.
"Nó không" đơn giản "như" đang chạy Bash ", " Beardsley nói. Để máy dễ bị tấn công, cần phải có một ứng dụng (như Apache) lấy đầu vào của người dùng (như tiêu đề Tác nhân người dùng) và đưa nó vào một biến môi trường (kịch bản CGI làm), ông nói. Các khung Web hiện đại thường sẽ không bị ảnh hưởng, ông nói.
Đây có thể là lý do Graham nói trong khi ShellShock nghiêm trọng như Heartbleed, "không cần phải vội vàng và sửa lỗi này. Các máy chủ chính của bạn có thể không dễ bị lỗi này."
Nhưng trước khi chúng ta phát cuồng về các bộ định tuyến và thiết bị nhúng (và Internet of Things), hãy nhớ rằng không phải tất cả các hệ thống đều sử dụng Bash. Ubuntu và các hệ thống có nguồn gốc Debian khác có thể sử dụng trình thông dịch lệnh khác nhau được gọi là Dash. Các thiết bị nhúng thường sử dụng một cái gọi là BusyBox, không dễ bị tổn thương, Roel Schouwenberg, một nhà nghiên cứu cao cấp tại Kaspersky Lab, cho biết trên Twitter.
Dễ bị tổn thương hay không?
Bạn có thể kiểm tra xem bạn có dễ bị tổn thương hay không bằng cách chạy các lệnh sau (mã do CSA cung cấp). Mở một cửa sổ đầu cuối và nhập lệnh sau tại dấu nhắc $:
env x = '() {:;}; echo dễ bị tổn thương 'bash -c "echo đây là một bài kiểm tra"
Nếu bạn dễ bị tổn thương, nó sẽ in:
dễ bị tổn thương
đây là một bài kiểm tra
Nếu bạn đã cập nhật Bash, bạn sẽ chỉ thấy:
đây là một bài kiểm tra
Thông thường, tôi sẽ nói rằng hãy tiếp tục và vá ngay lập tức, nhưng hóa ra các bản vá có sẵn vẫn chưa hoàn thành. Vẫn còn nhiều cách để tiêm lệnh thông qua các biến môi trường ngay cả sau khi vá Bash, Red Hat cho biết sáng nay. Nếu bạn chỉ có một số ít máy móc, có thể đáng để tiếp tục và áp dụng các bản vá có sẵn, nhưng nếu bạn có hàng ngàn máy để vá, có lẽ bạn nên chờ thêm vài giờ nữa. Tất cả các bản phân phối Linux ngược dòng (và hy vọng Apple!) Đang khắc phục sự cố ngay bây giờ.
"Hãy nhớ rằng, ngay cả khi bạn chưa bao giờ nghe nói về Bash trước đây hoặc không chạy nó, bạn rất có thể có phần mềm chạy trên máy tính của bạn, điều này tạo ra các quy trình của Bash", nhà tư vấn bảo mật độc lập Graham Cluley nói.