Professional Documents
Culture Documents
Shellshock
Shellshock
Shellshock, còn được gọi là Bashdoor, là một lỗ hổng bảo mật trong
Bash, được công bố rộng rãi vào ngày 25 tháng 9 năm 2014. Nhiều dịch
vụ mạng, như các máy chủ web, sử dụng Bash để thực thi lệnh khi cần
thiết, cho phép kẻ tấn công khai thác lỗ hổng bảo mật Shellshock ở những
phiên bản Bash lỗi để phục vụ những mục đích đen tối của chúng. Lỗ
hổng bảo mật này giúp kẻ tấn công chiếm quyền điểu khiển các máy nạn
nhân mà không cần phải qua bước xác thực.
Dưới đây là các báo cáo về tình trạng tấn công sử dụng lỗi Shellshock của
các tổ chức an ninh mạng.
Trong vòng một giờ kể từ khi lỗ hổng bảo mật Bash được thông báo, có
rất nhiều máy tính đã bị tấn công bằng lỗi Shellshock. Ngày 25 tháng 9
năm 2014, các máy tính ma (botnets) bị kiểm soát dựa trên lỗi Shellshock
được các attacker sử dụng để thực hiện các tấn công DDoS và dò tìm các
lỗ hổng bảo mật khác trên các máy nạn nhân. Kaspersky Labs báo cáo
rằng nhiều máy tính bị kiểm soát bởi tấn công Shellshock, được gọi là
“Thanks-Rob”, đã thực hiện tấn công DDoS tới 3 mục tiêu chưa được xác
định.
Vào ngày 26 tháng 9 năm 2014, một mạng máy tính ma có liên quan đến
Shellshock được gọi là “wopbot” đã được báo cáo, nó được sử dụng để
tấn công DDoS tới Akamai Technologies và thực hiện dò tìm các lỗ hổng
bảo mật nhằm vào bộ Quốc phòng Mỹ.
Ngày 26 tháng 9, công ty bảo mật Incapsula đưa ra báo cáo có 17.400 tấn
công vào hơn 1.800 trang web, khởi nguồn từ 400 địa chỉ IP, trong 24 giờ
trước đó; 55% tấn công đến từ Trung Quốc và Mỹ. Ngày 30 tháng 9,
công ty CloudFlare công bố rằng có khoảng 1,5 triệu tấn công và thăm dò
mỗi ngày liên quan đến lỗi Shellshock.
Ngày mùng 6 tháng 10, các máy chủ Yahoo được báo cáo là đã bị kiểm
soát bởi một tấn công liên quan đến lỗi Shellshock.
Để kiểm tra máy bạn có bị lỗi Shellshock hay không thì bạn có thể sử
dụng đoạn mã như sau:
vulnerable
this is a test
IV. Tôi phải làm gì để sửa lỗi Shellshock?
Để sửa lỗi Shellshock bạn chỉ cần update Bash lên phiên bản mới nhất.
Sau khi update thì bạn nên kiểm tra lại xem lỗi đã được sửa chưa theo
như cách làm ở trên để chắc chắn rằng phiên bản Bash không còn chứa
lỗi Shellshock nữa.
Phần này dành cho những người muốn tìm hiểu sâu về cơ chế hoạt động
của Shellshock và các kiểu tấn công sử dụng Shellshock.
Trên các hệ điều hành tựa Unix và một số hệ điều hành khác sử dụng
Bash để chạy các chương trình bằng dòng lệnh, mỗi chương trình khi
chạy sẽ có một danh sách các cặp name/value được gọi là các biến môi
trường. Khi một chương trình khởi chạy một chương trình khác nó sẽ
cung cấp một danh sách khởi tạo các biến môi trường cho chương trình
mới này. Mặt khác, Bash lưu giữ một danh sách các hàm chứa một tập
các lệnh mà sẽ được thực thi cùng với chương trình.
Vì Bash hoạt động như là một trình thông dịch lệnh và vừa được coi như
là một lệnh, nên có thể chạy Bash từ chính môi trường của nó. Khi điều
này xảy ra, thực thể ban đầu có thể export các biến môi trường và các
định nghĩa hàm thành các thực thể mới. Các định nghĩa hàm được export
bằng cách mã hóa chúng cùng với các biến môi trường có giá trị bắt đầu
bằng () theo sau là định nghĩa hàm.
Thực thể mới của Bash, khi chạy, sẽ tìm các biến môi trường có giá trị
theo định dạng này và chuyển chúng thành các hàm. Nó thực hiện việc
chuyển đổi bằng cách tạo ra một đoạn mã từ giá trị của biến môi trường
và thực thi nó, vấn đề ở chỗ các phiên bản Bash lỗi không kiểm tra tính
hợp lệ của một định nghĩa hàm do đó lỗ hổng bảo mật sẽ được tạo ra
theo cách này.
Từ đây ta có thể giải thích cách hoạt động cho đoạn mã sau:
2. Các cách tấn công vào một server chứa lỗi Shellshock
Việc tấn công vào Shellshock là hết sức đơn giản, đơn giản tới mức một
user bình thường không cần nhiều kiến thức về IT cũng có thể thực hiện
một tấn công Shellshock được. Để thực hiện tấn công Shellshock bạn chỉ
cần sử dụng lệnh có dạng như sau:
Khi một web server sử dụng CGI để xử lý một request, nó truyền các
thông tin có trong request tới chương trình xử lý sử dụng các biến môi
trường. Ví dụ, biến HTTP_USER_AGENT thông thường chứa tên
chương trình gửi request đến web server. Nếu trình xử lý request là một
Bash script, hoặc nếu nó thực thi một lệnh nào đó ví dụ như việc sử dụng
system call, Bash sẽ nhận vào các biến môi trường được truyền vào bởi
server và xử lý chúng. Kẻ tấn công sử dụng phương thức này để kích hoạt
tấn công Shellshock với một request đặc biệt tới server.
SSH server
OpenSSH có một tính năng là ForceCommand, thực hiện một lệnh nào
đó khi user đăng nhập vào, thay vì chạy shell để user tương tác với hệ
thống. Lệnh được thực hiện ngay cả khi user chỉ định rằng nên chạy một
lệnh khác; trong trường hợp đó, lệnh ban đầu được đưa vào biến môi
trường SSH_ORIGINAL_COMMAND. Khi chạy lệnh, Bash sẽ phân tích
biến môi trường SSH_ORIGINAL_COMMAND ngay khi khởi động, và
chạy các lệnh được nhúng vào trong đó. Kẻ tấn công sử dụng phương
thức này của SSH server để chiếm quyền điều khiên của máy nạn nhân có
chứa lỗi Shellshock.
DHCP
Một vài DHCP client có thể truyền các lệnh cho Bash; hệ thống chứa lỗi
bảo mật có thể bị tấn công khi kết nối tới một mạng Wi-Fi công cộng.
Một DHCP client thường yêu cầu xin cấp một địa chỉ IP từ một DHCP
server, nhưng nó cũng có thể được cung cấp một chuỗi các tùy chọn
thêm. Một DHCP server có thể cung cấp, trong một trong những tùy
chọn, một chuỗi kí tự đặc biệt để khai thác lỗi bảo mật Shellshock.
Email system
Tùy thuộc vào cấu hình hệ thống xác định, một gmail mail server có thể
truyền tham số đầu vào từ bên ngoài vào Bash theo cách có thể khai thác
được lỗi bảo mật Shellshock.
Để thực hiện các tấn công Shellshock thì trước tiên kẻ tấn công phải xác
định các máy mục tiêu và xác định xem các máy đó có dính lỗi bảo mật
Shellshock hay không. Sau đây là một số tấn công sử dụng lỗi
Shellshock.
Thăm dò
Từ chối dịch vụ
để máy mục tiêu thực hiện download đoạn mã perl và thực thi đoạn mã
đó. Đoạn chương trình này cho phép kẻ tấn công thực hiện truy cập từ xa
tới máy nạn nhân.
I. Shellshock là gì?
Shellshock, còn được gọi là Bashdoor, là một lỗ hổng bảo mật trong
Bash, được công bố rộng rãi vào ngày 25 tháng 9 năm 2014. Nhiều dịch
vụ mạng, như các máy chủ web, sử dụng Bash để thực thi lệnh khi cần
thiết, cho phép kẻ tấn công khai thác lỗ hổng bảo mật Shellshock ở những
phiên bản Bash lỗi để phục vụ những mục đích đen tối của chúng. Lỗ
hổng bảo mật này giúp kẻ tấn công chiếm quyền điểu khiển các máy nạn
nhân mà không cần phải qua bước xác thực.
Trong vòng một giờ kể từ khi lỗ hổng bảo mật Bash được thông báo, có
rất nhiều máy tính đã bị tấn công bằng lỗi Shellshock. Ngày 25 tháng 9
năm 2014, các máy tính ma (botnets) bị kiểm soát dựa trên lỗi Shellshock
được các attacker sử dụng để thực hiện các tấn công DDoS và dò tìm các
lỗ hổng bảo mật khác trên các máy nạn nhân. Kaspersky Labs báo cáo
rằng nhiều máy tính bị kiểm soát bởi tấn công Shellshock, được gọi là
“Thanks-Rob”, đã thực hiện tấn công DDoS tới 3 mục tiêu chưa được xác
định.
Vào ngày 26 tháng 9 năm 2014, một mạng máy tính ma có liên quan đến
Shellshock được gọi là “wopbot” đã được báo cáo, nó được sử dụng để
tấn công DDoS tới Akamai Technologies và thực hiện dò tìm các lỗ hổng
bảo mật nhằm vào bộ Quốc phòng Mỹ.
Ngày 26 tháng 9, công ty bảo mật Incapsula đưa ra báo cáo có 17.400 tấn
công vào hơn 1.800 trang web, khởi nguồn từ 400 địa chỉ IP, trong 24 giờ
trước đó; 55% tấn công đến từ Trung Quốc và Mỹ. Ngày 30 tháng 9,
công ty CloudFlare công bố rằng có khoảng 1,5 triệu tấn công và thăm dò
mỗi ngày liên quan đến lỗi Shellshock.
Ngày mùng 6 tháng 10, các máy chủ Yahoo được báo cáo là đã bị kiểm
soát bởi một tấn công liên quan đến lỗi Shellshock.
vulnerable
this is a test
IV. Tôi phải làm gì để sửa lỗi Shellshock?
Để sửa lỗi Shellshock bạn chỉ cần update Bash lên phiên bản mới nhất.
Sau khi update thì bạn nên kiểm tra lại xem lỗi đã được sửa chưa theo
như cách làm ở trên để chắc chắn rằng phiên bản Bash không còn chứa
lỗi Shellshock nữa.
Vì Bash hoạt động như là một trình thông dịch lệnh và vừa được coi như
là một lệnh, nên có thể chạy Bash từ chính môi trường của nó. Khi điều
này xảy ra, thực thể ban đầu có thể export các biến môi trường và các
định nghĩa hàm thành các thực thể mới. Các định nghĩa hàm được export
bằng cách mã hóa chúng cùng với các biến môi trường có giá trị bắt đầu
bằng () theo sau là định nghĩa hàm.
Thực thể mới của Bash, khi chạy, sẽ tìm các biến môi trường có giá trị
theo định dạng này và chuyển chúng thành các hàm. Nó thực hiện việc
chuyển đổi bằng cách tạo ra một đoạn mã từ giá trị của biến môi trường
và thực thi nó, vấn đề ở chỗ các phiên bản Bash lỗi không kiểm tra tính
hợp lệ của một định nghĩa hàm do đó lỗ hổng bảo mật sẽ được tạo ra theo
cách này.
Từ đây ta có thể giải thích cách hoạt động cho đoạn mã sau:
2. Các cách tấn công vào một server chứa lỗi Shellshock
Việc tấn công vào Shellshock là hết sức đơn giản, đơn giản tới mức một
user bình thường không cần nhiều kiến thức về IT cũng có thể thực hiện
một tấn công Shellshock được. Để thực hiện tấn công Shellshock bạn chỉ
cần sử dụng lệnh có dạng như sau:
SSH server
OpenSSH có một tính năng là ForceCommand, thực hiện một lệnh nào đó
khi user đăng nhập vào, thay vì chạy shell để user tương tác với hệ thống.
Lệnh được thực hiện ngay cả khi user chỉ định rằng nên chạy một lệnh
khác; trong trường hợp đó, lệnh ban đầu được đưa vào biến môi trường
SSH_ORIGINAL_COMMAND. Khi chạy lệnh, Bash sẽ phân tích biến
môi trường SSH_ORIGINAL_COMMAND ngay khi khởi động, và chạy
các lệnh được nhúng vào trong đó. Kẻ tấn công sử dụng phương thức này
của SSH server để chiếm quyền điều khiên của máy nạn nhân có chứa lỗi
Shellshock.
DHCP
Một vài DHCP client có thể truyền các lệnh cho Bash; hệ thống chứa lỗi
bảo mật có thể bị tấn công khi kết nối tới một mạng Wi-Fi công cộng.
Một DHCP client thường yêu cầu xin cấp một địa chỉ IP từ một DHCP
server, nhưng nó cũng có thể được cung cấp một chuỗi các tùy chọn
thêm. Một DHCP server có thể cung cấp, trong một trong những tùy
chọn, một chuỗi kí tự đặc biệt để khai thác lỗi bảo mật Shellshock.
Email system
Tùy thuộc vào cấu hình hệ thống xác định, một gmail mail server có thể
truyền tham số đầu vào từ bên ngoài vào Bash theo cách có thể khai thác
được lỗi bảo mật Shellshock.
Thăm dò
Kẻ tấn công sẽ sử dụng một đoạn mã theo dạng
Từ chối dịch vụ
Tấn công này có thể sử dụng một đoạn mã như sau:
để máy mục tiêu thực hiện download đoạn mã perl và thực thi đoạn mã
đó. Đoạn chương trình này cho phép kẻ tấn công thực hiện truy cập từ xa
tới máy nạn nhân.