শেলশক এড়াতে আমি কীভাবে বাশকে পুনরায় কম্পাইল করব (রিমোটগুলি সিভিই -2014-6271 এবং সিভিই-2014-7169 শোষণ করে)?


368

প্রদত্ত যে বাশ 3.2 (ওএস এক্স দ্বারা প্রেরিত সংস্করণ) "শেল শক" ( সিভিই -2014-6271 এবং সিভিই-2014-7169 ) হিসাবে পরিচিত রিমোট এক্সিকিউশন শোষণের পক্ষে ঝুঁকিপূর্ণ আমি কীভাবে বাশকে পুনর্নির্মাণ করব এবং এর আগে আমার সিস্টেমকে সুরক্ষিত করব অফিসিয়াল অ্যাপল প্যাচ?

আপডেট: নোট করুন অ্যাপল এখন অফিসিয়াল প্যাচ প্রকাশ করেছে। বিস্তারিত জানার জন্য নীচে দেখুন


5
: অ্যাপল একটি ফিক্স প্রকাশ করেছে support.apple.com/kb/DL1769
যেমন AT

1
উপরে উল্লিখিত ওএস এক্স বাশ আপডেট ০.০ প্যাচটি ওএস এক্স ১০.৯.৫ বা তার পরে নির্দিষ্ট - এখানে তাদের সকলের রয়েছে: ওএস এক্স 10.7.5 (সিংহ), ওএস এক্স 10.8.5 (মাউন্টেন সিংহ), ওএস এক্স 10.9.5 ( মাভারিক্স)।
l'L'l

হ্যাঁ, আমার লিঙ্কগুলি 9 ঘন্টা আগে যুক্ত হয়েছিল তবে সেগুলি ভুলভাবে মোছা হয়েছিল। আপেল.স্ট্যাকেক্সেঞ্জিং
রিভিশনস /

গিস্ট.github.com/dnozay/395dcdef05c6b4b1836a একটি গিস্ট তৈরি করেছে যার বেশিরভাগ ধাপ রয়েছে এবং ইতিমধ্যে প্যাচগুলি অন্তর্ভুক্ত রয়েছে (এবং ওএসএক্স 10.6 এ কাজ করা উচিত)।
dnozay

@ ডিএনজয়ে আপনার টুকরো জন্য ধন্যবাদ! 55 এবং 56 (ইতিমধ্যে আউট) এবং 57 (শীঘ্রই শিগগিরই আউট) অন্তর্ভুক্ত করার জন্য দয়া করে এটি আপডেট করুন।
ওল্ড প্রো

উত্তর:


429

অবস্থা

অ্যাপল শেলশক এবং সম্পর্কিত দুর্বলতার জন্য বাশ সুরক্ষা সংস্থাগুলি " ওএস এক্স বাশ আপডেট ০.০ " হিসাবে প্রকাশ করেছে। ওএস এক্স মাউন্টেন লায়ন ভি 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 থেকে একটি দুর্বল সংস্করণ দেওয়া হয়েছে:

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 এর সাথে পুনর্নির্মাণ সম্ভবত অ্যাপলের প্যাচের উপর নির্ভর করার চেয়ে বেশি সুরক্ষিত, যদি আপনি এটি ভুল না করেন।


18

Macports

এটি আপনাকে একটি বাশ সংস্করণ 4.3.28 (1) দেয় যা দুর্বলতাগুলি (সিভিই -2014-6271 এবং সিভিই -2014-7169) পাশাপাশি পরবর্তীকালে আবিষ্কার করা উভয় ক্ষেত্রেই প্যাচ করে। আপনি যদি সংস্করণ 4 বৈশিষ্ট্যগুলি পেতে ম্যাকপোর্টগুলি ব্যাশ ব্যবহার করতে শেল পরিবর্তন করেন তবে এটি কার্যকর।

এটি স্ট্যান্ডার্ড ওএস স্ক্রিপ্টগুলির সমস্যাটি যেমন প্রথম সারির মতো #!/bin/shবা সমাধান করবে না #!/bin/bash। এই ধরণের ইস্যু হ'ল ম্যাকপোর্টগুলি অ্যাপলের সরবরাহিত সংস্করণগুলির প্রোগ্রামগুলি ম্যাকপোর্টগুলি দ্রুত আপডেট হওয়ার প্রবণতা না কেন ব্যবহার করার চেষ্টা করে eg যেমন এর বাশনের একটি নতুন সংস্করণ রয়েছে)

আপনি হোমব্রউ উত্তর হিসাবে টার্মিনাল এটি ব্যবহার করতে পারেন

