ฉันจะคอมไพล์ Bash อีกครั้งเพื่อหลีกเลี่ยง Shellshock (การใช้ประโยชน์จากระยะไกล CVE-2014-6271 และ CVE-2014-7169) ได้อย่างไร


368

ระบุว่า Bash 3.2 (เวอร์ชันที่จัดส่งโดย OS X) มีความเสี่ยงต่อการโจมตีจากระยะไกลที่เรียกว่า "Shell Shock" ( CVE-2014-6271และCVE-2014-7169 ) ฉันจะสร้าง Bash ใหม่และรักษาความปลอดภัยระบบของฉันได้อย่างไรก่อน แพทช์อย่างเป็นทางการของ Apple?

UPDATE: โปรดทราบว่า Apple ได้ออกแพทช์อย่างเป็นทางการแล้ว ดูรายละเอียดด้านล่าง


5
Apple ได้เปิดตัวการแก้ไข: support.apple.com/kb/DL1769
AT

1
แพทช์ OS X bash Update 1.0 ที่กล่าวถึงข้างต้นนั้นใช้เฉพาะกับ OS X 10.9.5 หรือใหม่กว่า - นี่คือทั้งหมด: OS X 10.7.5 (Lion), OS X 10.8.5 (Mountain Lion), OS X 10.9.5 ( Mavericks)
l'L'l

ใช่ฉันมีลิงก์เพิ่มเมื่อ 9 ชั่วโมงที่แล้ว แต่ถูกลบไปอย่างไม่ถูกต้อง apple.stackexchange.com/revisions/146849/10
AlBlue

สร้าง gist gist.github.com/dnozay/395dcdef05c6b4b1836aซึ่งมีขั้นตอนส่วนใหญ่แล้วและมีแพตช์รวมอยู่ด้วยแล้ว (และควรใช้กับ OSX 10.6)
dnozay

@dnozay ขอบคุณสำหรับส่วนสำคัญของคุณ! โปรดอัปเดตเพื่อรวมแพตช์ 55 และ 56 (ออกไปแล้ว) และ 57 (ออกเร็ว ๆ นี้)
โปรเก่า

คำตอบ:


429

สถานะ

Apple ได้เผยแพร่การแก้ไขความปลอดภัย Bash สำหรับ Shellshock และช่องโหว่ที่เกี่ยวข้องในชื่อ " OS X bash Update 1.0 " สามารถติดตั้งผ่านการอัปเดตระบบปกติสำหรับผู้ที่ใช้ OS X Mountain Lion v10.8.5 หรือ OS X Mavericks v10.9.5 (รวมอยู่ในการอัปเดตความปลอดภัย 2014-005 ) และสามารถติดตั้งได้ด้วยตนเอง การแก้ไขอย่างเป็นทางการของ Apple นั้นยังมีให้สำหรับ OS X Lion v10.7.5 และ OS X Lion Server v10.7.5 แต่จะมีให้ผ่านการดาวน์โหลดด้วยตนเองเท่านั้น การแก้ไขความปลอดภัยมีให้ใช้งานผ่าน URL ที่ต่างกันตามเวอร์ชั่นของระบบปฏิบัติการ:

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

Patch ของ Apple ดูแล Shellshock และช่องโหว่อื่น ๆ และเป็นสิ่งที่ดีสำหรับคนส่วนใหญ่ tl; dr คนหยุดอ่านที่นี่ได้

อย่างไรก็ตามการดึงความสนใจจากข้อผิดพลาดของ Shellshock ทำให้นักวิจัยหลายคนมองอย่างถี่ถ้วนเกี่ยวกับการทุบตีและพบช่องโหว่มากขึ้นเรื่อย ๆ (ยากที่จะใช้ประโยชน์) หากคุณกังวลอย่างมากเกี่ยวกับความปลอดภัย (เพราะบางทีคุณกำลังเรียกใช้ OS X Server เพื่อโฮสต์เว็บไซต์ที่เปิดเผยต่อสาธารณชน) จากนั้นคุณอาจต้องการ (ลอง) ติดตามช่องโหว่และแพทช์ตามที่พวกเขาทำการรวบรวมโดยการทุบตีตัวเอง มิฉะนั้นไม่ต้องกังวลกับมัน

ค้นหา Apple เพื่อปล่อยการอัปเดตอื่นเพื่อทุบตีบางครั้งในอนาคตเมื่อฝุ่นตกลงบนการค้นหาช่องโหว่เพิ่มเติม


ชุดอย่างเป็นทางการของแพทช์ทุบตีเองสำหรับทุบตี 3.2, แพทช์ 52, 53, และ 54 (ซึ่งสอดคล้องกับทุบตี 4.3 แพทช์ 25, 26 และ 27) มีให้บริการซึ่งแก้ไขทั้ง CVE-2014-6271 และ CVE-2014-7169, เช่นเดียวกับ 'Game over' ที่แสดงด้านล่าง สิ่งนี้ได้รับการทดสอบโดยฉัน ( @alblue ) และโพสต์ได้รับการอัปเดตตามนั้น (จากนั้นมีการอัปเดตเพิ่มเติม: ดูการแก้ไข 41สำหรับโพสต์ที่หยุดที่แพตช์ 54)

