ฉันจะมั่นใจได้อย่างไรว่าการติดตั้ง Bash ของฉันไม่เสี่ยงต่อข้อผิดพลาดของShellShockอีกต่อไปหลังจากการอัพเดต
ฉันจะมั่นใจได้อย่างไรว่าการติดตั้ง Bash ของฉันไม่เสี่ยงต่อข้อผิดพลาดของShellShockอีกต่อไปหลังจากการอัพเดต
คำตอบ:
เพื่อตรวจสอบช่องโหว่ CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
ไม่ควรสะท้อนกลับคำที่มีช่องโหว่
/tmp/echo
ว่าคุณสามารถลบได้หลังจากนั้นและจำเป็นต้องลบก่อนทำการทดสอบอีกครั้ง)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
cat: echo: No such file or directory
มันควรจะพูดว่าวันที่คำแล้วบ่นด้วยข้อความเช่น ถ้ามันบอกคุณว่าวันที่และเวลาปัจจุบันเป็นอย่างไรระบบของคุณจะมีความเสี่ยง
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
CVE-2014-7186 vulnerable, redir_stack
มันไม่ควรสะท้อนกลับข้อความ
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
CVE-2014-7187 vulnerable, word_lineno
มันไม่ควรสะท้อนกลับข้อความ
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
ผลการผ่านในสิ่งนี้คือมันสะท้อนกลับข้อความtesting CVE-2014-6277
เท่านั้น ถ้ามันทำงาน Perl หรือถ้ามันบ่นว่า Perl ไม่ได้ติดตั้งที่แน่นอนล้มเหลว ฉันไม่แน่ใจเกี่ยวกับลักษณะความล้มเหลวอื่น ๆ เนื่องจากฉันไม่มีระบบที่ไม่ได้จับคู่อีกต่อไป
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
ผ่านสำหรับการทดสอบนี้คือควรสะท้อนกลับข้อความtesting CVE-2014-6278
เท่านั้น หากคุณสะท้อนกลับไปhi mom
ทุกที่ที่แน่นอนล้มเหลว
foo='() { echo not patched; }' bash -c foo
ลงในสิ่งนี้ได้หรือไม่? จนกว่าการส่งออกฟังก์ชั่นจะอยู่ในเนมสเปซที่แยกจากกันเราจะไม่หยุดทำงานจากตัวแยกวิเคราะห์ข้อผิดพลาดตัวหนึ่งไปยังตัวถัดไป
ส่งออกตัวแปรสภาพแวดล้อมที่สร้างขึ้นเป็นพิเศษซึ่งจะได้รับการประเมินโดยอัตโนมัติโดยเวอร์ชันที่มีช่องโหว่ของ Bash:
$ export testbug='() { :;}; echo VULNERABLE'
ทีนี้ลองใช้ echo ง่ายๆเพื่อดูว่า Bash จะประเมินโค้ดเป็น $ testbug หรือไม่แม้ว่าคุณจะไม่ได้ใช้ตัวแปรนั้น:
$ bash -c "echo Hello"
VULNERABLE
Hello
หากแสดงสตริง "VULNERABLE" คำตอบนั้นชัดเจน ไม่เช่นนั้นคุณไม่ต้องกังวลและรุ่น Bash ที่แพตช์แล้วก็โอเค
โปรดทราบว่าแพทช์หลายตัวได้รับการเผยแพร่โดยลีนุกซ์รุ่นใหญ่และบางครั้งก็ไม่สามารถแก้ไขช่องโหว่ได้อย่างสมบูรณ์ ทำการตรวจสอบคำแนะนำด้านความปลอดภัยและรายการ CVEสำหรับข้อผิดพลาดนี้ต่อไป
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShock เป็นกลุ่มของช่องโหว่ทุบตีมากกว่าหนึ่งช่องโหว่และในขณะนี้ยังมีช่องโหว่ที่ช่องโหว่นี้ดังนั้น ShellShock จึงเป็นปัญหาที่ยังเปิดอยู่มีเธรดพร้อมอัปเดตจาก RedHat เกี่ยวกับปัญหานี้
เรียกใช้คำสั่ง:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
หากผลลัพธ์คือ:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
คุณไม่มีการแก้ไขใด ๆ
หากผลลัพธ์คือ:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
คุณมีการCVE-2014-6271
แก้ไข
หากผลลัพธ์ของคุณคือ:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
คุณไม่ได้อ่อนแอ
อีกส่วนหนึ่งของการตรวจสอบ ShellShock คือการตรวจสอบช่องโหว่ CVE-2014-7169 เพื่อให้แน่ใจว่าระบบได้รับการปกป้องจากปัญหาการสร้างไฟล์ เพื่อทดสอบว่าเวอร์ชั่น Bash ของคุณเสี่ยงต่อ CVE-2014-7169 หรือไม่ให้รันคำสั่งต่อไปนี้:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
หากระบบของคุณมีความเสี่ยงเวลาและวันที่จะปรากฏขึ้นและ / tmp / echo จะถูกสร้างขึ้น
หากระบบของคุณไม่เสี่ยงคุณจะเห็นผลลัพธ์คล้ายกับ:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
ฉันเขียนโปรแกรมอรรถประโยชน์ CLI ชื่อShellShockerเพื่อทดสอบเว็บเซิร์ฟเวอร์ของคุณเพื่อหาช่องโหว่ในสคริปต์ CGI หากต้องการทดสอบเว็บไซต์ของคุณคุณจะต้องเรียกใช้:
python shellshocker.py <your-server-address>/<cgi-script-path>
กล่าวคือ
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
แก้ไข: ยูทิลิตี้นี้ถูกนำมาลงขออภัย: '(
คุณสามารถส่ง CGI URL ของคุณไปยังการทดสอบออนไลน์นี้:
พิมพ์ env x = '() {:;}; echo ที่มีช่องโหว่ 'bash -c "echo นี่เป็นการทดสอบ" และถ้าสิ่งนี้ส่งคืนความเสี่ยงและนี่เป็นการทดสอบหมายความว่าเครื่อง OSX / Linux ของคุณได้รับผลกระทบ วิธีแก้ไขคือการอัพเดตเป็นเวอร์ชันล่าสุดของ bash