ম্যাকপোর্টগুলি ইনস্টল করার জন্য এই নির্দেশাবলী অনুসরণ
করুন যা ১। এক্সকোড এবং এক্সকোড কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করুন
২ টার্মিনালে এক্সকোড লাইসেন্সের সাথে সম্মত হন: সুডো এক্সকোডবিল্ড-লাইসেন্স
3 .. আপনার ওএস এক্স এর সংস্করণের জন্য ম্যাকপোর্টস পিকেজি ডাউনলোড করুন: লিঙ্কগুলি পৃষ্ঠায় রয়েছে
4। পিকেজি চালান

আপনি যখন ম্যাকপোর্টগুলি ইনস্টল করেছেন তখন আপনাকে সর্বশেষতম সংস্করণগুলি করা দরকার, এটি রান করে করা হয়

sudo port selfupdate

এবং পুনরায় কম্পাইল করুন বা এর মাধ্যমে সর্বশেষ বাইনারিগুলি পান

sudo port upgrade outdated

5
যেহেতু এটি বিদ্যমান বাইনারিগুলিতে সুরক্ষিত দুর্বলতা সংশোধন করার বিষয়ে, এবং এটি দুর্বল বাইনারিগুলি প্রতিস্থাপন / ঠিক করে না, এটি কীভাবে সমস্যার সমাধান করে তা দেখতে আমি ব্যর্থ।
অ্যালব্লিউ

এটা তোলে macports সংস্করণ শিয়ালের - এবং IanC এর মন্তব্যের অনুরোধে সত্যিই ছিল
মার্ক

হ্যাঁ. bashওএস এক্স থেকে সাধারণত সমস্ত জায়গাগুলির জন্য আমাদের ফিক্সগুলি তালিকাবদ্ধ করা উচিত - সুতরাং সিস্টেম ফিক্স, হোমব্রিউ এবং ম্যাকপোর্টস ঠিক করা। সম্ভবত ফিনকও। আমি @ ব্যক্তিগতভাবে এটি পছন্দ করব যদি এটি @ অ্যালব্লিউর উত্তরের সম্পাদনা হিসাবে তৈরি করা হয়। সুতরাং এটি সব এক, সবচেয়ে সঠিক, উত্তর।
আয়ান সি

2
@ আইএনএসি এগুলি পৃথক হওয়া উচিত কারণ উত্তরগুলি পৃথক হয় এবং একটি বড় কোনও পরীক্ষা করতে পারে না - উদাহরণস্বরূপ আমাকে বলছেন এটি অ্যাপলের বাশ এবং ওএসএক্সের উপর হোমব্রু বাশকে অনুলিপি করার জন্য হোম-ব্রিউ উত্তরটি স্থির করে না। কার্যত তারা পৃথক প্রশ্ন
চিহ্নিত করুন

@ অ্যালব্লিউর উত্তরে আমার সম্পাদনা দেখুন। এগুলি আলাদা হওয়া উচিত বলে আমি একমত নই।
আয়ান সি

17

অফিসিয়াল অ্যাপল ওএস এক্স ব্যাশ আপডেট 1.0 সম্পর্কিত নোট: এই সফ্টওয়্যার আপডেটটি কেবলমাত্র অফিসিয়াল অ্যাপল ব্যাশ সংস্করণটি 3.2.53 এ নিয়েছে। 3.2.54 প্যাচ রিভিশনটি নিম্নলিখিত পরিবর্তনগুলির প্রস্তাব করে:

এই প্যাচটি শেল ভেরিয়েবলের সাথে সংঘর্ষ এড়াতে এবং কেবল পরিবেশের ভেরিয়েবলের বিষয়বস্তুর উপর নির্ভর করে এটিকে শেল ফাংশন হিসাবে ব্যাখ্যা করতে হবে কি না তা নির্ধারণের জন্য এনকোডিং ব্যাশের রফতানি ফাংশনগুলির জন্য পরিবর্তন করে।

ব্যবহারকারীরা ইতিমধ্যে 3.2.54 বাইনারি দিয়ে সিস্টেমটি প্যাচ করেছেন, আপনি হয় অ্যাপল প্যাচ দিয়ে আপনার সংকলিত বাইনারিগুলি প্রতিস্থাপন করতে পারেন বা জিনিসগুলি যেমন রয়েছে তেমন রেখে দিতে পারেন তবে এটি পরামর্শ দেওয়া হয়নি। যদিও অ্যাপল তাদের বাইনারি সংস্করণটি ৩.২.৫৩-এ রেখে গেছে, অ্যাপল প্যাচ ডিওএস- র নীচে শোষণ পরীক্ষার ফিক্স রয়েছে:

env X='() { (a)=>\' sh -c "echo date"; cat echo

এর অর্থ অ্যাপল অফিসার 3.2.53 বাইনারি ভ্যানিলা জিএনইউ 3.2.54 বাইনারি সমতুল্য সুরক্ষা রয়েছে। বিভ্রান্তির একটি দুর্ভাগ্যজনক বিষয় তবে এটি যা তা তা। অ্যাপলের ফিক্সটি অর্ধ-বেকড নয়। এটি সমস্যার সম্পূর্ণ সমাধান বলে মনে হচ্ছে। যেমন, ভ্যানিলা bashএবং shজিএনইউ উত্স থেকে সংকলনের নীচের রোডম্যাপটি একটি historicতিহাসিক নিদর্শন হিসাবে বিবেচিত হওয়া উচিত এবং ভবিষ্যতে কীভাবে প্যাচগুলি করা দরকার সেগুলি প্রয়োজনীয় হওয়ার জন্য একটি টেমপ্লেট হিসাবে সম্ভবত পরামর্শ করা উচিত।

দ্রষ্টব্য: ভ্যানিলা জিএনইউ উত্স সহ, shবিশেষাধিকারের উন্নতির সমস্যা রয়েছে যা বিভিন্ন ইনস্টলারের ক্ষেত্রে ব্যর্থতা তৈরি করে, যেমন, অ্যাডোব ফ্ল্যাশ। আমি অ্যাপল-প্যাচযুক্ত বাইনারিগুলির সাথে দৃ strongly়তার সাথে লেগে থাকার পরামর্শ দিচ্ছি। এই প্যাচ স্কিমটিকে অবহেলিত এবং অসদাচরণের জন্য বিবেচনা করুন।

এখানে একটি নতুন জিএনইউ বাশ 3.2.55 প্যাচ রয়েছে যা নিম্নলিখিত ফিক্সটি বর্ণনা করে:

বাগ-বর্ণনা:

পার্স.এতে দুটি স্থানীয় বাফার ওভারফ্লো রয়েছে যা একক কমান্ড বা অনেক নেস্টেড লুপের সাথে সংযুক্ত অনেকগুলি-এখানে নথির দেওয়া হলে শেলটি ডাম্প কোর করতে পারে।

আমরা অ্যাপল-প্যাচযুক্ত অফিসিয়াল বাইনারিদের সাথে অফিসিয়াল হয়ে বসে থাকি বা নতুন সম্ভাব্য ব্যবহারগুলি মোকাবেলা করতে আপনার নিজস্ব রোল করব কিনা তা নির্ধারণ করার জন্য আমরা মৃদু পাঠকের উপরে ছেড়ে দিয়েছি। ব্যক্তিগতভাবে, আমি অ্যাপল বাইনারিগুলির সাথে লেগে থাকব।


এই পোস্টটি বিস্তারিত কম্পাইল কিভাবে এবং ভ্যানিলা ইনস্টল bashএবং shOS X এর উপর আমি ব্যবহার অ্যাপল-নির্দিষ্ট উৎস আমাকে সঠিক প্যাচ সংস্করণ সঙ্গে ছেড়ে না বিশদ উদাহরণ নিম্নলিখিত হিসাবে এই রুট বেছে নেওয়া হয়েছে। YMMV। এই ভ্যানিলা ইনস্টলেশনটি অবশ্য ওএস এক্স বাইনারিগুলি প্রতিস্থাপনে লক্ষ্যযুক্ত যে অ্যাপল যখন শেষ পর্যন্ত কোনও সুরক্ষা আপডেট প্রকাশ করে, তখন এই ভ্যানিলা প্রতিস্থাপনগুলি তাদের যথাযথ অ্যাপল অংশ দ্বারা দখল করা হবে।

আমার বেস কনফিগারেশনটি হ'ল:

সমস্ত কমান্ড-লাইন ইউটিলিটি ইনস্টল করে ওএস এক্স লায়ন 10.7.5 এবং এক্সকোড 4.6.3।

এটি ঠিক করার জন্য আমার পদক্ষেপগুলি ছিল:

থেকে 3.2.48 এর জন্য বেস ব্যাশ উত্স কোডটি ডাউনলোড করুন:

https://ftp.gnu.org/gnu/bash/bash-3.2.48.tar.gz

Bash3.2.49, .50, .51, .52, .53, .54 এবং .55 প্যাচগুলি থেকে ডাউনলোড করুন:

https://ftp.gnu.org/gnu/bash/bash-3.2-patches/