มีการรายงานช่องโหว่เพิ่มเติมหลายรายการจากการทุบตี จากการโพสต์ของ Michal Zalewski ถ้าคุณมี patch 54 (และน่าจะเป็นแพทช์อย่างเป็นทางการของ Apple) "ไม่มีจุดใดที่จะหมกมุ่นกับสถานะของตัวแมลงแต่ละตัวเหล่านี้เพราะพวกเขาไม่ควรเสี่ยงต่อความปลอดภัยอีกต่อไป"

  • CVE-2014-6271 - พบ RCE ดั้งเดิมโดย Stephane แก้ไขโดย bash43-025 และรายการ Sep 24 ที่สอดคล้องสำหรับเวอร์ชันอื่น

  • CVE-2014-7169 - ข้อผิดพลาดการสร้างไฟล์ / โทเค็นการบริโภคที่พบโดย Tavis แก้ไขโดย bash43-026 & co (26 ก.ย. )

  • CVE-2014-7186 - ความผิดพลาดที่ไม่น่าเป็นไปได้ 10+ ที่นี่-doc พบโดย Florian และ Todd แก้ไขโดย bash43-028 & co (1 ต.ค. )

  • CVE-2014-7187 - ไม่ล้มเหลวอาจไม่เสี่ยงต่อวินาทีที่พบโดย Florian แก้ไขโดย bash43-028 & co (1 ต.ค. )

  • CVE-2014-6277 - ปัญหาหน่วยความจำที่ไม่ได้เตรียมการเกือบจะแน่นอน RCE ที่พบโดย Michal Zalewski ยังไม่มีการแก้ไขที่เฉพาะเจาะจง

  • CVE-2014-6278 - คำสั่ง RCE ของการฉีดพบโดย Michal Zalewski ยังไม่มีการแก้ไขที่เฉพาะเจาะจง

มันค่อนข้างสับสน โชคดีเชษฐ์เมย์, ผู้ดูแลทุบตีอย่างเป็นทางการโพสต์CVE การแก้ไขการทำแผนที่ โพสต์ของเขาอ้างถึงแพตช์สำหรับ bash 4.3, I (@OldPro) ได้แปลพวกมันไปเป็น patch สำหรับ bash 3.2 ซึ่งเป็นสิ่งที่ใช้ได้กับ OS X นอกจากนี้เนื่องจากโพสต์นี้เขาเปิดตัวแพตช์ 57 ดังนั้นฉันจึงเพิ่มเติมว่า

 bash32-052      CVE-2014-6271                           2014-09-24
 bash32-053      CVE-2014-7169                           2014-09-26
 bash32-054      exported function namespace change      2014-09-27 ("Game Over")
 bash32-055      CVE-2014-7186/CVE-2014-7187             2014-10-01
 bash32-056      CVE-2014-6277                           2014-10-02
 bash32-057      CVE-2014-6278                           2014-10-05

ดูโพสต์ของ David A. Wheeler สำหรับไทม์ไลน์และรายละเอียดที่มากขึ้น

@alblue โพสต์คำแนะนำการสร้างผ่าน patch 55. ฉัน (@OldPro) เพิ่ม patch 56 และ 57 ลงในคำแนะนำ แต่ยังไม่ได้ทำการทดสอบ

ทดสอบช่องโหว่เดิม

คุณสามารถตรวจสอบว่าคุณมีความเสี่ยงต่อปัญหาต้นฉบับในCVE-2014-6271 หรือไม่โดยดำเนินการทดสอบนี้:

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

เอาต์พุตด้านบนเป็นตัวอย่างของbashเวอร์ชันที่ไม่มีช่องโหว่ หากคุณเห็นคำvulnerableในผลลัพธ์ของคำสั่งนั้นคุณbashมีความเสี่ยงและคุณควรปรับปรุง ด้านล่างเป็นเวอร์ชั่นที่มีช่องโหว่จาก OS X 10.8.5:

สกรีนช็อตของ bash terminal แสดงช่องโหว่ใน 10.8.5

ทดสอบช่องโหว่ใหม่

มีการอัปเดตกับโพสต์ดั้งเดิมและ Bash 3.2.52 (1) ยังคงเสี่ยงต่อการเปลี่ยนแปลงของช่องโหว่ตามที่กำหนดในCVE-2014-7169

$ rm -f echo
$ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Thu 25 Sep 2014 08:50:18 BST

เอาต์พุตด้านบนเป็นตัวอย่างของbashเวอร์ชันที่มีช่องโหว่ หากคุณเห็นวันที่ในผลลัพธ์ของคำสั่งนั้นคุณbashมีความเสี่ยง

ปิดการใช้งานฟังก์ชั่นที่นำเข้าอัตโนมัติเพื่อป้องกัน "Game Over"

นักวิจัยตั้งข้อสังเกตโดยไม่จำแนกว่ามันเป็นช่องโหว่ที่สคริปต์สามารถจี้ฟังก์ชั่นใน subshell โดยใช้ฟังก์ชั่นที่นำเข้าอัตโนมัติ:

$ env ls="() { echo 'Game Over'; }" bash -c ls
Game over

รหัสข้างต้นในระบบได้รับผลกระทบจะแสดงแทนของไดเรกทอรีรายชื่อที่คุณคาดหวังว่าจะได้รับจากGame Over lsเห็นได้ชัดว่าecho 'Game Over'สามารถถูกแทนที่ด้วยรหัสชั่วร้ายที่คุณต้องการ สิ่งนี้กลายเป็นข้อผิดพลาด "Game Over"

ก่อนที่จะมีแพตช์ 54 ทั้งNetBSDและFreeBSDปิดใช้งานฟังก์ชั่นทุบตีการนำเข้าอัตโนมัติโดยค่าเริ่มต้นส่วนหนึ่งเพื่อป้องกัน "Game Over" แต่ส่วนใหญ่จะมีข้อผิดพลาดเพิ่มเติมใน parser (เช่นCVE-2014-7169 ) จะถูกค้นพบอย่างต่อเนื่องและเพิ่มแฟล็กบรรทัดคำสั่งใหม่--import-functionsเพื่อเปิดใช้งานการทำงานเริ่มต้นเก่าอีกครั้ง ฉัน (@alblue) ได้เตรียมแพทช์ (กับ 3.2.53) เพื่อให้ผู้อื่นใช้หากพวกเขาต้องการที่จะใช้พฤติกรรมนี้เช่นกันและได้รวมไว้ด้านล่าง โดยค่าเริ่มต้นโปรแกรมแก้ไขนี้จะไม่เปิดใช้งานในสคริปต์การสร้างด้านล่าง ฉัน (@OldPro) เชื่อว่าโปรแกรมแก้ไขนี้ไม่จำเป็นอีกต่อไปหรือเป็นความคิดที่ดีเพราะมันหยุดการทำงานร่วมกันได้ย้อนหลังและช่องโหว่ที่ป้องกันนั้นได้รับการแก้ไขอย่างดีจากโปรแกรมแก้ไข 54 และโปรแกรมปรับปรุงรุ่นก่อนหน้า .

