ฉันจะแก้ไขความเสี่ยงด้านความปลอดภัยของ Shellshock ในการทดสอบ / เดเบียนได้อย่างไร


24

คำสั่งทดสอบ

x='() { :;}; echo vulnerable' bash

แสดงให้เห็นว่าการติดตั้งDebian 8 (Jessie) ของฉันมีความเสี่ยงแม้จะมีการปรับปรุงล่าสุด การวิจัยแสดงให้เห็นว่ามีแพทช์สำหรับความเสถียรและไม่เสถียร แต่การทดสอบนั้นไม่ได้รับการแก้ไข

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


จากข้อมูลของ Bob มีช่องโหว่ของ Shellshock ที่สองซึ่งได้รับการแก้ไขในแพ็ตช์ที่สอง การทดสอบมันควรจะเป็น:

 env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("

แต่ฉันไม่มีทักษะเพียงพอในการทุบตีเพื่อหาว่ามันหมายถึงอะไรหรือทำไมมันเป็นปัญหา ไม่ว่าจะทำอะไรแปลก ๆ ซึ่งถูกป้องกันโดย bash_4.3-9.2_amd64.deb บนระบบ 64 บิตซึ่งในช่วงเวลาของการแก้ไขนั้นเสถียรและไม่เสถียร แต่ไม่ใช่ในการทดสอบของJessie

เพื่อแก้ไขปัญหานี้สำหรับเจสซีdpkg -iได้รับล่าสุดจากการทุบตีไม่เสถียรและติดตั้งด้วย

Jemenake เสนอ

wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb

เป็นคำสั่งที่จะได้รับเวอร์ชั่น 4.3-9.2 สำหรับเครื่องของคุณ

และคุณสามารถติดตามได้ด้วย:

sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb

เพื่อติดตั้ง

หากคุณต้องการแพตช์เพิ่มเติมจากระบบที่ไม่เสถียรสำหรับเจสซีของคุณนี่เป็นวิธีการที่ชัดเจน ( โดยอนุโลม )

คำตอบ:


5

ดาวน์โหลดแพ็กเกจไม่เสถียรผ่านลิงก์นี้ คุณสามารถตรวจสอบการอ้างอิงที่นั่นได้เช่นกันแม้ว่าดูเหมือนว่าการทุบตีที่ไม่เสถียรจะมีการขึ้นต่อกันเหมือนกับการทุบตีจากการทดสอบ ติดตั้ง deb ที่ดาวน์โหลดมาด้วยรายการต่อไปนี้

dpkg -i

1
ขอบคุณฉันทำอย่างนั้นและแก้ไขปัญหาโดยไม่ทำลายอะไรอย่างเห็นได้ชัด ในที่สุดมันก็จะถูกเขียนทับในระหว่างการอัพเดทปกติหรือไม่?
John Lawrence Aspden

3
ลิงค์ด้านบนนั้นใช้ได้ถ้าคุณใช้เบราว์เซอร์ใน GUI น้อยลงดังนั้นถ้าคุณใช้คมในเชลล์เซสชั่น หากคุณต้องการสิ่งที่คุณสามารถวางลงในบรรทัดคำสั่งของคุณเพื่อคว้ามันลอง: wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb มันจะได้รับสถาปัตยกรรมที่เหมาะสมสำหรับกล่องของคุณ
Jemenake

1
@Jemenake คุณควรโพสต์นั้นเป็นคำตอบที่แยกต่างหาก
Excellll

นี่เป็นคำตอบที่ฉันต้องการอย่างแน่นอน แต่ตอนนี้การอัปเดตทำให้เจสซีฉันคิดว่ามันจะดีกว่าถ้าคำตอบที่ยอมรับคือคนที่กำลังมองหาอยู่ตอนนี้ฉันเลยขยับเห็บ ขอบคุณนะ!
John Lawrence Aspden

ที่จริงแล้วมีบั๊ก shellshock อยู่สองตัวและการแก้ไขสำหรับอันที่สองนั้นอยู่ในสถานะ sid แต่ไม่ใช่ jessie ดังนั้นนี่คือความจริงที่ยังเป็นคำตอบที่ถูกต้อง (ให้แน่ใจว่าคุณได้รับ 4.3-9.2!) แม้ว่าสถานการณ์จะคลี่คลาย ในไม่ช้า
John Lawrence Aspden

25

ฉันได้แก้ไขคำตอบนี้สำหรับการแก้ไขทุบตีเพิ่มเติมที่เปิดตัวในวันจันทร์

สำหรับ Ubuntu 12.04 ฉันได้ทำการอัพเดท แต่ก็ต้องทำการติดตั้งเพื่อทุบตีเพื่อกำจัดช่องโหว่

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

คำสั่งนั้นแสดงให้เห็นว่าระบบมีความเสี่ยงดังนั้นให้ทำการอัพเดท

apt-get update && apt-get -y upgrade

ทดสอบอีกครั้ง

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

ยังคงมีช่องโหว่

apt-get install -y bash

ทดสอบอีกครั้ง

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

แก้ไข: หลังจากปล่อยแพตช์เพิ่มเติมออกมีการเปลี่ยนแปลง

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

เย้! คงที่ สิ่งนี้ควรใช้ได้กับรุ่นอื่น แต่ฉันไม่ได้ทดสอบเกิน 12.04

นอกจากนี้คำตอบของ runamok ด้านล่างใช้งานได้ดีดังนั้นให้เขาโหวตขึ้น!


6
เพียงแค่apt-get update && apt-get install -y bashดูเหมือนว่าจะทำงาน
runamok

จากคำตอบโดย @JabawokJayUK ฉันยังคงล้มเหลวในการทดสอบครั้งแรกหลังจากอัพเดต bash ใน Ubuntu 12.04
Birla

ฉันเพิ่งได้รับthis is a testแต่ไม่ใช่ข้อผิดพลาดและคำเตือน ในเครื่องของฉันฉันจะได้รับข้อผิดพลาด แต่ในเซิร์ฟเวอร์ของฉันไม่ได้ อะไรที่วัด? เซิร์ฟเวอร์ของฉันได้รับการติดตั้งหรือไม่ ขอบคุณ.
ElBaulP

ดูเหมือนว่าพื้นที่เก็บข้อมูลเป็นปัจจุบันเพราะฉันไม่ต้องทำการติดตั้ง apt-get ขั้นตอน -y ปัญหาได้รับการแก้ไข alredy หลังจากอัพเกรด
user316566

1
นี่ไม่ได้ตอบคำถามเกี่ยวกับการทดสอบDebian / เจสซี Ubuntu นั้นมีการกระจายที่แตกต่างกันด้วยที่เก็บของแพ็คเกจที่เป็นอิสระและตารางการแพตช์
บ๊อบ

16

ทางเลือกสำหรับ Debian 6.0 (Squeeze) โดยไม่ต้องดึงแพ็คเกจจาก Debian 7 (Wheezy):

ใช้ที่เก็บข้อมูลการรักษาความปลอดภัย LTS ที่มีแพทช์ backported

เพิ่มไปที่/etc/apt/sources.list:

#LTS security
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free

apt-get update && apt-get install bashจากนั้นเรียก

Via: linuxquestions


ใช้งานได้สำหรับเดเบียน 6. เรารักษาความปลอดภัย LTC ไว้ในรายการเสมอ!
stanleyxu2005

4

apt-get updateก่อนapt-get dist-upgradeและคุณจะได้รับแพทช์ เพิ่งทำด้วยตัวเองและมีการอัพเกรดทุบตีซึ่งผลักดันการแก้ไขปัญหา


2
ปัญหาคือการทดสอบ Debian ยังไม่มีแพ็คเกจที่อัพเดตดังนั้นการดาวน์โหลดด้วยตนเองจากความไม่เสถียรและการติดตั้งที่เป็นการแก้ไขที่ง่ายที่สุดในเวลานั้น ทางออกที่ให้ไว้ในคำตอบนี้จะไม่ได้ผล (อาจจะเป็นตอนนี้เพราะแพคเกจอาจจะย้ายไปทดสอบ)
wurtel

นี่ไม่ได้ตอบคำถามเดิม แต่เป็นสิ่งที่ผู้คนต้องทำตอนนี้ดังนั้นฉันจึงยอมรับมันเพื่อให้เป็นสิ่งแรกที่ผู้คนจะได้เห็น คำตอบ 'จริง' สำหรับความยากลำบากของฉัน (มันไม่เสถียรและมั่นคง แต่ไม่ใช่ในการทดสอบ) คือคำตอบของ wurtel โดยใช้การดาวน์โหลด bash ใหม่ด้วยตนเอง - ????. deb และ dpkg -i
John Lawrence Aspden

ฉันคิดว่านี่เป็นคำตอบสำหรับ Ubuntu ตอนนี้พวกเขาผลักดันการแก้ไขอย่างถูกต้องแล้วและอาจเป็นไปได้สำหรับการแจกจ่ายแบบเดเบียนอื่น ๆ ที่ยังคงอยู่จนถึงจุดที่ผู้คนผลักดันการแก้ไข
John Lawrence Aspden

จริงๆแล้วมีข้อบกพร่องสอง shellshock และการแก้ไขสำหรับอันที่สองยังไม่ได้ทำให้เจสซี่ยัง
John Lawrence Aspden

นี่ยังคงเป็นโซลูชันที่ถูกต้องและจะยังคงอยู่ตราบใดที่ทีมรักษาความปลอดภัยการทดสอบ Debian กำลังผลักดันการอัปเดต พวกเขาอาจไม่ได้ทดสอบในช่วงเวลาที่มีคำถาม OP อีกตัวเลือกหนึ่งคือการตั้งค่าให้ผู้ใช้ทุกคนใช้ Dash นี่เป็นปัญหาเซิร์ฟเวอร์เป็นส่วนใหญ่ไม่ใช่
MGD_Toronto


1

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

สรุป:

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash

อ่านบทความหากคุณใช้ old-releases.ubuntu.com และอย่าลืมว่าคุณอาจต้องการเปลี่ยนกลับ:

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

เอ่อ…สิ่งนี้จะทำให้ระบบของคุณมี Trusty ในแหล่งรายการ ครั้งต่อไปที่คุณอัปเดตระบบจะอัปเกรดเป็น Trusty สิ่งนี้จะทำลายระบบของคุณอย่างมาก
strugee

1

เวอร์ชันคงที่ (ดูการเปลี่ยนแปลง ) สำหรับแพ็คเกจ Bash อยู่ใน Debian 8 (Jessie) ตอนนี้ (ดูข้อมูลแพ็คเกจ ) ตั้งแต่ 2014-09-26 14:18 UTC

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

ไม่จำเป็นต้องติดตั้งไม่เสถียรอีกต่อไป

เพิ่งรัน:

# aptitude update

ติดตามโดย:

# aptitude upgrade

จากนั้นตรวจสอบว่าช่องโหว่หายไป (ในเชลล์ที่เพิ่งเปิดใหม่):

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'

ยังไม่ได้แก้ไขการติดตาม CVE-2014-7169
บ๊อบ

@ บ๊อบฉันคิดว่ามันเกี่ยวข้องกับ Ubuntu เท่านั้นหรือ และน่าจะเป็น Ubuntu ที่ได้ทำการแก้ไขเรียบร้อยแล้ว
John Lawrence Aspden

@ JohnLawrenceAspden Nope ลองเรียกใช้env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("- ถ้าพิมพ์still vulnerableแล้วยังไม่มีการปรับปรุงช่องโหว่หลัง AFAIK, jessie ยังคงมีช่องโหว่ โปรดทราบว่าคำสั่งนั้นจะสร้างไฟล์ที่มีชื่อechoในไดเรกทอรีปัจจุบันหากประสบความสำเร็จและคุณจะต้องลบมันก่อนที่จะทำการทดสอบอีกครั้ง
บ๊อบ

@ บ๊อบฉันไม่สามารถทำหัวหรือก้อยในเรื่องนี้อัฒภาคทำอะไรได้บ้าง
John Lawrence Aspden

@Bob แต่ไม่ว่ามันจะเป็นเช่นไรคุณพูดถูกว่าการอัพเกรดเป็นเวอร์ชั่น 4.3-9.2 นั้นหยุดไม่ได้!
John Lawrence Aspden
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.