Liệu lỗi Shellshock Bash ảnh hưởng ZSH?
Nâng cấp Bash là giải pháp duy nhất?
Liệu lỗi Shellshock Bash ảnh hưởng ZSH?
Nâng cấp Bash là giải pháp duy nhất?
Câu trả lời:
Không, nó không ảnh hưởng đến ZSH.
Bạn vẫn PHẢI cập nhật bash vì hầu hết các tập lệnh hệ thống được viết cho bash và dễ bị lỗi shellshock.
Để kiểm tra ZSH của bạn, hãy làm điều này:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
Chính xác thì mã này làm gì?
env x='() { :;}; echo vulnerable'
tạo một biến môi trường với lỗi đã biết bằng cách sử dụng lệnh ở cuối biếnzsh -c 'echo hello'
khởi chạy shell ZSH với lời chào đơn giản (và đánh giá tất cả các biến env bao gồm x )Nếu bạn thấy đầu ra:
vulnerable
hello
Sau đó, ZSH của bạn dễ bị tổn thương. Của tôi (5.0.2) không phải là:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bash
là một thói quen xấu cho các tiện ích hệ thống vì bash không được đảm bảo để cài đặt; /bin/sh
là shell tiêu chuẩn và được yêu cầu phải là trình thông dịch shell POSIX chính xác.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
Từ liên kết này :
Bạn có thể xác định xem bạn có dễ bị ảnh hưởng bởi vấn đề ban đầu trong CVE-2014-6271 hay không bằng cách thực hiện kiểm tra này:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Nếu bạn thấy từ dễ bị tổn thương trong đầu ra của lệnh đó thì bash của bạn dễ bị tổn thương và bạn nên cập nhật. Dưới đây là phiên bản dễ bị tấn công từ OS X 10.8.5:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
Đầu ra sau đây là một ví dụ về phiên bản bash không dễ bị tấn công.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
env X='() { (a)=>\' bash -c "echo date"
sẽ, trên một bản vá được vá và mặc dù có rất nhiều lỗi, tạo ra một tệp có tên là echo
ngày. Tôi không muốn biết tại sao.
zsh
nào không sử dụng bash
cốt lõi của nó. bash
được gọi rõ ràng trong các ví dụ của bạn. Không quan trọng bạn đang sử dụng shell nào để chạy các dòng này. Lỗ hổng này ảnh hưởng đến shell bash mới bắt đầu, không phải shell mà nó được chạy từ đó.
bash
trong các ví dụ bằng $SHELL
.
Nó không ảnh hưởng zsh
như shell thực thi, bởi vì mã nguồn của nó không bao giờ có lỗi.
Có nhiều điểm tương đồng giữa bash
và zsh
, nhưng chúng được thực hiện độc lập với nhau. Tính năng tương tự được triển khai theo hai cách khác nhau và - quan trọng hơn trong bối cảnh này - thường là với các lỗi khác nhau.
Một cách gián tiếp, nó ảnh hưởng đến việc làm việc tương tác với zsh
vỏ trong một thiết bị đầu cuối gần như bằng cách làm việc với bash
.
Việc sử dụng bash
chỉ là phổ biến đến mức người ta khó có thể tránh được để gọi nó.
zsh
, nhưng thực sự có chứa bash
. #!/bin/bash
để chỉ định bash
làm trình thông dịch.rất nhiều lệnh mà bạn giả sử là nhị phân, nhưng là các kịch bản shell, một số trong số chúng sử dụng bash
.
ở nhiều nơi mà một shell được thực thi rõ ràng, bash
có thể được sử dụng và có thể được yêu cầu.
xargs
lệnh phức tạp hoặc các git
bí danh liên quan đến các đối sốKhông, Shellshock không ảnh hưởng trực tiếp đến zsh.
Tuy nhiên, nhiều môi trường sử dụng zsh làm shell mặc định cũng đã cài đặt bash. Bất kỳ shell nào, bao gồm zsh, đều có thể được sử dụng để sinh ra shell bash bị xâm nhập:
zsh ❯ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Fri 26 Sep 2014 12:05:57 BST
Để chống lại điều này, bạn nên vá, gỡ cài đặt hoặc vô hiệu hóa bất kỳ phiên bản bash dư thừa nào. Bạn có thể vô hiệu hóa cài đặt bash hệ thống với chmod
:
$ chmod a-x /bin/bash
Tuy nhiên, thông thường các tập lệnh gọi bash rõ ràng. Các tập lệnh thực hiện điều này và các tập lệnh sử dụng các tính năng tập lệnh dành riêng cho bash sẽ thất bại nếu không có bash. Vá là giải pháp tốt nhất.
importing function definition
"? Tôi cũng đã thử nghiệm với máy chủ ssh-server: ssh testuser@localhost '() { :;}; echo "$SHELL"'
nơi tôi đặt testuser
vỏ đăng nhập của /bin/zsh
nó và nó lặp lại/bin/zsh