(หมายเหตุถึงผู้แก้ไขคำถามโปรดอย่าเปิดใช้งานสิ่งนี้เป็นค่าเริ่มต้นเนื่องจากเป็นโปรแกรมแก้ไขอย่างไม่เป็นทางการ)

a0c5c4d66742fddd0a35001cb91798a5fbf8a2f5 import_functions.patch

แพทช์สามารถเปิดใช้งานได้โดยการรันexport ADD_IMPORT_FUNCTIONS_PATCH=YESก่อนรันบิลด์ โปรดทราบว่าการเปิดใช้งานโปรแกรมแก้ไขนี้จะปิดใช้งานโปรแกรมแก้ไข 54 และโปรแกรมแก้ไขในอนาคตใด ๆเนื่องจากโปรแกรมแก้ไขในอนาคตไม่สามารถรับประกันได้ว่าจะเข้ากันได้กับโปรแกรมแก้ไขที่ไม่เป็นทางการ

Apple Patch มีช่องโหว่ Game Over ประเภทของ

ตามที่กล่าวโดย@ake_____ บนทวิตเตอร์แพทช์อย่างเป็นทางการของ Apple ยังคงมีความเสี่ยงต่อสภาพแวดล้อมที่ปิดกั้นการปฏิบัติการได้:

$ env '__BASH_FUNC<ls>()'="() { echo Game Over; }" bash -c ls
Game Over

ผู้ใช้ควรตัดสินใจด้วยตนเองว่าเรื่องนี้สำคัญอย่างไร ฉัน (@OldPro) คิดว่ามันไม่มีอะไรต้องกังวลเพราะไม่มีการหาช่องโหว่สำหรับพฤติกรรมนี้ (มันไม่ได้รับตัวระบุ CVE) เพราะโดยทั่วไปแล้วผู้โจมตีระยะไกลที่ไม่ได้รับสิทธิไม่สามารถตั้งชื่อตัวแปรสภาพแวดล้อมได้ ใช้สิ่งนี้เพื่อรับสิทธิพิเศษที่พวกเขายังไม่มีอยู่ (อย่างน้อยก็ไม่ได้โดยไม่ทำการเจาะช่องโหว่เพิ่มเติม)

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

$ ls () { echo 'Game Over'; }
$ export -f ls
$ echo $ls
Game Over

เรื่องนี้เกิดขึ้นเพราะสร้างตัวแปรสภาพแวดล้อมที่มีชื่อexport -f ls lsช่องโหว่ "Game Over" คือคุณสามารถสร้างตัวแปรสภาพแวดล้อมนี้ได้โดยตรงโดยไม่จำเป็นต้องกำหนดฟังก์ชั่นก่อนซึ่งหมายความว่าหากคุณสามารถฉีดชื่อตัวแปรที่ถูกต้องคุณสามารถจี้คำสั่งได้ Apple พยายามแก้ไขปัญหานี้โดยทำให้ยากที่จะสร้างตัวแปรด้วยชื่อที่ถูกต้อง อย่างเป็นทางการ bash patch 54 ทำให้ไม่สามารถสร้างตัวแปรด้วยชื่อที่ถูกต้องได้โดยใช้ชื่อตัวแปรซึ่งรวมถึง%ตัวอักษรที่ไม่ได้รับอนุญาตในชื่อตัวแปรทำให้การกำหนดฟังก์ชันที่ส่งออกในเนมสเปซที่แตกต่างกันมีประสิทธิภาพ

หากไม่มีสิ่งใดที่เหมาะสมกับคุณอย่ากังวลไป คุณพอใจกับ Patch ของ Apple ในตอนนี้

ระบบไบนารี

OS X 10.9.5 (การปล่อยเสถียรล่าสุดในขณะนี้) มาพร้อมกับ Bash v3.2.51:

$ bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

คุณสามารถรับและคอมไพล์ Bash ใหม่ดังต่อไปนี้โดยที่คุณได้ติดตั้ง Xcode (และได้ทำงานxcodebuildอย่างน้อยหนึ่งครั้งก่อนที่จะยอมรับใบอนุญาต):

$ # If you want to disable auto-imported functions, uncomment the following
$ # export ADD_IMPORT_FUNCTIONS_PATCH=YES
$ mkdir bash-fix
$ cd bash-fix
$ curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
$ cd bash-92/bash-3.2
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0    
$ curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0  
$ # See note above about ADD_IMPORT_FUNCTIONS_PATCH
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] && curl http://alblue.bandlem.com/import_functions.patch | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-054 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-055 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-056 | patch -p0
$ [ "$ADD_IMPORT_FUNCTIONS_PATCH" == "YES" ] || curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-057 | patch -p0
$ cd ..
$ # Note: DO NOT ADD SUDO TO XCODEBUILD HERE
$ xcodebuild
$ build/Release/bash --version # GNU bash, version 3.2.57-release
$ build/Release/sh --version   # GNU bash, version 3.2.57-release
$ sudo cp /bin/bash /bin/bash.old
$ sudo cp /bin/sh /bin/sh.old
$ sudo cp build/Release/bash /bin
$ sudo cp build/Release/sh /bin

(หมายเหตุ: คุณสามารถเรียกใช้สิ่งนี้ได้โดยการคัดลอกและวางโค้ดบล็อกด้านบนเข้าไปใน Terminal แล้วเรียกpbpaste | cut -c 2- | shใช้โปรดระมัดระวังเมื่อใช้สคริปต์แบบสุ่มจากอินเทอร์เน็ตแม้ว่า ... )

