ฉันจะแก้ไขช่องโหว่ shellshock บนระบบ Ubuntu ที่ล้าสมัยที่ฉันไม่สามารถอัพเกรดได้อย่างไร


22

ฉันมีระบบที่จัดการจากระยะไกล (ห่างออกไป 2 เขต) ที่ใช้ Ubuntu 9.04, Jaunty ด้วยเหตุผลต่าง ๆ โดยส่วนใหญ่แล้วฉันมักจะพยายามอัพเกรดจากที่ไกล ๆ ฉันไม่สามารถอัพเกรดเป็นเวอร์ชั่นที่ใหม่กว่าได้ เห็นได้ชัดว่ามันไม่ได้รับการสนับสนุนอีกต่อไปและไม่มีแพทช์อย่างเป็นทางการ มีคำแนะนำเกี่ยวกับวิธีที่ฉันสามารถแก้ไขโค้ดและคอมไพล์ bash ตัวเองใหม่เพื่อลบช่องโหว่ shellshock หรือไม่


5
คุณทำวิจัยอะไรในเรื่องนี้ ทางออกที่ง่ายที่สุดน่าจะเป็นการสร้างและแก้ไขด้วยตัวคุณเอง คุณอาจต้องยอมรับสิ่งนี้ในเวลาเพียงอัปเดตเซิร์ฟเวอร์
Ramhound

ใช่นั่นคือตัวเลือกทางเลือกของฉัน เซิร์ฟเวอร์กำลังจะออกไปฉันแค่พยายามทำให้มันคลานไปเรื่อย ๆ จนกว่าเงินจะเข้ามาแทนที่ ฉันอยู่ในสถานที่ฉันจะกัดกระสุนและทำการอัปเดต แต่ฉันไม่ค่อยได้ไปโดยไม่มีการผูกปมและไม่สามารถจับมันได้ฉันไม่อยากเสี่ยงหากฉันไม่มี ไปยัง
ซานตาคลอส

เพิ่งได้คำหลักบางคำในหน้าเพื่อให้ผู้คนค้นพบสิ่งนี้ได้ ใช้ได้กับฉันใน Mac, OS X, Mavericks ตามการทดสอบที่เผยแพร่ที่arstechnica.com/security/2014/09/

1
ปล่อยให้มันไม่ได้ตรงกัน "การเดินกะเผลกไปตาม" จะเปลี่ยนไปอย่างรวดเร็ว จะมีความชัดเจนมากคุณกำลังใช้ distro ที่ออกมาห้าปีที่ผ่านมา การสนับสนุนสิ้นสุดในเดือนตุลาคม 2010 คุณมีช่องโหว่มากมายที่คุณต้องกังวล
tedder42

คำตอบ:


29

ขโมยสิ่งนี้จากAskUbuntuจากคนที่ขโมยมันไปจาก Hacker News ทำงานบนเซิร์ฟเวอร์เก่าสองตัวสำหรับฉัน

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

อัปเดต: ฉันเพิ่งสังเกตเห็นว่าถ้าคุณไม่เพิ่ม--prefix=/คำสั่งกำหนดค่าคุณจะได้/usr/local/bin/bashรับข้อมูลล่าสุดและ/bin/bashยังคงมีช่องโหว่


มีข้อบกพร่องในสคริปต์: ลำดับ "0 25" ควรเป็น "1 26" หากคุณอ่านข้อความนี้และสามารถแก้ไขคำตอบได้โปรดอัปเดต ขอบคุณ!
joelparkerhenderson

ในขณะที่./configure --prefix=/ && makeวิ่งได้ดีmake installดูเหมือนว่าจะต้องsudo
Stewart

ขอบคุณที่นำสิ่งนี้ไปใช้ - เป็นวิธีที่ยุติธรรมในการแก้ไขสิ่งต่างๆในขณะที่ย้ายข้อมูล คนบางคนมี vms จำนวนมากและไม่เหมือนจริงที่จะสร้างใหม่แต่ละรายการ การใช้สิ่งนี้เป็นการแก้ไขทันทีในขณะที่แก้ปัญหาได้ในระยะยาวโดยการติดตั้งที่อัปเดตแล้วเป็นกุญแจสำคัญ
Jas Panesar

@ rubo77 ตอนนี้ต้องเป็น 1 27 (แพตช์ใหม่ 27 เป็นสิ่งที่สำคัญที่สุด)
joelparkerhenderson

1
เพิ่มโปรแกรมแก้ไข 28 สิ่งนี้จะปรากฏขึ้นเพื่อแก้ไขช่องโหว่ CVE-2014-7186 / 7187
unkilbeeg

2

