แจ้งเตือนช่องโหว่ร้ายแรงสูงสุดบน Drupal 7.x-8.x ยึดเว็บได้จากระยะไกล

ทีมงาน Drupal ประกาศออกแพตช์แก้ไขช่องโหว่ระดับความรุนแรงสูง SA-CORE-2018–002 (CVE-2018-7600) เป็นช่องโหว่ประเภท Remote Code Execution หรือช่องโหว่ที่สามารถรันคำสั่งใดๆ บนเครื่องเว็บเซิฟเวอร์ที่ติดต้ัง Drupal ได้โดยไม่ต้องพิสูจน์ตัวตน มีผลกระทบโดยตรงกับ Drupal เวอร์ชั่น 7.x, 8.3.x, 8.4.x และ 8.5.x

From Drupal Security Advisories (SA-CORE-2018-002)

รายละเอียดช่องโหว่

ในแพตช์ซึ่งถูกเผยแพร่ออกมาพร้อมกับเวอร์ชั่นใหม่ของ Drupal แพตช์มีการเพิ่มไฟล์ขึ้นมาหนึ่งไฟล์คือ request-sanitizer.inc สำหรับเวอร์ชั่น 7.58 และไฟล์ RequestSanitizer.php สำหรับเวอร์ชั่น 8.5.1 โดยภายในไฟล์ดังกล่าว Drupal ถูกเพิ่มกระบวนการทำงานอีกหนึ่งขั้นตอนคือการตรวจสอบและคัดกรองข้อมูลนำเข้าที่ผู้ใช้งานส่งเข้ามาประมวลผลจากทางช่องทางต่างๆ (GET, POST, COOKIE) ซึ่งกระบวนการทั้งหมดนั้นถูกดำเนินการโดยฟังก์ชัน stripDangerousValues()

Content of RequestSanitizer.php with stripDangerousValues()

จากรูปภาพด้านบน ฟังก์ชัน stripDangerousValues() ซึ่งถูกระบุไว้ในไฟล์ RequestSanitizer.php ที่บรรทัด 84 นั้นจะทำการตรวจสอบค่าที่ผู้ใช้งานส่งเข้าแอป ตามลำดับดังนี้

  1. ตรวจสอบว่าข้อมูลนำเข้านั้นอยู่ในลักษณะอาเรย์หรือไม่
  2. หากข้อมูลนำเข้าอยู่ในลักษณะของอาเรย์ ทำการตรวจสอบต่อว่าข้อมูลดังกล่าวนั้นเริ่มต้นด้วยเครื่องหมาย # หรือไม่ หากตรวจพบว่าข้อมูลเข้านั้นเริ่มต้นด้วยเครื่องหมาย # จริง ฟังก์ชันจะทำการส่งค่ากลับไปโดยนำเครื่องหมาย # ออกทันที

ความสำคัญของเครื่องหมาย # นี้มาจาก API ภายในของ Drupal เองเนื่องจาก Drupal ใช้เครื่องหมาย # ในการแยกระหว่าง HTML child element กับ property โดย property ดังกล่าวนั้นจะอ้างอิงกับ API ของ Form ซึ่งอธิบายว่ามี property ไหนที่ผู้ใช้งานสามารถเรียกใช้ได้บ้าง และมีผลลัพธ์เมื่อถูกดำเนินการโดยเว็บแอปพลิเคชันในลักษณะใด

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

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

รุ่นของซอฟต์แวร์ที่ได้รับผลกระทบ

  • Drupal 8.x ก่อนหน้ารุ่น 8.5.1
  • Drupal 7.x ก่อนหน้ารุ่น 7.58
  • Drupal 8.3.x ก่อนหน้ารุ่น 8.3.9
  • Drupal 8.4.x ก่อนหน้ารุ่น 8.4.6

คำแนะนำในการตอบสนองต่อช่องโหว่

  • สำหรับ Drupal ในรุ่น 8.x ให้ทำการอัปเดตเวอร์ชันของ Drupal ไปยังเวอร์ชัน 8.5.1 ที่มีการแพตช์ช่องโหว่ดังกล่าวแล้วทันที อย่างไรก็ตามในกรณีที่ไม่สามารถอัปเดตได้ ทีมนักพัฒนาของ Drupal ได้แนะนำให้ทำการแพตช์เฉพาะเพื่อป้องกันการโจมตีช่องโหว่ดังกล่าวไว้ก่อน
  • สำหรับ Drupal ในรุ่น 7.x ให้ทำการอัปเดตเวอร์ชันของ Drupal ไปยังเวอร์ชัน 7.58 ที่มีการแพตช์ช่องโหว่ดังกล่าวแล้วทันที อย่างไรก็ตามในกรณีที่ไม่สามารถอัปเดตได้ ทีมนักพัฒนาของ Drupal ได้แนะนำให้ทำการแพตช์เฉพาะเพื่อป้องกันการโจมตีช่องโหว่ดังกล่าวไว้ก่อน
  • สำหรับ Drupal ในรุ่น 8.3.x และรุ่น 8.4.x ซึ่งปัจจุบันไม่ได้รับการซัพพอร์ตแพตช์ใหม่ๆ แล้ว ทีมนักพัฒนา Drupal ได้ทำการออกเวอร์ชันใหม่สำหรับ 2 รุ่นนี้เป็นกรณีพิเศษโดยสำหรับรุ่น 8.3.x ให้ทำการอัปเดตเป็น 8.3.9 หรือใช้แพตช์เฉพาะ ส่วนสำหรับรุ่น 8.4.x ให้ทำการอัปเดตเป็น 8.4.6 หรือใช้แพตช์เฉพาะ