หลังจากนี้เวอร์ชั่น Bash ควรเป็น v3.2.57:

$ bash --version
GNU bash, version 3.2.57-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

เพื่อความปลอดภัยและหลังการทดสอบเราขอแนะนำให้คุณchmod -xใช้เวอร์ชันเก่าเพื่อให้แน่ใจว่าไม่ได้ใช้ซ้ำหรือย้ายไปยังไซต์สำรอง

$ sudo chmod a-x /bin/bash.old /bin/sh.old

คำตอบอื่น ๆ มีคำตอบสำหรับผู้ที่ใช้ MacPorts หรือ Homebrew สิ่งเหล่านี้ไม่ได้แก้ปัญหาพวกเขาเพียงแค่ติดตั้ง Bash รุ่นเพิ่มเติม โปรดดูคำตอบเหล่านั้นหากคุณต้องการอัพเกรดเฉพาะ

ขอบคุณ

ขอบคุณ Chet ที่ดูแลการทุบตีและทำให้แพทช์เหล่านี้พร้อมใช้งานแล้ว ขอบคุณทุกคนที่ให้ความเห็นเกี่ยวกับเรื่องนี้และปรับปรุงมันเมื่อเวลาผ่านไป

ตอนนี้ Apple ได้เปิดตัวการแก้ไขจริงแม้ว่าสิ่งนี้อาจจะมีประโยชน์ เนื่องจากพวกเขาปล่อยการแก้ไขสำหรับ Lion and up เท่านั้นและแพตช์อย่างเป็นทางการให้ GNU ทุบตีรุ่น 3.2.53 (1) - ปล่อย (x86_64-apple-darwin13) อย่างไรก็ตามเกม over bug ยังค่อนข้างเสี่ยงอยู่ ณ จุดนี้การสร้าง Bash ในแบบของคุณใหม่กับ 3.2.57 นั้นอาจปลอดภัยกว่าการใช้ Patch ของ Apple เว้นแต่ว่าคุณทำผิด


18

Macports

สิ่งนี้ทำให้คุณได้รับเวอร์ชั่นทุบตี 4.3.28 (1) ซึ่งได้ทำการแก้ไขช่องโหว่ทั้งสอง (CVE-2014-6271 และ CVE-2014-7169) รวมถึงบางสิ่งที่ค้นพบในภายหลัง สิ่งนี้มีประโยชน์หากคุณเปลี่ยนเชลล์เพื่อใช้ Macports bash เพื่อรับคุณสมบัติเวอร์ชั่น 4

มันจะไม่แก้ปัญหาของสคริปต์ระบบปฏิบัติการมาตรฐานเช่นมี#!/bin/shหรือ#!/bin/bashเป็นบรรทัดแรก ปัญหาประเภทนี้คือสาเหตุที่ Macports พยายามที่จะไม่ใช้โปรแกรมที่มากับ Apple เนื่องจาก Macports มีแนวโน้มที่จะได้รับการอัปเดตที่รวดเร็วขึ้นเช่นมีทุบตีรุ่นใหม่กว่า)

คุณสามารถทำให้เทอร์มินัลใช้สิ่งนี้ได้ในคำตอบ Homebrew

ในการติดตั้ง macports ให้ทำตามคำแนะนำต่อไปนี้คือ
1. ติดตั้งXcode และเครื่องมือบรรทัดคำสั่ง Xcode
2. เห็นด้วยกับสิทธิ์ใช้งาน Xcode ในเทอร์มินัล: sudo xcodebuild -license
3. ดาวน์โหลด MacPorts pkg สำหรับเวอร์ชัน OS X ของคุณ: ลิงก์อยู่ในหน้า
4 เรียกใช้ pkg

เมื่อคุณมีการติดตั้ง macports คุณจำเป็นต้องใช้เวอร์ชันล่าสุดซึ่งจะดำเนินการโดยเรียกใช้

sudo port selfupdate

และคอมไพล์ใหม่หรือรับไบนารีล่าสุดโดย

sudo port upgrade outdated

5
เนื่องจากนี่เป็นเรื่องเกี่ยวกับการแก้ไขช่องโหว่ด้านความปลอดภัยในไบนารีที่มีอยู่และนี่ไม่ได้แทนที่ / แก้ไขไบนารีที่เปราะบางฉันจึงไม่สามารถดูว่าวิธีนี้แก้ปัญหาได้อย่างไร
AlBlue

มันทำให้รุ่น macports - และเป็นจริงในการร้องขอความคิดเห็นของ IanC
Mark

ใช่. เราควรจะแสดงรายการการแก้ไขสำหรับสถานที่ทั้งหมดที่bashมักจะมาจากบน OS X - ดังนั้นการแก้ไขระบบ Homebrew และ MacPorts แก้ไข อาจจะเป็นตำรวจด้วยเช่นกัน ฉันต้องการมันเป็นการส่วนตัวหากนี่เป็นการแก้ไขคำตอบของ @ AlBlue ดังนั้นมันจึงเป็นคำตอบที่ถูกต้องที่สุด
Ian C.

2
@InaC เหล่านี้ควรแยกจากกันเนื่องจากคำตอบต่างกันและไม่สามารถตรวจสอบได้ - เช่นดูฉันว่านี่ไม่ได้แก้ไขการทุบตีของ Apple และคำตอบจากการคัดลอก Homebrew ทุบตี OSX ในความเป็นจริงพวกเขาเป็นคำถามที่แยกจากกัน
ทำเครื่องหมาย

ดูการแก้ไขคำตอบของ @ AlBlue ของฉัน ฉันไม่เห็นด้วยกับสิ่งเหล่านี้ควรแยกจากกัน
Ian C.

17

