আমি ন্যাটি ১১.০৪ ব্যবহার করছি, যা ইওএল (এবং আমি পুরানো-রিলিজস.বুন্টু ডট কম ব্যবহার করতে /etc/apt/source.list আপডেট করেছি), তাই আমাকে উত্স থেকে তৈরি করতে হবে। আমি একটি .deb বানাতে চেয়েছিলাম, সুতরাং প্যাকেজ পরিচালনা কমপক্ষে "সচেতন" বাশ সংস্করণটি ডিফল্ট নয়। আমি ১০০% সফল না - তবে, প্যাকেজটি "নতুন" হিসাবে নিবন্ধিত হয়েছে এবং bash
বাইনারি শেষ হয়ে যায়, তাই আমি এখানে যা করেছি:
apt-get source bash
wget https://gist.githubusercontent.com/drj11/e85ca2d7503f28ebfde8/raw/31bd53ed2e47b220d3c728f5440758e0f76769de/gistfile1.c -O bash_CVE-2014-6271.patch
wget https://gist.githubusercontent.com/drj11/239e04c686f0886253fa/raw/046e697da6d4491c3b733b0207811c55ceb9d927/gistfile1.c -O bash_CVE-2014-6271_plus.patch
cd bash-4.2/
এখন, (উপ) ডিরেক্টরিতে bash-4.2/
, একটি ফাইল রয়েছে bash-4.2.tar.xz
, যা bash
উত্সে পৌঁছানোর জন্য আনপ্যাক করা দরকার ; এবং একটি উপ-ডিরেক্টরি বলা হয় debian
।
এর উপর নির্ভরতা এড়াতে আমি নিম্নলিখিত পরিবর্তনগুলি করেছি texlive
: ইন bash-4.2/debian/control
:
Source: bash
...
Build-Depends: autoconf, autotools-dev, patch, bison, libncurses5-dev,
# texinfo, debhelper (>= 5), texi2html, locales, gettext, sharutils, time, xz-ut
ils
debhelper (>= 5), locales, gettext, sharutils, time, xz-utils
# Build-Depends-Indep: texlive-latex-base, ghostscript
Build-Depends-Indep: ghostscript
... এবং এতে bash-4.2/debian/rules
:
binary-doc: bash-install #bash-doc-build
dh_testdir
dh_testroot
mkdir -p $(d_doc)/usr/share/doc/$(p)
dh_installdocs -p$(p_doc)
ifeq ($(with_gfdl),yes)
#cp -p build-bash/doc/bashref.pdf $(d_doc)/usr/share/doc/$(p)/.
#dh_link -p$(p_doc) \
# /usr/share/doc/$(p)/bashref.pdf /usr/share/doc/$(p_doc)/bashref.pdf
else
rm -f $(d_doc)/usr/share/doc-base/bashref
endif
rm -f $(d_doc)/usr/share/info/dir*
#cp -p build-bash/doc/bash.html build-bash/doc/bash.pdf \
# $(d_doc)/usr/share/doc/$(p)/
#dh_link -p$(p_doc) \
# /usr/share/doc/$(p)/bash.html /usr/share/doc/$(p_doc)/bash.html \
# /usr/share/doc/$(p)/bash.pdf /usr/share/doc/$(p_doc)/bash.pdf
dh_installchangelogs -p$(p_doc) bash/CWRU/changelog
...
এই bash-4.2/
ডিরেক্টরিতে সংস্করণটি পরিবর্তন করতে , করুন:
bash-4.2$ dch --local patchCVE
... এবং জিজ্ঞাসা করা হলে পরিবর্তনলগের নোটগুলি পূরণ করুন। এটি নিশ্চিত করবে যে .deb (এবং সম্পর্কিত মেটাডেটা) বলা হয়েছে (আমার ক্ষেত্রে) bash_4.2-0ubuntu3patchCVE1_i386.deb
।
তারপরে আপনি কমান্ড দিয়ে dpkg-buildpackage -us -uc
বা বিল্ডিং চেষ্টা করতে পারেন debuild
। দ্রষ্টব্য - এর যে কোনওটি জিপ থেকে উত্সটিকে পুনরায় আনপ্যাক করবে - এইভাবে আপনার থাকা কোনও প্যাচগুলি ওভাররাইড করে! তবুও, এইগুলির মধ্যে একবার চালান যাতে উত্সটি প্যাক করা এবং নির্মিত হয় ( debuild
টেক্সলাইনের কারণে নোটটি শেষ পর্যন্ত ব্যর্থ হতে পারে তবে এটি আনপ্যাক করে উত্সটি তৈরি করা উচিত)।
তারপরে, প্যাচগুলি প্রয়োগ করুন; নোট আপনি -p1
এখানে ব্যবহার করা উচিত , কারণ আপনি বর্তমানে bash-4.2/
ডিরেক্টরিতে রয়েছেন :
bash-4.2$ patch -p1 < ../bash_CVE-2014-6271.patch
bash-4.2$ patch -p1 < ../bash_CVE-2014-6271_plus.patch
তারপরে প্যাচ করা সংস্করণটি পুনরায় তৈরি করুন:
bash-4.2$ fakeroot debian/rules build
এটি কার্যকর করা পুনর্গঠন করতে পারে; এটি পরীক্ষা করতে:
bash-4.2$ env VAR='() { :;}; echo Bash is vulnerable!' ./build-bash/bash -c "echo Bash Test"
.Deb ফাইলগুলি তৈরি করতে, চালান:
bash-4.2$ fakeroot debian/rules binary
এটি পিতামাতার ডিরেক্টরিতে .deb ফাইলগুলি সংরক্ষণ করবে; তাদের বিষয়বস্তু তালিকাতে:
bash-4.2$ dpkg -c ../bash_4.2-0ubuntu3patchCVE1_i386.deb
.Deb ইনস্টল করতে:
bash-4.2$ sudo dpkg -i ../bash_4.2-0ubuntu3patchCVE1_i386.deb
যাইহোক, কিছু কারণে, এই .deb একটি অপ্রত্যাশিত বাইনারি (?!) রয়েছে, সুতরাং আমি অতিরিক্তভাবে করতে হয়েছিল:
bash-4.2$ sudo cp bash-4.2/build-bash/bash /bin/
... এবং তার পরে, পরীক্ষাটি আমার জন্য সঠিকভাবে পাস করা শুরু হয়েছিল:
$ env VAR='() { :;}; echo Bash is!' bash -c "echo Bash Test"
bash: warning: VAR: ignoring function definition attempt
bash: error importing function definition for `VAR'
Bash Test