আমি এগুলিকে name filename.patch, যেমন, bash3.2.50.patch হিসাবে সংরক্ষণ করেছি।

আপনার ডাউনলোড ডিরেক্টরিতে সিডি করুন এবং…

প্রধান উত্স শাখাটি আনপ্যাক করুন:

tar xzvf bash-3.2.48.tar.gz

cd bash-3.2.48

ধরে নিলাম যে আপনি পূর্বে বর্ণিত হিসাবে আপনার ডাউনলোড প্যাচ ফাইলগুলির নাম পরিবর্তন করেছেন,

cp ../*.patch .

তারপরে ...

for file in *.patch ; do
  patch -p0 < $file
done

এটি বিভিন্ন ফাইলের সফল প্যাচগুলি দেখায়। যদি তা না হয় তবে কিছু অনুসন্ধান ও তদন্ত করার জন্য প্রস্তুত থাকুন।

পরবর্তী:

sudo cp /bin/bash /bin/bash_old
sudo cp /bin/sh /bin/sh_old
sudo chmod -x /bin/bash_old
sudo chmod -x /bin/sh_old

এটি মূলত আপনার পুরানো, দুর্বল ব্যাশ এবং শেল শেলসকে ব্যাক আপ করেছে এবং তাদের কার্যকর করার সুযোগটি অপসারণ করেছে। এটি আপনাকে প্রয়োজনীয় হিসাবে কমান্ডগুলি পুনরুদ্ধার করার ক্ষমতা দেয় তবে এর মধ্যে ক্ষতির ক্ষয়ক্ষতি করার ক্ষমতা সরিয়ে দেয়।

পরবর্তী:

./configure --prefix=/ ; make ; sudo make install

এটি নতুন ব্যাশ বাইনারিটিকে সঠিকভাবে কনফিগার, সংকলন এবং ইনস্টল করা উচিত। এটি সম্পন্ন হওয়ার পরে, টার্মিনাল থেকে প্রস্থান করুন এবং আবার খুলুন।

আপনার উচিত, সমস্ত কিছু খুশি এবং হাসি, bash --version3.2.55 দেখতে সক্ষম হওয়া উচিত, উদাহরণস্বরূপ:

Gaia:Downloads trane$ bash --version
GNU bash, version 3.2.55(1)-release (i386-apple-darwin11.4.2)
Copyright (C) 2007 Free Software Foundation, Inc.

ওএস এক্স এর সংস্করণ অনুসারে উপরের কমান্ডটিতে সঠিক আউটপুট পৃথক হবে depending

আপনার দুর্বলতার বিরুদ্ধে পরীক্ষা করতেও সক্ষম হওয়া উচিত bashএবং এটি ঠিক আছে।

দ্রষ্টব্য: আমরা এখন পর্যন্ত কেবলমাত্র বাশকে স্থির করেছি, তবে কার্যকর /bin/shকরা এখনও তার অরক্ষিত অবস্থায় রয়েছে। কেবল অনুলিপি bashউপরে shজিনিসগুলি একটি Linux শৈলী। ওএস এক্স এর shবাস্তবায়নের কিছু পার্থক্য রয়েছে bash, তবে, আপনি আবার সংকলকটি টেনে আনতে চাইবেন। ওএস এক্সে কীভাবে bashএবং shপৃথক রয়েছে সে সম্পর্কে আরও তথ্য এখানে পাওয়া যাবে:

https://apple.stackexchange.com/a/89327/91441

আপনার ডাউনলোড ডিরেক্টরিতে করুন:

make clean

আপনার প্রিয় সম্পাদকটিতে, ফাইলটি খুলুন Makefile.inএবং 99 লাইনটিতে স্ক্রোল করুন We আমরা প্রোগ্রাম লাইনটি পরিবর্তন করতে যাচ্ছি যাতে বাইনারিটি আমরা আউটপুট পছন্দ না করে এর shপরিবর্তে হয় bash:

Program = sh$(EXEEXT)

এটি সংরক্ষণ করুন এবং তারপর

./configure --prefix=/ --enable-xpg-echo-default --enable-strict-posix-default
make ; sudo make install

এখন আপনি shঅ্যাপলের মতো তৈরি করেছেন ।

একটি চূড়ান্ত নোট: কিছু (সমস্ত?) সিস্টেমে, অ্যাপল সাধারণত bashbugসম্পাদনযোগ্যকে মনে করে /usr/bin। আমাদের সংকলন এটি putোকাতে হবে /bin। সুতরাং, এখানে চূড়ান্ত পদক্ষেপ:

sudo mv /usr/bin/bashbug /usr/bin/bashbug_old
sudo chmod -x /usr/bin/bashbug_old
sudo mv /bin/bashbug /usr/bin/bashbug

1
কৌতুক বা কিছু নয়, তবে যখন প্রশ্নটি হয় "আমি কীভাবে বাশ পুনরায় সংকলন করব" এবং আমার উত্তরটি "সেই প্রশ্নের উত্তরের নিম্নলিখিত লিঙ্কটিতে ক্লিক করুন, তখন মনে হয় সারাংশের প্রয়োজনীয়তাগুলি দাঁড়িয়েছে
ট্রেন ফ্রাঙ্কস

2
বুঝতে পেরেছি: ব্যাশের সাথে অন্তর্ভুক্ত রিডলাইন গ্রন্থাগারটি 10.6 এর সাথে সামঞ্জস্যপূর্ণ নয়। পরিবর্তে GNU রিডলাইন ইনস্টল করুন এবং তারপরে এটি ব্যবহার করতে ব্যাশ মেকফিলটি হ্যাক করুন। রিডলাইন ইনস্টল করুন: ftp.cwru.edu/pub/bash/readline-6.3.tar.gz বাশ-এ, মেকফাইলে কনফিগার করার পরে, READLINE_LIB = /usr/local/lib/libreadline.aএকটি পরিষ্কার সংকলন করুন এবং করুন। তারপর ফালা এবং উপরে নতুন ব্যাশ বাইনারি কপি /bin/bashএবং/bin/sh
শেঠ নোবল

2
সংযোজন: ব্যাশ মেকফিলের মধ্যে এটি সেট করাও প্রয়োজনীয় HISTORY_LIB = /usr/local/lib/libhistory.a। অন্যথায় বাশকে গতিশীলভাবে লিভিস্টিরির / usr / স্থানীয় সংস্করণের সাথে সংযুক্ত করা হবে।
শেঠ নোবেল

1
নোট করুন যে অ্যাপল ওপেনসোর্স পৃষ্ঠা থেকে ডাউনলোডযোগ্য সংস্করণটিতে এটি OSX এ কাজ করার জন্য কাস্টম পরিবর্তন রয়েছে। আমি ভ্যানিলা আপ স্ট্রিম ব্যাশ ব্যবহার করার পরামর্শ দেব না অন্যথায় আপনি পছন্দমতো প্রতিস্থাপন করছেন না।
অ্যালব্লিউ

1
অ্যাপল সিস্টেমে ওপেন সোর্স ব্যবহারগুলি অনুকূল করতে অনেক পরিবর্তন করে। এটি বলেছিল, bashকার্নেল পৃথক হওয়ার কারণে কোনও ভ্যানিলা যেখানে কোনওভাবে নিজেকে আচরণ করতে ব্যর্থ হবে তা আমি দেখতে পাচ্ছি না । যাই হোক না কেন, আমি আমার সমাধানটিকে অস্থায়ী বলে বিবেচনা করি; অবশেষে অ্যাপল সমস্যা প্যাচিং কাছাকাছি পেতে হবে এবং আমার কম্পাইল বাইনেরিতে প্রতিস্থাপিত হবে (যা কম্পাইল জন্য আমার মূল কারণ নেই /binপ্রথম স্থানে।
TRANE Francks

15

উত্স থেকে সংকলন নিয়ে যে কেউ লড়াই করছেন, 29 শে সেপ্টেম্বর পর্যন্ত অ্যাপল ম্যাক ওএস এক্স 10.9.5, 10.8.5 পাশাপাশি 10.7.5 এর জন্য আনুষ্ঠানিকভাবে প্যাচ প্রকাশ করেছে:


1
ধন্যবাদ! এটি বেশিরভাগ / সর্বাধিকের জন্য সংশোধন করার চেয়ে সহজ হতে পারে।
আলব্লিউ

@ অ্যালব্লু একমত এটি প্যাচিংয়ে সম্পূর্ণ পরিচ্ছন্ন না থাকা অবস্থায় some যেমন কেউ উল্লেখ করেছেন — এটি কোনও কিছুর চেয়ে অনেক ভাল। আতঙ্কে কিছু নবজাতক সংকলন উত্স কোডের চেয়ে অনেক বেশি নিরাপদ।
জেকগল্ড

2
যথারীতি, সফ্টওয়্যার আপডেট প্রচারের বিলম্ব পুরো কার্যকর। আমি অবাক হই যে প্যাকেজগুলি প্রদর্শিত হতে কতক্ষণ সময় নেবে। অ্যাপল এই ইস্যুতে খুব দ্রুত প্রতিক্রিয়া দেখল তা সতেজ করে তোলা!
ট্রেন ফ্রাঙ্কস

2
@ ট্রেনফ্র্যাঙ্কস “যথারীতি সফ্টওয়্যার আপডেট প্রচারের বিলম্ব পুরোপুরি কার্যকর”
জ্যাকগল্ড

@ জ্যাকগল্ড: হি হ্যাঁ, এটি একটি চটকদার। আমি এই সিংহ সিস্টেমে কেবলমাত্র সফ্টওয়্যার আপডেট পরীক্ষা করেছি এবং এটি দাবি করে যে সিস্টেমটি আপ টু ডেট। এখানে অন্য মাউন্টেন লায়ন সিস্টেমের সাথে একই।
ট্রেন ফ্রাঙ্কস

5

প্রথমত, এই দুর্বলতার জন্য ব্যাচ এবং শ প্যাচিং করা আপনার ম্যাকের কিছু স্ক্রিপ্ট ভাঙার সম্ভাবনা রয়েছে। আপনি সরাসরি আপনার ম্যাক থেকে পাবলিক ইন্টারনেটে ওয়েব পরিষেবাদি সরবরাহ না করা না হলে আপনার সত্যিই এটি করার দরকার নেই। সুতরাং যদি এটি সত্যিই প্রয়োজনীয় না হয়, অ্যাপল থেকে কোনও অফিশিয়াল সুরক্ষা আপডেট না পাওয়া পর্যন্ত অপেক্ষা করুন।

সতর্ক করা হচ্ছে, ম্যভারিকস ১০.৯-এ ব্রু ব্যবহার করে কীভাবে এই আপডেটটি করা যায় সে সম্পর্কে কিছু নির্দেশাবলী এখানে দেওয়া হয়েছে।

প্রথমে নিশ্চিত করুন যে আপনি একটি পুরানো বাশ ব্যবহার করছেন:

$ which bash
/bin/bash
$ /bin/bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

সর্বাধিক বর্তমান বাশ 4.3.25

আপনার যদি এক্সকোড ইনস্টল না করা থাকে তবে আপনার এক্সকোড কমান্ড লাইন সরঞ্জামের প্রয়োজন হবে যা ইনস্টল করা যেতে পারে

$ xcode-select --install

বা বিকাশকারী পোর্টাল থেকে

ব্রিউ ইনস্টল করতে ( http://brew.sh ):

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

তারপরে:

$ brew doctor

সমস্যা থাকলে কোনও নির্দেশনা অনুসরণ করুন। অনেক সাধারণ সমস্যা এখানে সমাধান করা হয়

তারপরে প্যাকেজগুলির সর্বশেষ তালিকায় ব্রিউ আপডেট করুন:

$ brew update

সর্বশেষতম বাশ 4.3.25 পেতে:

$ brew install bash

এটিতে বাশ ইনস্টল করে /usr/local/Cellar/bash/4.3.25/bin/bash

পুরানো bashএবং shএখনও বিদ্যমান /bin, সুতরাং ইনস্টল করার পরে আপনি পুরানো এক্সিকিউটেবলের নতুন নামকরণ করবেন।

$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old

আপনি যদি খুব ভৌতিক হয়ে থাকেন তবে আপনি এর উপর সম্পাদনের অনুমতিগুলি সরাতে পারেন bash_old

$ sudo chmod a-x /bin/bash_old /bin/sh_old

তারপরে মেশানো ইনস্টল হওয়া নতুন ব্যাশে ৪.৩.২৫-এর প্রতীকী লিঙ্ক তৈরি করুন।

$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh

পুনরায় বুট করুন এবং এটি সম্পূর্ণ।

একটি সতর্কতা - এটি কিছু বিদ্যমান শেল স্ক্রিপ্টগুলি ভেঙে ফেলতে পারে যা ব্যাশ 3.2 বা ম্যাকের shলিনাক্সের মধ্যে থাকা পার্থক্যের উপর নির্ভর করতে পারে sh। এই একই থ্রেডে @ ট্রেনফ্র্যাঙ্কের একটি উত্তর থেকে উত্স থেকে বাশ এবং শ প্রতিস্থাপনের জন্য আরও অনেক পরিশীলিত উত্তর রয়েছে।


4
৩.২.৫১ থেকে ৩.২.৫২ পর্যন্ত প্যাচিংয়ের ফলে আপগ্রেড করার চেয়ে কম ক্ষতি হতে চলেছে ৪.৩. কোনও কিছুই না।
আলব্লিউ

আমি সতর্ক করে দিয়েছি যে এটি কিছু স্ক্রিপ্টগুলি ভেঙে ফেলতে পারে, তবে 4.3.25 ব্রেউ বর্তমান হিসাবে ইনস্টল করে - আমি এমন একটি সংস্করণ দেওয়ার চেষ্টা করছি যা এটিকে স্ক্র্যাচ থেকে এটি ইনস্টল করা সহজ (ইআর) সহজ। এবং আপনি সর্বদা পুরানো এক্সিকিউটেবলকে আবার নাম দিয়ে পুনরুদ্ধার করতে পারেন।
ক্রিস্টোফার অ্যালেন

2
এই বাগটি দূষিত ডিএইচসিপি সার্ভার (যেমন ওয়াইফাই হটস্পট) দ্বারা শোষণযোগ্য এবং আপনার কম্পিউটারকে সম্পূর্ণরূপে pwn করতে পারে, সুতরাং এটি ASAP ঠিক করার উপযুক্ত। অন্যান্য উত্তরগুলির প্রতিস্থাপনের জন্য আরও ভাল নির্দেশিকা রয়েছে /bin/bashএবং /bin/shএটি সম্ভবত ব্রিউয়ের সর্বশেষ ব্যাশ আপগ্রেড করার চেয়ে কম সমস্যা সৃষ্টি করবে।
ওল্ড প্রো

ম্যাক ডিএইচসিপি আক্রমণে ঝুঁকিপূর্ণ হতে পারে না।
ক্রিস্টোফার অ্যালেন

10
DCHP সার্ভার আক্রমণ কেবল তখনই সম্ভব যখন আপনার DHCP ক্লায়েন্ট বাশ স্ক্রিপ্টগুলি ব্যবহার করে যা ওএসএক্স বাস্তবায়ন না করে।
আলব্লিউ

5

ওএস এক্স 10.6.8 - স্নো চিতাবাঘ

@ অ্যালব্লিউয়ের পোস্টটি খুব সম্পূর্ণ। তবে আমার ওএস এক্স 10.6.8 সার্ভারে তার ফিক্সটি কাজ করবে না। অ্যাপলের 10.6.8 এর জন্য কোনও স্থিরতা নেই এবং @ অ্যালব্লু দ্বারা ব্যাখ্যা করা পদক্ষেপগুলি এক্সকোড 3.2.6 (যা স্নো লিপার্ডের সর্বশেষতম সংস্করণ) এর সাথে কাজ করে না। আমি একটি ত্রুটি পেলাম:

** BUILD FAILED **

The following build commands failed:
sh:
    CodeSign /Users/bas/bash-fix/bash-92/build/Release/sh
bash:
    CodeSign /Users/bas/bash-fix/bash-92/build/Release/bash
(2 failures)

এই কারণে আমি brew.sh ব্যবহার করছি । ওএস এক্স 10.6.8 স্নো চিতাবাঘের জন্য যখন আপনার আরও ভাল সমাধান থাকে তখন দয়া করে আপনার চিন্তাভাবনাগুলিকে মন্তব্য করুন। @ জেরোমের মন্তব্যও দেখুন, @ অ্যালব্লিউয়ের সমাধানটি ব্যবহার করে ওএস এক্স 10.6.8 স্নো লেপার্ডে তার একটি সফল প্যাচ ছিল। যাই হোক:

নিম্নলিখিত অনেলনারের সাহায্যে প্রথম বার বার করুন:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

হালনাগাদ brew

brew update

এখন কেবল সর্বশেষ সংস্করণটি ইনস্টল করুন bashএবং বর্তমানটির প্রতিস্থাপন করুন:

brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
sudo mv /bin/bash /bin/bash-backup
sudo ln -s /usr/local/bin/bash /bin/bash

আপনি Command (complete path)তার পছন্দগুলিতে টার্মিনাল.এ্যাপের জন্য ডিফল্ট লগইন শেল ' ' সেট করতে পারেন Command,) এখানে চিত্র বর্ণনা লিখুন


দ্রষ্টব্য: মন্তব্যগুলিতে কিছু ব্যবহারকারী এই পদ্ধতিটি যথাযথ বলে মনে করেন না। তবে আমার জন্য ওএস এক্স 10.6.8 স্নো চিতাবাঘে BASH আপগ্রেড করার একমাত্র বোধগম্য পদ্ধতি।


1
এছাড়াও কিছু স্ক্রিপ্টগুলি ব্যাশ 3 এর উপর নির্ভর করে এবং ব্যাশ 4 এর সাথে কাজ করে না (ম্যাকপোর্টগুলি ব্যাশ 4.3.25 স্থির করেছে যা আমি মনে করি হোম-ব্রিউ আপডেট হয়েছে
মার্ক

2
আপনি shপাশাপাশি আপডেট করছেন না - আপনার এটিও করা দরকার। /bin/sh! = /bin/bash/bin/shআপনি সিস্টেম কমান্ড চালানোর সময় অনেক সরঞ্জাম শেল আউট হয় । system()উদাহরণস্বরূপ, রুবির কলটি /bin/shযখন আপনার শেল প্রসারণের অক্ষর থাকে যা স্ট্রিংয়ে প্রসারিত করা দরকার। আপনি আপনার সিস্টেম বাইনারি আইএমও আপডেট করতে হোমব্রিউ ব্যবহার করে একটি হারানো খেলা খেলছেন। সিস্টেম বাইনারিগুলির সঠিক আপডেট bash করার পাশাপাশি আপনার হোমব্রুও আপডেট করা উচিত ।
ইয়ান সি

1
মনে রাখবেন যে ওএসএক্স 10.8 এবং 10.9 বাশ 3.2 ব্যবহার করে, সুতরাং সরাসরি ধারাবাহিকতার জন্য আমি সংস্করণ হিসাবে 3.2 দিয়ে গিয়েছি with এটি এটি পূর্ববর্তী সংস্করণের জন্য অ্যাপলের অফিসিয়াল বিল্ডের উপর ভিত্তি করে তৈরি হয়েছে, এতে বর্ধিত বৈশিষ্ট্য সচেতনতা ইত্যাদির মতো অতিরিক্ত থাকতে পারে
আলব্লিউ

1
আমি সমস্ত দৃষ্টান্তে নিজেকে ৩.২.। চালিয়ে যাচ্ছি। বুঝি দৌড়ানোর সময় বিল্ড ব্যর্থ হয় xcodebuild? যদি তাই হয়, আমি যে অভিজ্ঞতা না। আপনাকে আলাদা করে দেওয়ার জন্য আমার কাছে কয়েকটি দৃ suggestions় পরামর্শ রয়েছে: আপনার একাধিক বাশ বিল্ড রয়েছে কিনা তা পরীক্ষা করে দেখুন, ক্লিয়ারিং (বারউ আনইনস্টল) বিবেচনা করুন এবং সম্ভবত এক্সকোড পুনরায় ইনস্টল করুন ... তারপরে প্যাচ প্রক্রিয়াটি নতুন করে শুরু করুন।
জেরোম

1
স্নো চিতাবাঘাতে হ্যান্ড-বিল্ট স্টক বাশ-৪.৩ নিয়ে আমার গুরুতর জব কন্ট্রোল সমস্যা রয়েছে (যদি আমি ইমাক শুরু করি এবং এটি স্থগিত করি তবে আমি 'fg' দিয়ে এটি আরম্ভ করতে পারি না)। আমি তখন থেকে ওপেনসোর্স.এপলল / রিলিজ / ম্যাক- ওস-x-1068 থেকে ব্যাশের জন্য স্নো লিপার্ড উত্সটি ডাউনলোড করেছি , ftp.gnu.org/gnu/bash/bash-3.2- পেচগুলি থেকে প্যাচগুলি প্রয়োগ করেছি এবং এতে পুনর্নির্মাণ করেছি আরও ভাল প্রভাব।
মরমেগিল

-6

আপনি এখানে নির্দেশাবলী অনুসরণ করতে পারেন: https://github.com/tjluoma/bash-fix মূলত, টার্মিনালে নিম্নলিখিতটি করুন:

curl -s https://raw.githubusercontent.com/tjluoma/bash-fix/master/bash-fix.sh | zsh -f

5
এলোমেলো গিথব অ্যাকাউন্টগুলি থেকে এলোমেলো শেল স্ক্রিপ্টগুলি কার্যকর করা কোনও মেশিনে কীভাবে আপনি আরও সুরক্ষিত পরিস্থিতিতে পৌঁছবেন তা নয়। আপনি শেষ পয়েন্ট বিশ্বাস করতে চান।
আয়ান সি

আমি এখানে ইয়ান সাথে একমত হতে হবে। অবিশ্বস্ত শেল স্ক্রিপ্টগুলির মাধ্যমে কিছু নাটকীয় ক্ষতির পরিচয় দেওয়া সত্যিই সহজ, যেমন এই সিভিইগুলি বর্ণনা করে এমন সমস্যা।
ট্রেন ফ্রাঙ্কস

এফইউডির এই প্রসারের সাথে দৃ disag়ভাবে একমত নয়। সমস্ত শেল স্ক্রিপ্টগুলি কার্যকর করার আগে এবং কেবল https: // থেকে পড়ুন।
dhchdd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.