หมายเหตุเกี่ยวกับการอัปเดตอย่างเป็นทางการของ Apple OS X bash 1.0: การอัปเดตซอฟต์แวร์นี้นำเฉพาะเวอร์ชั่นทุบตีอย่างเป็นทางการของ Apple เป็น 3.2.53 การแก้ไขแพตช์ 3.2.54 มีการเปลี่ยนแปลงดังต่อไปนี้:

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

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

env X='() { (a)=>\' sh -c "echo date"; cat echo

ซึ่งหมายความว่าไบนารี 3.2.53 อย่างเป็นทางการของ Apple มีความปลอดภัยเทียบเท่ากับไบนารีวานิลลา GNU 3.2.54 ความสับสนที่โชคร้าย แต่มันคือสิ่งที่มันเป็น การแก้ไขของ Apple ไม่ได้ถูกทำให้อ่อนลง ดูเหมือนจะเป็นการแก้ไขที่สมบูรณ์สำหรับปัญหา ดังนั้นแผนที่ด้านล่างเพื่อรวบรวมวานิลลาbashและshจากแหล่ง GNU ควรได้รับการพิจารณาว่าเป็นสิ่งประดิษฐ์ทางประวัติศาสตร์และอาจได้รับการพิจารณาว่าเป็นแม่แบบสำหรับวิธีการทำแพทช์ในอนาคตหากจำเป็น

หมายเหตุ: ด้วยแหล่งที่มาของวานิลลา GNU shมีปัญหาการยกระดับสิทธิ์ที่ทำให้เกิดความล้มเหลวในโปรแกรมติดตั้งต่างๆเช่น Adobe Flash ฉันขอแนะนำอย่างยิ่งให้ติดกับไบนารีที่แพทช์ของ Apple พิจารณารูปแบบการแก้ไขนี้เพื่อเลิกใช้แล้วและไม่ได้รับคำแนะนำ

มีแพทช์ GNU bash 3.2.55 ใหม่ที่อธิบายการแก้ไขต่อไปนี้:

ข้อผิดพลาดคำอธิบาย:

มีบัฟเฟอร์โลคัลสองโอเวอร์โฟลว์ใน parse.y ที่สามารถทำให้เชลล์ดัมพ์คอร์เมื่อได้รับเอกสารที่นี่จำนวนมากที่แนบกับคำสั่งเดียวหรือหลายลูปซ้อนกัน

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


โพสต์นี้มีรายละเอียดวิธีการคอมไพล์และติดตั้งวานิลลาbashและshบน OS X ฉันเลือกเส้นทางนี้เป็นตัวอย่างรายละเอียดโดยใช้แหล่งที่มาเฉพาะของ Apple ไม่ได้ทิ้งฉันไว้ด้วยการแก้ไขแพตช์ที่ถูกต้อง YMMV อย่างไรก็ตามการติดตั้งวานิลลานี้มีเป้าหมายเพื่อแทนที่ไบนารีของ OS X เช่นว่าเมื่อ Apple ปล่อยการปรับปรุงความปลอดภัยในที่สุดการเปลี่ยนวานิลลาเหล่านี้จะถูกแย่งชิงโดยคู่ค้าของ Apple ที่เหมาะสม

การกำหนดค่าฐานของฉันคือ:

OS X Lion 10.7.5 และ Xcode 4.6.3 เมื่อติดตั้งยูทิลิตีบรรทัดคำสั่งทั้งหมดแล้ว

ขั้นตอนของฉันเพื่อแก้ไขปัญหานี้คือ:

ดาวน์โหลดซอร์สโค้ดฐาน bash สำหรับ 3.2.48 จาก:

https://ftp.gnu.org/gnu/bash/bash-3.2.48.tar.gz

ดาวน์โหลดแพตช์ bash3.2.49, .50, .51, .52, .53, .54 และ. 55 จาก:

https://ftp.gnu.org/gnu/bash/bash-3.2-patches/

ฉันบันทึกพวกเขาเป็น $ filename.patch เช่น bash3.2.50.patch

ซีดีลงในไดเรกทอรีดาวน์โหลดของคุณและ ...

แกะสาขาที่มาหลัก:

tar xzvf bash-3.2.48.tar.gz

cd bash-3.2.48

สมมติว่าคุณได้เปลี่ยนชื่อไฟล์แพทช์ดาวน์โหลดตามที่อธิบายไว้ก่อนหน้านี้

