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
bashlà 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/shlà 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à echongày. Tôi không muốn biết tại sao.
zshnào không sử dụng bashcố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ừ đó.
bashtrong các ví dụ bằng $SHELL.
Nó không ảnh hưởng zshnhư 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 bashvà 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 zshvỏ 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 bashchỉ 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 bashlà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, bashcó thể được sử dụng và có thể được yêu cầu.
xargslệnh phức tạp hoặc các gitbí 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 testuservỏ đăng nhập của /bin/zshnó và nó lặp lại/bin/zsh