นอกจากนี้ยังมีวิธีแก้ปัญหาในการอัปเดตซอร์สของคุณเป็นรายการใหม่ล่าสุดจากนั้นใช้ apt-get เพื่ออัปเกรด bash เท่านั้น มันเร็วมากและฉันได้เขียนบทความเกี่ยวกับเรื่องนี้ นี่คือสิ่งที่คุณทำโดยทั่วไป:

อัปเกรดเป็นที่เก็บข้อมูล apt-get apt-get ล่าสุดของ Ubuntu (คุณอาจต้องเปลี่ยน URL เก่า ๆ -ubpositions.ubuntu.com หากคุณใช้ตรวจสอบบทความที่เชื่อมโยง):

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list

อัปเกรด bash / ใช้การแก้ไข:

sudo apt-get update
sudo apt-get install --only-upgrade bash

และอาจเปลี่ยนที่เก็บ apt-get back


ทำงานอย่างสมบูรณ์แบบ!
ปีเตอร์ Kruithof

-1

คำสั่งควรเป็น

sudo apt-get update && sudo apt-get install --only-upgrade bash

2
สิ่งนี้จะไม่ช่วย อย่างที่ OP กล่าวว่ามันไม่รองรับอีกต่อไปดังนั้นจะไม่มีการอัปเกรดสำหรับทุบตี
Andrew Ferrier

-3

ทางเลือกง่าย ๆ อย่างหนึ่งก็คือห้ามใช้ bash ตรวจสอบให้แน่ใจdashการติดตั้งและที่/bin/shเป็น symlink ไปไม่ได้dash bash(นี่เป็นค่าเริ่มต้นสำหรับ Debian บางรุ่น แต่ฉันไม่แน่ใจเกี่ยวกับ Ubuntu) หากคุณมีบัญชีผู้ใช้สำหรับการเข้าถึง ssh ด้วยคำสั่งบังคับคุณต้องเปลี่ยนเชลล์ล็อกอินของพวกเขาด้วย คุณอาจต้องตรวจสอบสคริปต์ใด ๆ โดยใช้ bash อย่างชัดเจน grepping สำหรับ#!/bin/bashควรพบพวกเขา


5
มันเหมือนกับว่า "เราพบว่าคุณสามารถมี segfaults ใน C ++ เพียงแค่ใช้ Java แทน" ...
DevSolar

3
การเปรียบเทียบที่ใกล้ชิดยิ่งขึ้นกำลังบอกใครบางคนที่พบข้อบกพร่องใน GCC เพื่อลองส่งเสียงดังกราว ทั้งสองใช้ภาษาเดียวกัน (มีชุดที่แตกต่างกัน แต่บางครั้งทับซ้อนกันของส่วนขยายที่ไม่เป็นมาตรฐาน) และไม่น่าเป็นไปได้ที่ความต้องการที่แท้จริงคือ "bash" แต่สำหรับ "shell interpreter"
..

อย่างที่คุณพูดมีสคริปต์ที่สามารถใช้ทุบตีได้อย่างชัดเจน แม้ว่าคุณจะ grep สำหรับไฟล์ที่มีอยู่ที่ใช้ bash ในอนาคตบางคนสามารถเพิ่มสคริปต์ใหม่ให้กับระบบที่ใช้ bash อย่างชัดเจน กันไปสำหรับระบบฝังตัวที่ใช้ busybox (/ bin / sh ชี้ไปที่ busybox) แต่ยังมีการติดตั้งทุบตี สิ่งที่ดีที่สุดคือการอัพเดต bash ในระบบที่มีช่องโหว่
jcarballo

สคริปต์ Unix / Linux ส่วนใหญ่ต้องการ bash หรือ shell ที่ทันสมัยอื่น ๆ เช่น ksh หรือ zsh สิ่งเหล่านี้มีฟังก์ชั่นมากมายที่ผู้คนคาดหวังในภาษาใด ๆ แต่ไม่มีอยู่ในเปลือกหอย "กระดูกเปลือย" เช่น (BusyBox) เถ้า / Dash / sh (ต้นฉบับ) กระสุนที่ง่ายกว่านี้มีเพียง 20-30% ของการใช้งานของกระสุนที่ใหญ่กว่าซึ่งทำให้เร็วขึ้น อย่างไรก็ตามพวกเขาต้องการการใช้ยูทิลิตี้ภายนอกอย่างกว้างขวางสำหรับการดำเนินการทั่วไปหลายอย่างเช่นการจัดการสตริงขั้นสูงและการจับคู่รูปแบบ ทุบตีและสามารถเรียกใช้เถ้า ฯลฯ สคริปต์ แต่ไม่ใช่ในทางกลับกัน
DocSalvager
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.