না ShellShock ব্যাশ বাগ ZSH প্রভাবিত করে?
বাশকে আপগ্রেড করা কি একমাত্র সমাধান?
না ShellShock ব্যাশ বাগ ZSH প্রভাবিত করে?
বাশকে আপগ্রেড করা কি একমাত্র সমাধান?
উত্তর:
না, এটি ZSH- কে প্রভাবিত করে না।
আপনার এখনও ব্যাশ আপডেট করা আবশ্যক কারণ বেশিরভাগ সিস্টেম স্ক্রিপ্টগুলি ব্যাশের জন্য লেখা এবং শেলশক বাগের জন্য দুর্বল।
আপনার ZSH পরীক্ষা করার জন্য এটি করুন:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
এই কোডটি ঠিক কী করে?
env x='() { :;}; echo vulnerable' ভেরিয়েবলের শেষে কমান্ড ব্যবহার করে জানা বাগের সাথে একটি পরিবেশের পরিবর্তনশীল তৈরি করেzsh -c 'echo hello'সাধারণ হ্যালো দিয়ে জেডএসএইচ শেল চালু করেছে (এবং এক্স সহ সমস্ত এনভেরি ভেরিয়েবলগুলি মূল্যায়ন করছে )আপনি যদি আউটপুট দেখতে পান:
vulnerable
hello
তারপরে আপনার জেডএসএইচ দুর্বল। খনি (5.0.2) এটি নয়:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bashসিস্টেমের ইউটিলিটিগুলির জন্য একটি খারাপ অভ্যাস, কারণ বাশ ইনস্টলের নিশ্চয়তা নেই; /bin/shএটি স্ট্যান্ডার্ড শেল এবং একটি সঠিক পসিক্স শেল ইন্টারপ্রেটার হতে হবে।
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
এই লিঙ্ক থেকে :
আপনি নির্ধারণ করতে পারেন যদি আপনি এই পরীক্ষাটি চালিয়ে 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
env X='() { (a)=>\' bash -c "echo date"একটি প্যাচড ব্যাশে এবং প্রচুর ত্রুটি ছুঁড়তে সত্ত্বেও, একটি ফাইল তৈরি করে echoযা তারিখটি ধারণ করে। আমি কেন জানতে চাই না।
zshকরে নাbash । bashআপনার উদাহরণগুলিতে স্পষ্টভাবে বলা হয়। আপনি এই লাইনগুলি চালানোর জন্য কোন শেল ব্যবহার করছেন তা বিবেচ্য নয়। এই দুর্বলতা সদ্য শুরু হওয়া ব্যাশ শেলকে প্রভাবিত করে, এটি যে শেল থেকে চালিত হয়েছে তা নয়।
bashউদাহরণগুলির মধ্যে একটি দ্বারা প্রতিস্থাপন করতে চাই $SHELL।
এটি zshশেল এক্সিকিউটেবল হিসাবে প্রভাবিত করে না , কারণ এর উত্স কোডটিতে কখনও ত্রুটি থাকে না।
তার মাঝে অনেক similaritys হয় bashএবং zsh, কিন্তু তারা একে অপরের থেকে স্বতন্ত্র বাস্তবায়িত werer। একই বৈশিষ্ট্যটি দুটি ভিন্ন উপায়ে প্রয়োগ করা হয়, এবং - এই প্রসঙ্গে আরও গুরুত্বপূর্ণ - সাধারণত বিভিন্ন ত্রুটি সহ।
পরোক্ষভাবে এটি zshপ্রায় টার্মিনালের শেলটির সাথে ইন্টারেক্টিভভাবে কাজ করা যতটা কাজ করে তার উপর প্রভাব ফেলে bash।
এর ব্যবহার bashএত সাধারণ যে কেউ একে কল করা খুব কমই এড়াতে পারে।
zsh, কিন্তু বাস্তবে এটি রয়েছে bash। #!/bin/bashনির্দিষ্ট করতে ব্যবহৃত শেল স্ক্রিপ্ট প্রচুর bash।প্রচুর পরিমাণে কমান্ড যা আপনি ধরে নিচ্ছেন সেগুলি বাইনারি, তবে শেল স্ক্রিপ্টগুলি রয়েছে যার মধ্যে কয়েকটি ব্যবহার করছে bash।
শেল সুস্পষ্টভাবে কার্যকর করা হয় এমন অনেক স্থানে bashব্যবহার করা যেতে পারে এবং সম্ভবত প্রয়োজনও হতে পারে।
xargsকমান্ড, বা gitআর্গুমেন্ট জড়িত উপাধিগুলির মতোনা, শেলশক সরাসরি 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
importing function definition" এর জন্য স্পষ্টভাবে বাশ ব্যবহার করবেন ? আমি এসএস-সার্ভার ইঞ্জেকশন দিয়েও পরীক্ষা করেছি: ssh testuser@localhost '() { :;}; echo "$SHELL"'যেখানে আমি testuserলগইন শেলটি সেট করেছি /bin/zshএবং এটি প্রতিধ্বনিত হয়েছে/bin/zsh