শেলশক বাগটি জেডএসএইচকে প্রভাবিত করে?


38

না ShellShock ব্যাশ বাগ ZSH প্রভাবিত করে?

বাশকে আপগ্রেড করা কি একমাত্র সমাধান?


এই ভিন্ন উত্তর অনুসারে , জেডএসএইচ ফাংশন রফতানি করে না। যেহেতু শেলশক বাগটি এই ব্যাশ নির্দিষ্ট বৈশিষ্ট্যের কারণে ঘটেছিল, তাই অন্যান্য শেলগুলির এটির অভাব সম্ভবত ক্ষতিগ্রস্থ হওয়া উচিত নয়।
lzam

উত্তর:


36

না, এটি ZSH- কে প্রভাবিত করে না।

আপনার এখনও ব্যাশ আপডেট করা আবশ্যক কারণ বেশিরভাগ সিস্টেম স্ক্রিপ্টগুলি ব্যাশের জন্য লেখা এবং শেলশক বাগের জন্য দুর্বল।

আপনার ZSH পরীক্ষা করার জন্য এটি করুন:

env x='() { :;}; echo vulnerable' zsh -c 'echo hello'

এই কোডটি ঠিক কী করে?

  1. env x='() { :;}; echo vulnerable' ভেরিয়েবলের শেষে কমান্ড ব্যবহার করে জানা বাগের সাথে একটি পরিবেশের পরিবর্তনশীল তৈরি করে
  2. zsh -c 'echo hello'সাধারণ হ্যালো দিয়ে জেডএসএইচ শেল চালু করেছে (এবং এক্স সহ সমস্ত এনভেরি ভেরিয়েবলগুলি মূল্যায়ন করছে )

আপনি যদি আউটপুট দেখতে পান:

vulnerable
hello

তারপরে আপনার জেডএসএইচ দুর্বল। খনি (5.0.2) এটি নয়:

$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello

1
আমরা যদি zsh ব্যবহার করি তবে তবুও আমাদের সিস্টেমে বাশ রয়েছে! আমাদের কি সে সম্পর্কে উদ্বিগ্ন হওয়া দরকার? না হলে কেন?
দিনেশকুমার

16
@ দিনেশকুমার: হ্যাঁ, আপনার এখনও উদ্বেগ ও প্যাচ করা উচিত। কারণটি হ'ল এমনকি আপনি zsh ব্যবহার করছেন, অন্যান্য প্রোগ্রাম (ডিএইচসিপি উল্লেখ করা হয়েছিল, অনেকগুলি পিএইচপি অ্যাপ্লিকেশন সম্ভবত করবে, এবং একটি সাধারণ লিনাক্স মেশিনে প্রচুর অন্যান্য প্রোগ্রাম এবং স্ক্রিপ্টগুলি) তখনও বাশকে কল করবে। (আসলে, তাদের উচিত নয়, তবে এটি একটি খারাপ অভ্যাসে পরিণত হয়েছে))
হ্যান্স_মাইন ২

2
@ স্টেফেন্মুরডোচ উবুন্টু ১০.১০ বেশ পুরানো এবং এটি ২ বছরেরও বেশি সময় ধরে সমর্থনযোগ্য নয় ...
ইজকাটা

2
@ গনিমা: কলিং bashসিস্টেমের ইউটিলিটিগুলির জন্য একটি খারাপ অভ্যাস, কারণ বাশ ইনস্টলের নিশ্চয়তা নেই; /bin/shএটি স্ট্যান্ডার্ড শেল এবং একটি সঠিক পসিক্স শেল ইন্টারপ্রেটার হতে হবে।
ফোর্ড

2
fwiw - যখন বাশটি / বিন / শ হিসাবে চালিত হয়, এটি পসিক্স-সামঞ্জস্যপূর্ণ শেল হিসাবে চালিত হয়। এই মোডে তবে এটিতে বাগও রয়েছে। env x='() { :;}; echo vulnerable' sh -c 'echo hello'
ফোর্ড

6

এই লিঙ্ক থেকে :

আপনি নির্ধারণ করতে পারেন যদি আপনি এই পরীক্ষাটি চালিয়ে CVE-2014-6271 এর মূল সমস্যাটির জন্য দুর্বল হন:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'

যদি আপনি এই কমান্ডের আউটপুটে দুর্বল শব্দটি দেখেন তবে আপনার ব্যাশ দুর্বল এবং আপনার আপডেট হওয়া উচিত। নীচে ওএস এক্স 10.8.5 থেকে একটি দুর্বল সংস্করণ দেওয়া হয়েছে:

env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello

নিম্নলিখিত আউটপুটটি অ-দুর্বল বাশ সংস্করণের উদাহরণ।

$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello

এছাড়াও নোট করুন যে লিঙ্কের জেডশেলের নির্দেশাবলী অনুসরণ করে প্যাশগুলি প্যাচ করার সময় দুর্বল হওয়া বন্ধ হয়ে গেছে, যা আমাকে মনে করে যে zshell এর মূল অংশে ব্যাশ ব্যবহার করে।
25:54

