මම භාවිතා කරන්නේ Natty 11.04, එය EOL (සහ මම පැරණි-releases.ubuntu.com භාවිතා කිරීමට /etc/apt/sources.list යාවත්කාලීන කර ඇත), එබැවින් මට ප්රභවයෙන් සෑදිය යුතුය. මට .deb එකක් සෑදීමට අවශ්ය විය, එබැවින් අවම වශයෙන් පැකේජ කළමනාකරණය "දැනුවත්ව" ඇත, bash අනුවාදය පෙරනිමිය නොවේ. මම 100% ක් සාර්ථක නැත - කෙසේ වෙතත්, පැකේජය "නව" ලෙස ලියාපදිංචි කර ඇති අතර 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