ช่องโหว่ Bash

วันที่ 24 กันยายน 2557 พบช่องโหว่ของ Bash มีชื่อว่า “เชลล์ช๊อก” Shellshock โดยมีเลขกำกับช่องโหว่นี้ด้วยกัน 2 เลขคือ CVE-2014-6271 และ CVE-2014-7169 ช่องโหว่นี้สามารถทำการรีโมทชุดคำสั่งที่ทำงานได้ โดยข้ามขั้นตอนการตรวจสอบยืนยันสิทธิ์เข้าใช้งาน ซึ่งหากมีผู้ไม่หวังดีต้องการสร้างความเสียหาย อาจส่งโค้ดอันตรายเพื่อควบคุม OS (Linux,Unix) สามารถเข้าถึงข้อมูลที่สำคัญ / ฝังโค้ด / แฝงตัวเพื่อดำเนินการโจมตีเครื่องอื่น ๆ บน Internet หรือเพื่อวัตถุประสงค์อื่นๆ ก็แล้วแต่ …

Bash คืออะไร ?

ขอเท้าความถึง ลีนุกซ์ ก่อนละกัน ซึ่งทุกคนคิดว่าเคยได้ยินผ่านหูแล้วทั้งนั้น ซึ่งเป็นเพียง OS ที่มีตัว Kernel ที่ทำหน้าที่จัดสรรทรัพยากรต่างๆ ของระบบ ไม่สะดวกที่จะนำมาใช้งานโดยตรง เหล่านักพัฒนาจึงได้สร้างระบบติดต่อ ขึ้นมาครอบลินุกซ์เคอร์เนลเพื่อให้สามารถใช้งานได้สะดวกขึ้น — ซึ่ง shell ก็คือระบบติดต่อที่ว่านั้น ที่ทำหน้ารับคำสั่งจากผู้ใช้ไปส่งให้เคอร์เนล การติดต่อกับ shell จะติดต่อผ่านโปรแกรมเทอร์มินัลได้แก่พวก Putty, SecureCRT เป็นต้น

Bash (Bourne Again Shell) เป็น shell ที่ติดมาพร้อมกับระบบปฏิบัติการลีนุกซ์ ทำให้นิยมแพร่หลายมาก  โดยพบว่าshell ที่ใช้กันมาใน

  • UNIX คือ Bourne Shell (sh) Korn Shell (ksh) และ C Shell (tcsh)
  • Linux คือ Bourne Again Shell (bash)

ผลกระทบ

ก็ทุกเครื่องที่มีการใช้งานลีนุกซ์ โดยเริ่มต้นนั้นให้รีบดำเนินการจากบนลงล่าง ตามความเสี่ยงที่มีโอกาสโดนโจมตีผ่านช่องโหว่ ดังนี้

  • เครื่องเซิร์ฟเวอร์ลีนุกซ์ที่ต่อกับ Internet โดยตรงจำเป็นต้องรีบแก้ไขให้ไว้ที่สุด
  • เครื่อง Desktop ที่เป็นลีนุกซ์ ที่มีการใช้งานอินเตอร์เนตด้วย
  • เครื่องเซิร์ฟเวอร์ลีนุกซ์ที่ใช้งานภายในองค์กร

ระบบปฎิบัติการ Android ไม่แน่ใจว่าจะโดนช่องโหว่นี้ด้วยหรือไม่ พอดีทางผู้เขียนไม่ได้มีทดสอบ ใช้เครื่อง 2G อยู่ 🙂

วิธีการแก้ไข

1. ตรวจสอบ bash version ผ่าน

2. ทาง Redhat ได้แนะนำวิธีทดสอบว่า bash ที่ติดตั้งอยู่ มีช่องโหว่ หรือไม่ ดังนี้

2.1 ตรวจสอบช่องโหว่ CVE-2014-6271 ผ่านโค้ด

Check Bash Code Injection Vulnerability (Shellshock)

  • ขึ้นคำว่า valnerable แสดงว่า มีช่องโหว่อยู่
  • หากขึ้นคำว่า valnerable + syntax error + test ขึ้นมาด้วย แสดงว่า bash ที่ติดตั้งอยู่ ไม่เคยได้รับการ patch ใดๆ เลย

2.2 ตรวจสอบช่องโหว่ CVE-2014-7169 ผ่านโค้ด

Bash Code Injection Vulnerability (CVE-2014-7169)

  • หากพบช่องโหว่นี้ จะมีการสร้างไฟล์ /tmp/echo ขึ้นมา และ แสดงวัน-เวลาที่รันคำสั่ง ตามรูปด้านนี้เลย

2.3 ดำเนินการ update bash ผ่าน yum (หรือวิธีอื่นๆ ตามสะดวก)

2.4 ตรวจสอบช่องโหว่ CVE-2014-6271 และ CVE-2014-7169 อีกครั้ง
output for CVE-2014-6271 patched

  • ไม่มีคำว่า valnerable แสดงว่า ช่องโหว่ถูกปิด แล้ว
  • ขึ้นตามข้างต้น ได้รับการ fixed เพิ่มเติมจาก RHSA-2014:1306, RHSA-2014:1311 and RHSA-2014:1312 ด้วย

output for CVE-2014-7169 patched

  • ไม่มีไฟล์ /tmp/echo และวันที่ ถูกปิดช่องโหว่เรียบร้อยแล้ว

3. วิธีการแก้ไขเบื้องต้นผ่าน Network-based mitigations

Resources

Bash Code Injection Vulnerability (CVE-2014-6271, CVE-2014-7169)