วิธีตรวจสอบเว็บไซต์ที่โดน Hack #16
ShellShock หรือในอีกชื่อคือ Bashdoor (เลียนเสียง Backdoor) ซะงั้น เป็นช่องโหว่ใน Shell ที่ใช้กันทั่วไปในตระกูล *NIX ทั้ง UNIX, Linux รวมถึง Mac OS X[1] ด้วย โดยอาศัยความสามารถในการเขียน Function ใส่ใน Environment Variable ได้ โดยไม่มีการตรวจสอบข้อมูลที่แถมมาทำให้สามารถแทรกคำสั่งของระบบปฏิบัติการได้ ช่องโหว่นี้เริ่มประกาศเป็น CVE-2014-6271[2] โดย Bash Shell ที่ได้รับผลกระทบเริ่มตั้งแต่รุ่น 1.14.0 ถึง 4.3 ย้อนกลับไปตั้งแต่ปี 1999 กันเลยทีเดียว !! มีผลกระทบกับ CGI-base Web Server (ได้แก่ Apache), OpenSSH Server, DHCP Clients และ Qmail Server โดยเป็น Bug ตาม CWE 78[3] Improper Sanitization of Special Elements used in an OS Command (‘OS Command Injection’) วิธีตรวจสอบ Bash Version ใช้คำสั่ง bash –version หากพบว่า ต่ำกว่า 4.3 ก็ให้ลองคำสั่งต่อไปนี้ env x='() { :;}; echo Vulnerable’ bash -c ‘echo Hello World’ ถ้าตอบมาว่า Vulnerable Hello World ก็แสดงว่า เป็นเครื่องนี้มีช่องโหว่ครับ อธิบายเพิ่มเติม 1. คำสั่งในการสร้าง Environment Variable คือ env x=’ … ‘ โดยในที่นี้จะมีตัวแปร x เป็น Environment Variable 2. ต่อมา ในตัวแปร x สามารถสร้าง Function ได้ ในรูปแบบ env x='() { :;};’ ภายใน { } จะใส่คำสั่งอะไรก็ได้ แต่ในตัวอย่างนี้ เครื่องหมาย : มีความหมายเหมือนกับ true อะไรทำนองนั้น 3. ปัญหาอยู่ตรงที่ว่า Bash Shell ที่มีปัญหา ไม่ได้ตรวจสอบว่า Environment Variable ที่สร้างแบบ Function นี้ สิ้นสุดแค่การสร้าง function ทำให้สามารถแทรกคำสั่งเพิ่มเติมได้ หลังเครื่องหมาย ; env x='() { :;}; echo Vulnerable’ ลองใช้คำสั่ง env x='() { :;}; cat /etc/passwd’ จะแสดงตัวแปร Environment Variable ทั้งหมด และพบตัวแปร x มีค่าเป็น function อยู่ แต่จะยังไม่มีอะไรเกิดขึ้น 4. แต่เมื่อมีการเรียก Bash Shell ทำงาน ด้วยคำสั่ง env x='() { :;}; echo Vulnerable’ bash -c ‘echo Hello World’ ก็จะเป็นการเรียกคำสั่งในตัวแปร x ออกมาด้วยนั่นเอง กรณีผลกระทบของ DHCP Client คือ ถ้าเครื่อง DHCP Server ตัวอย่างเช่น dnsmasq[4] สามารถตั้งค่า dhcp-option-force ซึ่งจะส่งคำสั่งไปยัง