9
মনে রাখবেন যে এখানে একটি ফলোআপ হয়েছে : env X='() { (a)=>\' bash -c "echo date"একটি প্যাচড ব্যাশে এবং প্রচুর ত্রুটি ছুঁড়তে সত্ত্বেও, একটি ফাইল তৈরি করে echoযা তারিখটি ধারণ করে। আমি কেন জানতে চাই না।
জোনাস শোফার

@ জোনাস অপেক্ষা করুন, একটি ফাইল তৈরি করুন ?! আমি দুর্বলতা বুঝতে পারি, তবে এটি কেবল উদ্ভট।
দুরকনব

5
@ ভেক্টরসাইজ এর মূলটি ব্যবহার zshকরে নাbashbashআপনার উদাহরণগুলিতে স্পষ্টভাবে বলা হয়। আপনি এই লাইনগুলি চালানোর জন্য কোন শেল ব্যবহার করছেন তা বিবেচ্য নয়। এই দুর্বলতা সদ্য শুরু হওয়া ব্যাশ শেলকে প্রভাবিত করে, এটি যে শেল থেকে চালিত হয়েছে তা নয়।
আডাইফোন

2
@ আদাফোন সুতরাং bashউদাহরণগুলির মধ্যে একটি দ্বারা প্রতিস্থাপন করতে চাই $SHELL
জোনাস শফার 21

6

বাইনারি প্রভাবিত হয় না

এটি zshশেল এক্সিকিউটেবল হিসাবে প্রভাবিত করে না , কারণ এর উত্স কোডটিতে কখনও ত্রুটি থাকে না।
তার মাঝে অনেক similaritys হয় bashএবং zsh, কিন্তু তারা একে অপরের থেকে স্বতন্ত্র বাস্তবায়িত werer। একই বৈশিষ্ট্যটি দুটি ভিন্ন উপায়ে প্রয়োগ করা হয়, এবং - এই প্রসঙ্গে আরও গুরুত্বপূর্ণ - সাধারণত বিভিন্ন ত্রুটি সহ।

ইন্টারেক্টিভ ব্যবহার হয়

পরোক্ষভাবে এটি zshপ্রায় টার্মিনালের শেলটির সাথে ইন্টারেক্টিভভাবে কাজ করা যতটা কাজ করে তার উপর প্রভাব ফেলে bash

এর ব্যবহার bashএত সাধারণ যে কেউ একে কল করা খুব কমই এড়াতে পারে।

এড়াতে অনেক বেশি ব্যবহার

  • আপনি যে স্ক্রিপ্টগুলি জানেন এবং ব্যবহারের প্রত্যাশা করছেন zsh, কিন্তু বাস্তবে এটি রয়েছে bash
  • দোভাষী হিসাবে #!/bin/bashনির্দিষ্ট করতে ব্যবহৃত শেল স্ক্রিপ্ট প্রচুর bash
  • প্রচুর পরিমাণে কমান্ড যা আপনি ধরে নিচ্ছেন সেগুলি বাইনারি, তবে শেল স্ক্রিপ্টগুলি রয়েছে যার মধ্যে কয়েকটি ব্যবহার করছে bash

  • শেল সুস্পষ্টভাবে কার্যকর করা হয় এমন অনেক স্থানে bashব্যবহার করা যেতে পারে এবং সম্ভবত প্রয়োজনও হতে পারে।

    • জটিল xargsকমান্ড, বা gitআর্গুমেন্ট জড়িত উপাধিগুলির মতো
    • টার্মিনাল এমুলেটরগুলির ডিফল্ট শেল
    • আপনি sudo ব্যবহারকারীদের শেল
    • প্রভৃতি

4

না, শেলশক সরাসরি zsh প্রভাবিত করে না।

তবে zsh কে ডিফল্ট শেল হিসাবে ব্যবহার করে এমন অনেক পরিবেশে বাশ ইনস্টল করা আছে। Zsh সহ যে কোনও শেল একটি আপসযুক্ত বাশ শেলকে স্প্যান করার জন্য ব্যবহার করা যেতে পারে:

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

এর বিরুদ্ধে রক্ষা করার জন্য আপনার বাশের কোনও অনর্থক সংস্করণ প্যাচ, আনইনস্টল বা অক্ষম করা উচিত। আপনি এর সাথে সিস্টেম ব্যাশ ইনস্টলটি অক্ষম করতে পারেন chmod:

$ chmod a-x /bin/bash

তবে স্ক্রিপ্টগুলিতে স্পষ্টভাবে ব্যাশ কল করা সাধারণ। স্ক্রিপ্টগুলি যা এটি করে এবং যা ব্যাশ-নির্দিষ্ট স্ক্রিপ্টিং বৈশিষ্ট্যগুলি ব্যবহার করে, ব্যাশ উপলব্ধ না হলে ব্যর্থ হবে। প্যাচিং সর্বোত্তম সমাধান solution


দেখে মনে হচ্ছে zsh " importing function definition" এর জন্য স্পষ্টভাবে বাশ ব্যবহার করবেন ? আমি এসএস-সার্ভার ইঞ্জেকশন দিয়েও পরীক্ষা করেছি: ssh testuser@localhost '() { :;}; echo "$SHELL"'যেখানে আমি testuserলগইন শেলটি সেট করেছি /bin/zshএবং এটি প্রতিধ্বনিত হয়েছে/bin/zsh
বোসলিয়াউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.