cp ../*.patch .

จากนั้น ...

for file in *.patch ; do
  patch -p0 < $file
done

นี่ควรจะแสดงแพตช์สำเร็จของไฟล์ต่างๆ หากไม่พร้อมให้ทำการสำรวจและสอบสวน

ต่อไป:

sudo cp /bin/bash /bin/bash_old
sudo cp /bin/sh /bin/sh_old
sudo chmod -x /bin/bash_old
sudo chmod -x /bin/sh_old

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

ต่อไป:

./configure --prefix=/ ; make ; sudo make install

สิ่งนี้ควรกำหนดค่ารวบรวมและติดตั้งไบนารี bash ใหม่อย่างถูกต้องใน / bin หลังจากเสร็จสิ้นให้ออกจากเทอร์มินัลแล้วเปิดใหม่

คุณควรทุกสิ่งมีความสุขและยิ้มได้สามารถbash --versionและตอนนี้ดู 3.2.55 เช่น:

Gaia:Downloads trane$ bash --version
GNU bash, version 3.2.55(1)-release (i386-apple-darwin11.4.2)
Copyright (C) 2007 Free Software Foundation, Inc.

ผลลัพธ์ที่แน่นอนในคำสั่งด้านบนจะแตกต่างกันไปขึ้นอยู่กับเวอร์ชั่นของ OS X

คุณควรจะสามารถทดสอบช่องโหว่ของคุณbashและพบว่ามันดี

หมายเหตุ: เราเพิ่งแก้ไขการทุบตีจนถึงตอนนี้ แต่ตัว/bin/shปฏิบัติการยังอยู่ในสถานะเสี่ยง การคัดลอกbashบนยอดshเพียงลักษณะ Linux ในการทำสิ่งต่าง ๆ อย่างไรก็ตามshการนำไปใช้ของ OS X มีความแตกต่างกันเล็กน้อยbashดังนั้นคุณจะต้องลากคอมไพเลอร์ออกมาอีกครั้ง ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการbashและshแตกต่างกันใน OS X สามารถพบได้ที่นี่:

https://apple.stackexchange.com/a/89327/91441

ในไดเรกทอรีดาวน์โหลดของคุณ:

make clean

ในเครื่องมือแก้ไขที่คุณชื่นชอบให้เปิดไฟล์Makefile.inและเลื่อนไปที่บรรทัดที่ 99 เราจะเปลี่ยนบรรทัดโปรแกรมเพื่อให้ไบนารีที่เราส่งออกเป็นแบบนั้นshแทนbash:

Program = sh$(EXEEXT)

บันทึกแล้ว

./configure --prefix=/ --enable-xpg-echo-default --enable-strict-posix-default
make ; sudo make install

ตอนนี้คุณจะได้สร้างshเกือบตามที่ Apple ต้องการ

หมายเหตุสุดท้ายประการหนึ่ง: ในบางระบบ (ทั้งหมด?) โดยทั่วไปแล้ว Apple ดูเหมือนจะวางระบบbashbugปฏิบัติการ/usr/binไว้ /binรวบรวมของเราจะได้ใส่ลงใน ดังนั้นขั้นตอนสุดท้ายที่นี่:

sudo mv /usr/bin/bashbug /usr/bin/bashbug_old
sudo chmod -x /usr/bin/bashbug_old
sudo mv /bin/bashbug /usr/bin/bashbug

1
ไม่ว่าจะเป็นเสียงสะอื้นหรืออะไรก็ตาม แต่เมื่อคำถามคือ "ฉันจะคอมไพล์ bash ใหม่ได้อย่างไร" และคำตอบของฉันคือ "คลิกที่ลิงค์ต่อไปนี้เพื่อตอบคำถามนั้นดูเหมือนว่าข้อกำหนดสรุปจะคงอยู่
Trane Francks

2
รับแล้ว: ห้องสมุด readline ที่มาพร้อมกับ bash เข้ากันไม่ได้กับ 10.6 ติดตั้ง readline ของ GNU แทนแล้วแฮกไฟล์ bash makefile ติดตั้ง readline: ftp.cwru.edu/pub/bash/readline-6.3.tar.gz ใน bash หลังจากทำการกำหนดค่าใน Makefile ให้ตั้งค่าREADLINE_LIB = /usr/local/lib/libreadline.aและทำการคอมไพล์ใหม่ทั้งหมด จากนั้นตัดและคัดลอกไบนารี bash ใหม่ที่ด้านบน/bin/bashและ/bin/sh
Seth Noble

2
ภาคผนวก: ใน bash Makefile จำเป็นต้องตั้งค่าHISTORY_LIB = /usr/local/lib/libhistory.aด้วย มิฉะนั้น bash จะเชื่อมโยงแบบไดนามิกกับ libhistory / usr / local
เซ ธ โนเบิล

1
โปรดทราบว่ารุ่นที่ดาวน์โหลดได้จากหน้า Apple opensource มีการเปลี่ยนแปลงที่กำหนดเองเพื่อให้ทำงานบน OSX ฉันจะไม่แนะนำให้ใช้ vanilla upstream bash มิเช่นนั้นคุณจะไม่ได้แทนที่แบบที่เหมือนกัน
AlBlue

1
Apple ทำการเปลี่ยนแปลงมากมายเพื่อปรับใช้ประโยชน์จากโอเพ่นซอร์สบนระบบให้เหมาะสม ที่กล่าวว่าฉันไม่สามารถดูวานิลลาที่bashจะไม่ปฏิบัติตัวเองเพียงเพราะเคอร์เนลแตกต่างกัน ไม่ว่าในกรณีใดฉันจะพิจารณาวิธีการแก้ปัญหาชั่วคราว ในที่สุด Apple จะได้รับการแก้ไขปัญหาและไบนารีที่รวบรวมของฉันจะถูกแทนที่ (ซึ่งเป็นเหตุผลหลักของฉันสำหรับการรวบรวม/binในครั้งแรก
Trane Francks

15

สำหรับทุกคนที่ต้องดิ้นรนกับการรวบรวมจากแหล่งข้อมูล ณ วันที่ 29 กันยายน Apple ได้ออกแพทช์อย่างเป็นทางการสำหรับ Mac OS X 10.9.5, 10.8.5 และ 10.7.5:


1
ขอบคุณ! การทำเช่นนี้อาจง่ายกว่าการคอมไพล์ซ้ำเป็นจำนวนมาก / มากที่สุด
AlBlue

@AlBlue เห็นด้วย ในขณะที่ยังไม่ได้ทำความสะอาดอย่างสมบูรณ์ในขณะที่กำลังปะ - บางคนชี้ให้เห็น - มันดีกว่าไม่มีอะไรเลย และปลอดภัยกว่าการรวบรวมซอร์สโค้ดมือใหม่บางส่วนในความหวาดกลัว
JakeGould

2
ตามปกติความล่าช้าในการเผยแพร่ซอฟต์แวร์อัปเดตจะมีผลอย่างสมบูรณ์ ฉันสงสัยว่าจะใช้เวลานานเท่าใดในการแสดงแพ็คเกจ รู้สึกสดชื่นที่เห็นว่า Apple ตอบสนองต่อปัญหานี้ได้อย่างรวดเร็ว!
Trane Francks

2
@TraneFrancks“ ตามปกติความล่าช้าในการเผยแพร่ซอฟต์แวร์อัปเดตจะมีผลอย่างสมบูรณ์” ฉันไม่เข้าใจว่าองค์กรนั้นและผลักดันอัลบั้มเต็มของ U2 ไปยังผู้ใช้ iOS ทุกคนสามารถทำให้การอัปเดตความปลอดภัยน้อยกว่า 4MB
JakeGould

@ JakeGould: เฮ้ ใช่นั่นเป็นขำ ฉันเพิ่งตรวจสอบการอัปเดตซอฟต์แวร์ในระบบ Lion นี้และมันอ้างว่าระบบนั้นเป็นข้อมูลล่าสุด เช่นเดียวกันกับระบบ Lion Mountain อื่นที่นี่
Trane Francks

5

ก่อนอื่นการแก้ไข bash และ sh สำหรับช่องโหว่นี้น่าจะทำให้สคริปต์บางตัวใน Mac ของคุณเสียหาย คุณไม่จำเป็นต้องทำเช่นนี้เว้นแต่ว่าคุณกำลังเสนอบริการทางเว็บสู่อินเทอร์เน็ตสาธารณะโดยตรงจาก Mac ของคุณ ดังนั้นหากไม่จำเป็นจริงๆให้รอจนกว่าจะมีการอัปเดตความปลอดภัยอย่างเป็นทางการจาก Apple

ถูกเตือนนี่เป็นคำแนะนำเกี่ยวกับวิธีการอัปเดตนี้โดยใช้ Brew ใน Mavericks 10.9

ก่อนอื่นให้ยืนยันว่าคุณกำลังใช้ bash ที่ล้าสมัย:

$ which bash
/bin/bash
$ /bin/bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

bash ปัจจุบันมากที่สุดคือ 4.3.25

หากคุณไม่ได้ติดตั้ง Xcode คุณจะต้องใช้เครื่องมือบรรทัดคำสั่ง Xcode ซึ่งสามารถติดตั้งได้

$ xcode-select --install

หรือจากพอร์ทัลนักพัฒนา

ในการติดตั้ง Brew ( http://brew.sh ):

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

จากนั้นทำ:

$ brew doctor

ทำตามคำแนะนำหากมีปัญหา ปัญหาที่พบบ่อยมากมีการระบุที่นี่

จากนั้นอัปเดต Brew เป็นรายการแพ็คเกจล่าสุด:

$ brew update

วิธีรับ bash 4.3.25 ล่าสุด:

$ brew install bash

สิ่งนี้จะติดตั้งทุบตี /usr/local/Cellar/bash/4.3.25/bin/bash

เก่าbashและshยังคงอยู่ที่/binดังนั้นหลังจากติดตั้งคุณจะเปลี่ยนชื่อไฟล์ปฏิบัติการเก่าเป็นไฟล์ใหม่

$ sudo mv /bin/bash /bin/bash_old
$ sudo mv /bin/sh /bin/sh_old

หากคุณหวาดระแวงมากคุณสามารถลบการอนุญาตให้ใช้งานบน bash_old

$ sudo chmod a-x /bin/bash_old /bin/sh_old

จากนั้นสร้างลิงก์สัญลักษณ์ไปยัง bash 4.3.25 ใหม่ที่สร้างติดตั้ง

$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/bash
$ sudo ln -s /usr/local/Cellar/bash/4.3.25/bin/bash /bin/sh

รีบูทและมันก็เสร็จสมบูรณ์

คำเตือน - นี้อาจทำลายบางเชลล์สคริปต์ที่มีอยู่ซึ่งอาจพึ่งพาทุบตี 3.2 หรือความแตกต่างที่เครื่อง Mac มีกว่าลินุกซ์sh shมีคำตอบที่ซับซ้อนมากขึ้นในการแทนที่ bash และ sh จากแหล่งที่มาจากคำตอบโดย @TraneFranks ในชุดข้อความเดียวกันนี้


4
การอัพเดทจาก 3.2.51 ถึง 3.2.52 นั้นจะสร้างความเสียหายได้น้อยกว่าการอัพเกรดเป็น 4.3. สิ่งทุกอย่าง
AlBlue

ฉันเตือนว่ามันอาจทำลายสคริปต์บางตัว แต่ 4.3.25 เป็นสิ่งที่ Brew ติดตั้งเป็นปัจจุบัน - ฉันพยายามเสนอรุ่นที่ง่าย (er) เพื่อติดตั้งที่ทำได้ตั้งแต่เริ่มต้น และคุณสามารถกู้คืนได้โดยเปลี่ยนชื่อไฟล์ปฏิบัติการเก่ากลับมา
Christopher Allen

2
ข้อผิดพลาดนี้ถูกเอารัดเอาเปรียบโดยเซิร์ฟเวอร์ DHCP ที่เป็นอันตราย (เช่นฮอตสปอต WiFi) และสามารถเขียนคอมพิวเตอร์ของคุณได้อย่างสมบูรณ์ คำตอบอื่น ๆ มีคำแนะนำที่ดีกว่าสำหรับการเปลี่ยน/bin/bashและ/bin/shน่าจะทำให้เกิดปัญหาน้อยกว่าการอัพเกรดเป็นทุบตีล่าสุดของ Brew
โปรเก่า

Mac อาจไม่เสี่ยงต่อการโจมตี DHCP
Christopher Allen

10
การโจมตีเซิร์ฟเวอร์ DCHP ทำได้เฉพาะในกรณีที่ไคลเอ็นต์ DHCP ของคุณใช้สคริปต์ Bash ซึ่งการใช้งาน OSX ไม่ได้ทำ
AlBlue

5

OS X 10.6.8 - Snow Leopard

โพสต์ของ @AlBlue เสร็จสมบูรณ์มาก อย่างไรก็ตามบนเซิร์ฟเวอร์ OS X 10.6.8 การแก้ไขของเขาจะไม่ทำงาน Apple ไม่มีการแก้ไขสำหรับ 10.6.8 และขั้นตอนที่อธิบายโดย @AlBlue ไม่ทำงานกับ Xcode 3.2.6 (ซึ่งเป็นเวอร์ชันล่าสุดสำหรับ Snow Leopard) ฉันได้รับข้อผิดพลาด:

** BUILD FAILED **

The following build commands failed:
sh:
    CodeSign /Users/bas/bash-fix/bash-92/build/Release/sh
bash:
    CodeSign /Users/bas/bash-fix/bash-92/build/Release/bash
(2 failures)

ด้วยเหตุนี้ผมใช้brew.sh โปรดแสดงความคิดเห็นความคิดเห็นของคุณเมื่อคุณมีทางออกที่ดีกว่าสำหรับ OS X 10.6.8 Snow Leopard ดูความคิดเห็นของ @Jerome ด้วยเขามี patch ที่ประสบความสำเร็จใน OS X 10.6.8 Snow Leopard โดยใช้โซลูชันของ @ AlBlue อย่างไรก็ตาม:

ก่อนติดตั้งชงกับ oneliner ต่อไปนี้:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

ปรับปรุง brew

brew update

ตอนนี้เพียงติดตั้งเวอร์ชันล่าสุดbashและแทนที่เวอร์ชันปัจจุบัน:

brew install bash
sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'
chsh -s /usr/local/bin/bash
sudo mv /bin/bash /bin/bash-backup
sudo ln -s /usr/local/bin/bash /bin/bash

คุณสามารถตั้งค่าเริ่มต้นเข้าสู่ระบบเชลล์ ' Command (complete path)' สำหรับ Terminal.app ในการตั้งค่า ( Command,) ป้อนคำอธิบายรูปภาพที่นี่


หมายเหตุ: ในความคิดเห็นผู้ใช้บางคนไม่คิดว่าวิธีนี้เหมาะสม แต่สำหรับฉันนี่เป็นวิธีเดียวที่เข้าใจได้สำหรับการอัพเกรด BASH บน OS X 10.6.8 Snow Leopard


1
สคริปต์บางตัวยังใช้ bash 3 และไม่ทำงานกับ bash 4 (macports ได้แก้ไข bash 4.3.25 ซึ่งฉันคิดว่า home-brew ได้อัปเดตเป็น
Mark

2
คุณไม่ได้อัปเดตshเช่นกัน - คุณต้องทำเช่นนั้นด้วย /bin/sh! /bin/bash= เครื่องมือจำนวนมากเริ่มต้น/bin/shเมื่อคุณเรียกใช้คำสั่งระบบ system()ตัวอย่างเช่นการเรียกรูบี้ใช้/bin/shเมื่อคุณมีอักขระการขยายเชลล์ที่จำเป็นต้องขยายในสตริง คุณกำลังเล่นเกมที่สูญเสียโดยใช้ Homebrew เพื่ออัปเดตไบนารีระบบของคุณ คุณควรอัปเดตของ Homebrew bash นอกเหนือจากการทำการปรับปรุงไบนารีระบบที่เหมาะสม
Ian C.

1
จำไว้ว่า OSX 10.8 และ 10.9 ใช้ Bash 3.2 ดังนั้นเพื่อความสอดคล้องโดยตรงฉันจึงใช้ 3.2 เป็นเวอร์ชั่น นอกจากนี้ยังอิงจากงานสร้างอย่างเป็นทางการของ Apple สำหรับรุ่นก่อนหน้าซึ่งอาจรวมถึงสิ่งพิเศษเช่นการรับรู้คุณลักษณะเพิ่มเติมและขยาย
AlBlue

1
ฉันใช้ 3.2.6 ตัวเองในทุกกรณี ฉันเข้าใจว่าบิลด์ล้มเหลวเมื่อทำงานxcodebuildหรือไม่ ถ้าเป็นเช่นนั้นฉันไม่ได้พบว่า ฉันมีข้อเสนอแนะที่มั่นคงเพื่อให้คุณ: ตรวจสอบว่าคุณมีทุบตีหลายสร้างพิจารณาทำความสะอาด (ชงถอนการติดตั้ง) และอาจติดตั้ง xcode อีกครั้ง ... จากนั้นเริ่มกระบวนการแก้ไขใหม่
เจอโรม

1
ฉันมีปัญหาในการควบคุมงานอย่างจริงจังด้วยสต็อกทุบตี-4.3 บน Snow Leopard (ถ้าฉันเริ่ม emacs และหยุดทำงานชั่วคราวฉันจะไม่สามารถทำงานต่อด้วย 'fg') ฉันได้ดาวน์โหลดซอร์ส Snow Leopard เพื่อทุบตีจากopensource.apple.com/release/mac-os-x-1068ใช้แพตช์จากftp.gnu.org/gnu/bash/bash-3.2-patchesและสร้างใหม่เพื่อ ผลที่ดีกว่ามาก
mormegil

-6

คุณสามารถทำตามคำแนะนำได้ที่นี่: https://github.com/tjluoma/bash-fixโดยทั่วไปให้ทำดังต่อไปนี้ใน Terminal:

curl -s https://raw.githubusercontent.com/tjluoma/bash-fix/master/bash-fix.sh | zsh -f

5
การเรียกใช้งานเชลล์สคริปต์แบบสุ่มจากบัญชีสุ่ม GitHub นั้นไม่ใช่วิธีการที่คุณเข้าสู่สถานการณ์ที่ปลอดภัยยิ่งขึ้นในเครื่องใด ๆ คุณต้องการเชื่อใจในจุดสิ้นสุด
Ian C.

ฉันต้องเห็นด้วยกับเอียนที่นี่ มันง่ายมากที่จะแนะนำความเสียหายอย่างมากผ่านเชลล์สคริปต์ที่ไม่น่าไว้วางใจเช่นปัญหาที่ CVEs เหล่านี้อธิบาย
Trane Francks

ไม่เห็นด้วยอย่างยิ่งกับการแพร่กระจายของ FUD นี้ อ่านเชลล์สคริปต์ทั้งหมดก่อนดำเนินการและจากเฉพาะ https: //
dhchdhd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.