CVE-2015-6535 WordPress – youtube-embed XSS
ถ้าหากเข้าไปดูใน CVE Repository (ฐานข้อมูลที่แสดงรายชื่อช่องโหว่ของซอฟแวร์) แล้วลองหาด้วยคีย์เวิร์ด “WordPress” เราจะพบว่ามีช่องโหว่ที่โผล่ขึ้นมาจำนวนมากในแต่ละปี ช่องโหว่นั้น จริงๆ แล้วส่วนใหญ่จะเกิดจากนักพัฒนาภายนอกที่ทำการพัฒนา Plugin อย่างไม่ระมัดระวังเกิดเป็นช่องโหว่ขึ้นมา ซึ่งสุดท้ายแล้ว ไปกระทบต่อความปลอดภัยต่อการใช้งาน WordPress ทั้งระบบ วันนี้ ผมจะมาพูดถึง ตัวอย่างช่องโหว่ความปลอดภัยตัวล่าสุดของ WordPress ใน CVE Repository กันครับ
ช่องโหว่ XSS ผ่าน Plugin
ปัญหาช่องโหว่ youtube-embed XSS เป็นช่องโหว่ซึ่งกระทบกับ Admin ทั้งหมดในระบบ เมื่อมี Admin คนนึง แทรกโค้ดไม่พึงประสงค์เข้าไป (หรืออาจจะโดนผ่านช่องโหว่อื่นอีกที) ผลจากช่องโหว่คือ เมื่อ Admin ที่เป็นเหยื่อ ทำการเปิด Control Panel จะถูกรันสคริปต์บางอย่างโดยไม่รู้ตัวได้ (เช่นแก้ไขค่าเพิ่มสิทธิ User ใดๆ หรือใช้ร่วมกับช่องโหว่อื่นๆ) ช่องโหว่เป็นของ Plugin ที่ชื่อว่า Youtube Embedded Plugin มีผู้ใช้ (Active Installed) อยู่ประมาณ 30,000 กว่าเว็บ
รูปแบบของช่องโหว่คือ ในหน้า Options เนี่ยจะมีให้เลือก Profile Name ได้ ซึ่งช่องที่ว่าเนี่ย ดันไม่ได้ทำการเช็คค่า INPUT (Sanitized Input) ผลก็คือว่าแอดมินสามารถแอบแอดสคริปต์แบบเนียนๆ เข้าไปในช่องนี้ได้ หลังจากนั้น เมื่อแอดมินไม่รู้อิโหน่อิเหน่มาเปิดหน้านี้ปั๊ป โค้ดก็จะถูกรันโดยอัตโนมัติครับ
ปัญหานี้ วิธีแก้นั้นง่ายมากครับ Developer เพียงใส่ใจกับ Input แล้วก็ทำการป้องกันในขั้นตอน Input ตามนี้
พอรับข้อมูลเข้ามา ก็ทำการ Sanitized ข้อมูลหน่อย โดยให้เก็บเป็น HTML Entities ไว้เลย ดังนั้น ถ้ามีข้อมูลอะไรแปลกๆ ดันเข้ามา มันก็แปลงเป็น Text ก่อน ทำให้ตอนแสดงผลไม่เกิดปัญหาขึ้นครับ
Reference
- CVE-2015-6535
- WordPress Youtube-embed Download page