Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> ความปลอดภัยเครือข่าย

ช่องโหว่สำคัญ: WordPress AMP Plugin (≤v0.9.97.20) อนุญาต Code Injection – ต้องดำเนินการทันที

WordPress AMP Plugin ถูกเอ็กซ์พลอยต์

บทความนี้จะอภิปรายช่องโหว่ Code Injection ในเวอร์ชันเก่า (Version 0.9.97.20 และต่ำกว่า) ของ WordPress AMP Plugin เราจะอธิบายว่า AMP คืออะไร และว่า WordPress AMP plugin มีช่องโหว่ที่เอ็กซ์พลอยต์ได้อย่างไร

Accelerated Mobile Pages (AMPs) – บทนำสั้นๆ

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

หน้า AMP ประกอบด้วย 3 องค์ประกอบ:

  • AMP HTML: HTML สำหรับหน้า AMP แตกต่างออกไปเล็กน้อย มีข้อจำกัดบางอย่าง เพื่อให้ไม่ต้องโหลดฟีเจอร์ทั้งหมดเมื่อเปิดไซต์
  • AMP JS: องค์ประกอบหลักนี้รับผิดชอบโหลดทรัพยากรทั้งหมดเมื่อเปิดไซต์ โดยทำให้เนื้อหา Inbound ทั้งหมด Asynchronous (ไม่บล็อกกัน) เพื่อไม่ให้เนื้อหาในหน้าบล็อกการเรนเดอร์เนื้อหาภายนอก
  • AMP Cache: องค์ประกอบนี้เป็น Content Delivery Network (CDN) แบบ Proxy-based สำหรับส่งมอบเอกสาร AMP ที่ถูกต้องทั้งหมด เอกสารทั้งหมด, ไฟล์ JS และรูปภาพ โหลดจาก Origin เดียวกัน ที่ใช้ HTTP 2.0 เพื่อประสิทธิภาพสูงสุด

ช่องโหว่ Code Injection ในปลั๊กอิน AMP for WP

ปลั๊กอินที่กล่าวถึงคือ “AMP for WP – Accelerated Mobile Pages” ปลั๊กอินนี้ช่วยเรนเดอร์หน้าของเราเป็นรูปแบบ Accelerated Mobile Pages สำหรับเวลาโหลดเร็วบนแพลตฟอร์มมือถือ ช่องโหว่พื้นฐานในเวอร์ชันเก่าของปลั๊กอิน (Version 0.9.97.20 และต่ำกว่า) คือ Broken Authentication and Session Management (การยืนยันตัวตนและการจัดการเซสชันที่เสียหาย)

พบว่าสิ่งเหล่านี้เกิดขึ้น เนื่องจากมีการเอ็กซ์พลอยต์ต่างๆ เช่น File injections, การดาวน์โหลดไฟล์ Backdoor (รวมถึง wp-config.php), ช่องโหว่ DDoS, การอัปเกรดฐานข้อมูล, การเขียนทับ Options และ Post-metadata, การใช้ Bandwidth ผิดวัตถุประสงค์ (ดาวน์โหลด WP media-library ทั้งหมด), และการฉีด WordPress Post ที่ไม่ได้กรอง (Unfiltered WordPress post injections) ซึ่งใช้ประโยชน์จากช่องโหว่นี้ ช่องโหว่ Code Injection ฉีดโค้ดอันตรายเข้าเว็บไซต์ผ่านวิธีต่างๆ เช่น Cookies และ Browser-side scripts นี่ช่วยให้พวกเขาขโมยข้อมูลละเอียดอ่อน หรือทำให้เกิด Data breach

ทำไมจึงเกิดขึ้น?

สิ่งนี้เกิดขึ้นเพราะทรัพยากรการจัดการเซสชันของเราไม่ได้รับการป้องกันอย่างเหมาะสม สิ่งนี้เกิดขึ้นหาก:

  • ข้อมูลรับรองการยืนยันตัวตนของผู้ใช้ ไม่ได้รับการป้องกันเมื่อจัดเก็บด้วย Hashing หรือ Encryption
  • Credentials สามารถเดาได้ หรือเขียนทับได้ ผ่านฟังก์ชันจัดการบัญชีที่อ่อนแอ (เช่น การสร้างบัญชี, เปลี่ยน/กู้คืนรหัสผ่าน และ Session IDs ที่อ่อนแอ)
  • Session IDs ถูกเปิดเผยใน URL (เช่น URL rewriting)
  • Session Items เปราะบางต่อ Session Fixation attacks
  • Session IDs หรือ User sessions หรือ Authentication tokens โดยเฉพาะ Single Sign-On (SSO) tokens ไม่ได้ถูกทำให้ Invalid อย่างเหมาะสมระหว่าง Logout
  • Session IDs ไม่ได้หมุนเวียน (Rotate) หลัง Login สำเร็จ
  • รหัสผ่าน, Session IDs และ Credentials อื่นๆ ถูกส่งผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส

ช่องโหว่นี้ถูกจัดประเภทเป็น CWE-287 ใน Common Weakness Enumeration List

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

กลยุทธ์การบรรเทาลดทอน (Mitigation Strategy)

กลยุทธ์การบรรเทาลดทอนที่เรียบง่ายที่สุด เพื่อปลอดภัยจากช่องโหว่คือ :

  • อัปเดตเป็น WordPress AMP Plugin ล่าสุด (ที่ปล่อยหลัง Version 0.9.97.20)
  • ปิดใช้งานปลั๊กอินปัจจุบัน จนกว่าช่องโหว่จะได้รับการแก้ไข

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

หมายเหตุ: ปลั๊กอินที่ได้รับผลกระทบ ถูกลบชั่วคราวจากไลบรารีปลั๊กอิน WordPress เนื่องจากโค้ดที่เปราะบาง แต่ไม่ใช่ผู้พัฒนาหรือทีม WordPress ที่เปิดเผยปัญหาที่แน่นอนในปลั๊กอิน