অবস্থা
অ্যাপল শেলশক এবং সম্পর্কিত দুর্বলতার জন্য বাশ সুরক্ষা সংস্থাগুলি " ওএস এক্স বাশ আপডেট ০.০ " হিসাবে প্রকাশ করেছে। ওএস এক্স মাউন্টেন লায়ন ভি 10.8.5 বা ওএস এক্স মাভারিক্স ভি 10.9.5 (তারা সিকিউরিটি আপডেট 2014-005 এ অন্তর্ভুক্ত রয়েছে ) ব্যবহার করে এমন লোকদের জন্য সাধারণ সিস্টেম আপডেটের মাধ্যমে এগুলি ইনস্টল করা যেতে পারে এবং ম্যানুয়ালিও ইনস্টল করা যেতে পারে। অফিসিয়াল অ্যাপল ফিক্সগুলি ওএস এক্স লায়ন v10.7.5 এবং ওএস এক্স লায়ন সার্ভার v10.7.5 এর জন্য উপলব্ধ তবে সেগুলি কেবল ম্যানুয়াল ডাউনলোডের মাধ্যমে উপলব্ধ। অপারেটিং সিস্টেম সংস্করণের উপর ভিত্তি করে সুরক্ষা সংশোধনগুলি বিভিন্ন ইউআরএলের মাধ্যমে উপলব্ধ:
(নতুন প্যাচগুলি প্রকাশিত হলে এগুলি এখানে রাখুন তবে দয়া করে রেফারেন্সের জন্য এই বিদ্যমানগুলি রাখুন keep)
অ্যাপল প্যাচ শেলশক এবং অন্যান্য বেশ কয়েকটি দুর্বলতার যত্ন নেয় এবং বেশিরভাগ মানুষের পক্ষে এটি ঠিক fine tl; ডাঃ লোকেরা এখানে পড়া বন্ধ করতে পারে।
তবুও, শেলশক বাগ দ্বারা বাশের প্রতি আকৃষ্ট দৃষ্টি আকর্ষণ করার ফলে অনেক গবেষক বাশকে কড়া নজর দিতে বাধ্য করেছেন এবং আরও বেশি করে (শোষণ করা কঠিন) দুর্বলতাগুলি খুঁজে পাওয়া যায়। আপনি যদি সুরক্ষার বিষয়ে অত্যন্ত উদ্বিগ্ন হন (কারণ সম্ভবত আপনি কোনও সর্বজনীন উপলভ্য ওয়েব সাইট হোস্ট করার জন্য ওএস এক্স সার্ভার চালাচ্ছেন) তবে আপনি নিজেরাই বাশ সংকলনের মাধ্যমে দুর্বলতা এবং প্যাচগুলি চালিয়ে যেতে চাইলে (চেষ্টা করার) চেষ্টা করতে পারেন। অন্যথায়, এটি সম্পর্কে চিন্তা করবেন না।
ভবিষ্যতে ধুলো যখন আরও দুর্বলতাগুলি সন্ধানে স্থির হয় তখন ভবিষ্যতে কিছুটা সময় কাটানোর জন্য অ্যাপলের জন্য আরও একটি আপডেট প্রকাশ করার জন্য সন্ধান করুন।
ব্যাশ ৩.২, প্যাচ ৫২, ৫৩, এবং ৫ ((যা বাশ ৪.৩ প্যাচগুলিতে 25, 26 এবং 27 এর সাথে মিল রয়েছে) এর জন্য ব্যাশের নিজস্ব প্যাচগুলির একটি অফিশিয়াল সেট পাওয়া যায় যা সিভিই -2014-6271 এবং সিভিই-2014-7169 উভয়ই স্থির করে, পাশাপাশি নীচে প্রদর্শিত 'গেম ওভার'। এটি আমার দ্বারা পরীক্ষিত হয়েছে ( @ অ্যালব্লিউ ) এবং সেই অনুযায়ী পোস্টটি আপডেট করা হয়েছে (এবং তারপরে অতিরিক্ত আপডেটগুলি করা হয়েছিল: প্যাচ 54 এ থামার জন্য পোস্টটি সংশোধন 41 দেখুন )।
বাশের বিরুদ্ধে অনেকগুলি অতিরিক্ত দুর্বলতার খবর পাওয়া গেছে। মিশাল জালিউস্কির পোস্ট অনুসারে আপনার যদি প্যাচ 54 থাকে (এবং সম্ভবত অ্যাপলটির অফিসিয়াল প্যাচ থাকে) "এই পৃথক বাগগুলির স্থিতি সম্পর্কে অবলম্বন করার কোনও লাভ নেই, কারণ তাদের আর সুরক্ষার ঝুঁকি তৈরি করা উচিত নয়:"
CVE-2014-6271 - স্টিফেনের দ্বারা পাওয়া মূল আরসিই। Bash43-025 এবং অন্যান্য সংস্করণের জন্য 24 সেপ্টেম্বর এন্ট্রি দ্বারা সংশোধন করা হয়েছে।
CVE-2014-7169 - তাভিস দ্বারা ফাইল তৈরি / টোকেন গ্রাহক বাগ। Bash43-026 ও কো দ্বারা স্থির (26 সেপ্টেম্বর)
CVE-2014-7186 - সম্ভবত কোনও সেকেন্ড-ঝুঁকি 10+ ফ্লোরিয়ান এবং টডের দ্বারা পাওয়া এখানে-ডক ক্রাশ। Bash43-028 & সহ (অক্টোবর 1) দ্বারা স্থির
CVE-2014-7187 - একটি ক্র্যাশবিহীন, সম্ভবত কোনও-সেকেন্ড-ঝুঁকি অফ-বাই-ফ্লোরিয়ানের দ্বারা পাওয়া গেছে। Bash43-028 & সহ (অক্টোবর 1) দ্বারা স্থির
CVE-2014-6277 - অবিচ্ছিন্ন মেমরি ইস্যু, প্রায় অবশ্যই মিশাল জালিউস্কি খুঁজে পেয়েছে আরসিই। এখনও কোনও নির্দিষ্ট প্যাচ নেই।
সিভিই -2014-6278 - মিশাল জালিউস্কি দ্বারা পাওয়া কমান্ড ইঞ্জেকশন আরসিই। এখনও কোনও নির্দিষ্ট প্যাচ নেই।
এটা বেশ বিভ্রান্তিকর হয়। ভাগ্যক্রমে অফিসিয়াল ব্যাশ রক্ষণাবেক্ষণকারী চেট রেমি প্যাচ ম্যাপিংয়ের জন্য সিভিই পোস্ট করেছে । তার পোস্টটি ব্যাশের ৪.৩ এর জন্য প্যাচগুলি বোঝায়, আমি (@ ওল্ডপ্রো) তাদের ব্যাশ ৩.২ এর জন্য প্যাচগুলিতে অনুবাদ করেছি, যা এটি ওএস এক্সের ক্ষেত্রে প্রযোজ্য Also এছাড়াও, এই পোস্টটি যেহেতু তিনি প্যাচ 57 প্রকাশ করেছেন, তাই আমি এটি নীচে যুক্ত করেছি:
bash32-052 CVE-2014-6271 2014-09-24
bash32-053 CVE-2014-7169 2014-09-26
bash32-054 exported function namespace change 2014-09-27 ("Game Over")
bash32-055 CVE-2014-7186/CVE-2014-7187 2014-10-01
bash32-056 CVE-2014-6277 2014-10-02
bash32-057 CVE-2014-6278 2014-10-05
একটি সময়রেখা এবং আরও বিশদ বিবরণের জন্য ডেভিড এ হুইলারের পোস্ট দেখুন ।
@ অ্যালব্লিউ 55 টি প্যাচের মাধ্যমে বিল্ডিং নির্দেশাবলী পোস্ট করেছেন I
মূল দুর্বলতার জন্য পরীক্ষা করা
আপনি নির্ধারণ করতে পারেন যদি আপনি এই পরীক্ষাটি চালিয়ে CVE-2014-6271 এর মূল সমস্যাটির জন্য দুর্বল হন :
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
উপরের আউটপুটটি অ-দুর্বল bash
সংস্করণের উদাহরণ । যদি আপনি vulnerable
এই কমান্ডের আউটপুটে শব্দটি দেখতে পান তবে আপনার bash
দুর্বলতা এবং আপনার আপডেট হওয়া উচিত। নীচে ওএস এক্স 10.8.5 থেকে একটি দুর্বল সংস্করণ দেওয়া হয়েছে:
নতুন ক্ষতিগ্রস্থতার জন্য পরীক্ষা করা হচ্ছে
মূল পোস্টে একটি আপডেট হয়েছে এবং বাশ 3.2.52 (1) এখনও দুর্বলতার বিভিন্নতার পক্ষে ঝুঁকির মধ্যে রয়েছে, সিভিই -2014-7169 এ সংজ্ঞায়িত হয়েছে
$ rm -f echo
$ 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'
Thu 25 Sep 2014 08:50:18 BST
উপরের আউটপুটটি দুর্বল bash
সংস্করণের উদাহরণ । যদি আপনি সেই কমান্ডের আউটপুটে কোনও তারিখ দেখতে পান তবে আপনার bash
পক্ষে ঝুঁকি রয়েছে।
"গেম ওভার" রোধ করতে স্বয়ংক্রিয়ভাবে আমদানি করা ফাংশনগুলি অক্ষম করা হচ্ছে
গবেষকরা উল্লেখ করেছেন, এটিকে দুর্বলতা হিসাবে শ্রেণিবদ্ধ না করে, যে কোনও স্ক্রিপ্ট স্বয়ংক্রিয়ভাবে আমদানি করা ফাংশনগুলি ব্যবহার করে সাবস্কেলে কোনও ফাংশন হাইজ্যাক করতে পারে:
$ env ls="() { echo 'Game Over'; }" bash -c ls
Game over
প্রভাবিত সিস্টেমে উপরের কোডটি Game Over
আপনার কাছ থেকে প্রত্যাশিত ডিরেক্টরি তালিকার পরিবর্তে প্রদর্শিত হবে ls
। স্পষ্টতই, echo 'Game Over'
আপনি চান যে কোনও নেভিগেশন কোড দ্বারা প্রতিস্থাপিত হতে পারে। এটি "গেম ওভার" বাগ হিসাবে পরিচিত হয়ে উঠেছে।
প্যাচ ৫৪ এর প্রাপ্যতার পূর্বে নেটবিএসডি এবং ফ্রিবিএসডি উভয়ই ডিফল্টরূপে স্বয়ংক্রিয়ভাবে আমদানি করা বাশ ফাংশনকে অক্ষম করে, আংশিকভাবে "গেম ওভার" প্রতিরোধ করতে পারে তবে মূলত পার্সারে (যেমন সিভিই-২০১৪-১6969 as ) এর মতো আরও ত্রুটি থাকতে পারে অনুসন্ধান চালিয়ে যাওয়া, এবং একটি নতুন কমান্ড লাইনের পতাকা যুক্ত করা--import-functions
পুরানো ডিফল্ট আচরণটি পুনরায় সক্ষম করতে। আমি (@ অ্যালব্লিউ) অন্যদের ব্যবহার করার জন্য একটি প্যাচ প্রস্তুত করেছি (৩.২.৫৩ এর বিপরীতে) যদি তারাও এই আচরণটি গ্রহণ করতে চায় এবং নীচে এটি অন্তর্ভুক্ত করে থাকে have ডিফল্টরূপে এই প্যাচটি নীচের বিল্ড স্ক্রিপ্টে সক্ষম নয়। আমি (@ ওল্ডপ্রো) বিশ্বাস করি যে এই প্যাচটি আর দরকার নেই বা একটি ভাল ধারণা, কারণ এটি পিছনের সামঞ্জস্যতা এবং এটি যে দুর্বলতাগুলির বিরুদ্ধে সুরক্ষিত করে তা প্যাচ 54 এবং পূর্ববর্তী প্যাচগুলির দ্বারা খুব ভালভাবে মোকাবেলা করা হয়েছে, এবং এই অফিশিয়াল প্যাচ সক্ষম করা ভবিষ্যতের প্যাচগুলি প্রয়োগ হতে বাধা দেয় ।
(প্রশ্ন সম্পাদকদের কাছে নোট; দয়া করে এটি ডিফল্ট হিসাবে সক্ষম করবেন না, কারণ এটি একটি বেসরকারী প্যাচ is
a0c5c4d66742fddd0a35001cb91798a5fbf8a2f5 Import_funitions.patch
প্যাচটি export ADD_IMPORT_FUNCTIONS_PATCH=YES
বিল্ড চালানোর আগে চালিয়ে সক্ষম করা যেতে পারে । দ্রষ্টব্য যে এই প্যাচটি সক্ষম করার ফলে প্যাচ 54 এবং যে কোনও ভবিষ্যত প্যাচ অক্ষম হবে কারণ ভবিষ্যতের প্যাচগুলি অনানুষ্ঠানিক প্যাচের সাথে সামঞ্জস্য হওয়ার নিশ্চয়তা দেওয়া যায় না।
অ্যাপল প্যাচে গেম ওভার দুর্বলতা রয়েছে, সাজানো
টুইটারে @ake_____ দ্বারা নির্দেশিত হিসাবে সরকারী অ্যাপল প্যাচটি এখনও কার্যকর করতে সক্ষম পরিবেশের আঁটসাঁট পোশাকের জন্য ঝুঁকিপূর্ণ:
$ env '__BASH_FUNC<ls>()'="() { echo Game Over; }" bash -c ls
Game Over
এটি কতটা গুরুত্বপূর্ণ তা তাদের নিজেরাই সিদ্ধান্ত নিতে হবে। আমি (@ ওল্ডপ্রো) মনে করি এটি চিন্তার কিছু নেই কারণ এই আচরণের জন্য কোনও পরিচিত শোষণ নেই (এটি এমনকি সিভিই সনাক্তকারীও দেওয়া হয়নি) কারণ সাধারণভাবে অপ্রয়োজনীয় দূরবর্তী আক্রমণকারীরা পরিবেশের পরিবর্তনশীলের নাম নির্ধারণ করতে পারে না এবং অধিকারযুক্ত আক্রমণকারীরা এটি করতে পারে না তাদের ইতিমধ্যে নেই এমন সুযোগ-সুবিধাগুলি অর্জন করতে এটি ব্যবহার করুন (কমপক্ষে কোনও অতিরিক্ত দুর্বলতার শিকার না করে)।
সামান্য ব্যাকগ্রাউন্ড সরবরাহ করতে, বাশ আপনাকে ফাংশনগুলি সংজ্ঞায়িত করতে দেয় এবং ততোধিকভাবে আপনাকে কমান্ডের মাধ্যমে সেই ফাংশনগুলি সাব-শেলগুলিতে রফতানি করার অনুমতি দেয় export -f
। এটি ফাংশন সংজ্ঞাতে তার মান সেট করে ফাংশন হিসাবে একই নামের সাথে একটি পরিবেশের পরিবর্তনশীল তৈরি করে প্রয়োগ করা হত। সুতরাং
$ ls () { echo 'Game Over'; }
$ export -f ls
$ echo $ls
Game Over
এটি ঘটেছে কারণ export -f ls
একটি পরিবেশের পরিবর্তনশীল নাম তৈরি করা হয়েছে ls
। "গেম ওভার" দুর্বলতা হ'ল আপনি প্রথমে ফাংশনটি সংজ্ঞায়িত না করেই সরাসরি এই পরিবেশের পরিবর্তনশীল তৈরি করতে পারবেন, যার অর্থ যদি আপনি সঠিক ভেরিয়েবলের নামটি ইনজেক্ট করতে পারেন তবে আপনি একটি কমান্ড হাইজ্যাক করতে পারেন। অ্যাপল সঠিক নামের সাথে একটি ভেরিয়েবল তৈরি করা শক্ত করে এটি ঠিক করার চেষ্টা করেছিল। অফিশিয়াল বাশ প্যাচ 54 আসলে ভেরিয়েবল নাম ব্যবহার করে সঠিক নামের সাথে একটি ভেরিয়েবল তৈরি করা অসম্ভব করে তোলে %
যা অন্তর্ভুক্ত করে যে কোনও অক্ষর যা একটি ভেরিয়েবল নামে অনুমোদিত নয়, কার্যকরভাবে রফতানি ফাংশন সংজ্ঞাটি আলাদা, সংরক্ষিত নেমস্পেসে রেখে দেয়।
উপরের কোনওটি যদি আপনার কাছে বোঝায় না তবে এটি নিয়ে চিন্তা করবেন না। আপাতত অ্যাপল প্যাচ নিয়ে আপনি ভাল আছেন।
সিস্টেম বাইনারি
ওএস এক্স ১০.৯.৫ (এই মুহূর্তে সর্বশেষতম স্থিতিশীল প্রকাশ) বাশ v3.2.51 সহ জাহাজগুলি:
$ bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
আপনি বাশকে নিম্নরূপে প্রাপ্ত এবং পুনরায় সংকলন করতে পারবেন , এটি সরবরাহ করে যে আপনি এক্সকোড ইনস্টল করেছেন (এবং xcodebuild
লাইসেন্স গ্রহণের জন্য কমপক্ষে একবার দৌড়েছেন ):
$ # If you want to disable auto-imported functions, uncomment the following
$ # export ADD_IMPORT_FUNCTIONS_PATCH=YES
$ mkdir bash-fix
$ cd bash-fix
$ curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
$ cd bash-92/bash-3.2
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0
$ # See note above about ADD_IMPORT_FUNCTIONS_PATCH
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] && curl http://alblue.bandlem.com/import_functions.patch | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-054 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-055 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-056 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-057 | patch -p0
$ cd ..
$ # Note: DO NOT ADD SUDO TO XCODEBUILD HERE
$ xcodebuild
$ build/Release/bash --version # GNU bash, version 3.2.57-release
$ build/Release/sh --version # GNU bash, version 3.2.57-release
$ sudo cp /bin/bash /bin/bash.old
$ sudo cp /bin/sh /bin/sh.old
$ sudo cp build/Release/bash /bin
$ sudo cp build/Release/sh /bin
(দ্রষ্টব্য: আপনি উপরের কোড ব্লকটি অনুলিপি করে আটকিয়ে টার্মিনালে যান এবং তারপরে চালাতে pbpaste | cut -c 2- | sh
পারেন rand ইন্টারনেট থেকে র্যান্ডম স্ক্রিপ্টগুলি চালনার সময় সর্বদা যত্ন নিন ...)
এর পরে, বাশ সংস্করণটি v3.2.57 হওয়া উচিত:
$ bash --version
GNU bash, version 3.2.57-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.
সুরক্ষার জন্য, এবং পরীক্ষার পরে, আমি আপনাকে chmod -x
পুরাতন সংস্করণগুলি পুনরায় ব্যবহার না করা হয়েছে তা নিশ্চিত করার জন্য বা তাদের একটি ব্যাকআপ সাইটে সরানোর পরামর্শ দিচ্ছি।
$ sudo chmod a-x /bin/bash.old /bin/sh.old
অন্যান্য উত্তরের ম্যাকপোর্টস বা হোমব্রু ব্যবহারকারীদের জন্য সমাধান রয়েছে; এগুলি সমস্যার সমাধান করে না, তারা কেবল বাশের অতিরিক্ত সংস্করণ ইনস্টল করে। আপনি যদি সেগুলি বিশেষভাবে আপগ্রেড করতে চান তবে দয়া করে সেগুলির উত্তরগুলি দেখুন।
ধন্যবাদ
চেটকে ধন্যবাদ, যিনি বাশ দেখাশোনা করেন এবং এই প্যাচগুলি উপলব্ধ করে চলেছেন। যারা মন্তব্য করেছেন এবং সময়ের সাথে সাথে এর উন্নতি করেছেন তাদের প্রত্যেককে ধন্যবাদ।
এখন অ্যাপল আসল ফিক্স প্রকাশ করেছে, যদিও এটি এখনও কার্যকর হতে পারে। কারণ তারা কেবল সিংহ এবং তার জন্য একটি ফিক্স প্রকাশ করেছিল এবং অফিশিয়াল প্যাচটি জিএনইউ ব্যাশ, সংস্করণ 3.2.53 (1) -রিলেজ (x86_64-আপেল-ডারউইন 13) সরবরাহ করে, তবে, গেম ওভার বাগটি কিছুটা দুর্বল। এই মুহুর্তে, আপনার নিজের সংস্করণটি 3.2.57 এর সাথে পুনর্নির্মাণ সম্ভবত অ্যাপলের প্যাচের উপর নির্ভর করার চেয়ে বেশি সুরক্ষিত, যদি আপনি এটি ভুল না করেন।