Check Point ได้ออกมาเปิดเผยถึงการค้นพบช่องโหว่ที่จะช่วยให้สามารถส่ง JavaScript ไปบน eBay และสั่งให้ทำงานบนเครื่องของผู้ใช้งาน eBay รายอื่นๆ ได้ ปัญหานี้อาจนำไปสู่การทำ Phishing และ Data Theft ได้ในอนาคต โดยหลังจากที่ Check Point แจ้งทาง eBay ไปแล้ว eBay ก็ได้ตอบกลับมาว่าจะไม่แก้ไขช่องโหว่นี้ และช่องโหว่นี้ก็ยังคงเปิดให้โจมตีได้จนถึงทุกวันนี้
Roman Zaikin นักวิจัยทางด้านความปลอดภัยจาก Check Point เป็นผู้ค้นพบช่องโหว่นี้ โดยการโจมตีช่องโหว่นี้จะใช้เทคนิคที่ไม่เป็นมาตรฐานนักที่มีชื่อว่า “JSF**K” โดยวิธีการโจมตีก็คือต้องเริ่มต้นจากการสร้างร้านค้าบน eBay เสียก่อน จากนั้นก็แทรกโค้ดโจมตีเข้าไปในช่อง Item Description
โดยทั่วไปแล้ว eBay จะทำการห้ามผู้ใช้งานจากการใส่ Script หรือ iFrame ลงไปยังช่อง Item Description ด้วยการกรอง HTML Tags เหล่านี้ออก แต่ถ้าหากใช้วิธีการ JSF**K ผู้โจมตีจะสามารถแทรกโค้ด Javascript ได้ตามต้องการในช่อง Item Description ได้ และอาศัยช่องทางนี้ในการโจมตีนั่นเอง
การกรองช่อง Item Description ของ eBay นั้นใช้วิธีการง่ายๆ ด้วยการดึงข้อมูลที่เป็น Alpha-Numeric ออกจาก Script Tag เท่านั้น ซึ่งวิธีการนี้ไม่ครอบคลุมถึงการตรวจสอบการโจมตีด้วย JSF**K
โค้ดทั่วๆ ไปจะมีหน้าตาแบบนี้ (ภาพประกอบทั้งหมดถัดจากนี้มากจากบล็อกของ Check Point นะครับ)
แต่โค้ดที่เป็นแบบ JSF**K จะมีหน้าตาแบบนี้
และด้วยการแทรก Script แบบนี้เข้าไปก็ทำให้ผู้โจมตีสามารถสร้างหน้า Popup บน eBay ได้อย่างอิสระ และเหยื่อที่เข้ามาในหน้าสินค้าที่วางโค้ดเหล่านี้เอาไว้ก็จะสังเกตได้ยากมากว่านี่คือการโจมตี ทำให้อาจถูก Phishing หรือหลอกดักรหัสผ่านไปได้ง่ายๆ หรือส่ง Malware/Ransomware ไปให้โหลดก็ได้เช่นกัน
ที่น่ากลัวก็คือ eBay บอกว่าจะไม่แก้ไขปัญหานี้เพราะไม่ถือว่าเป็นช่องโหว่ครับ ทั้งๆ ที่ทีมงาน Check Point ได้ Proof of Concept ให้ทางทีม Security ของ eBay ดูและ Bypass ระบบรักษาความปลอดภัยกันตรงๆ จนสำเร็จต่อหน้าต่อตา ทาง Check Point ก็ได้แต่ออกมาบอกว่าหวังว่า eBay จะทำอะไรซักอย่างกับปัญหานี้
JSF**K ทำงานอย่างไร
แนวคิดอง JSF**K คือการใช้สัญญลักษณ์ 6 ตัวได้แก่ []()!+ ในการสร้างโค้ดที่ต้องการขึ้นมาจากความยืดหยุ่นของ JavaScript ที่สามารถแปลง Type ของตัวแปรต่างๆ ได้ง่ายๆ และด้วยการอาศัยแนวคิดนี้ก็ทำให้เราสามารถสร้างค่าตัวเลขขึ้นมาจากสัญลักษณ์ 6 ตัวนั้นได้ และนำตัวเลขเหล่านั้นไปประกาศเป็น Array เราก็จะสามารถสร้างตัวอักษรและสัญลักษณ์ต่างๆ ขึ้นมาได้ ถึงแม้จะไม่ครบ 26 ตัว แต่เมื่อนำมาต่อกันก็สามารถนำไปสร้างเป็น Function ต่างๆ เพื่อมาใช้สร้างตัวอักษรและสัญลักษณ์เพิ่ม เพื่อนำมาใช้ในการโจมตีได้
ด้านล่างนี้คือตัวอย่างโค้ด alert(1) นะครับ
ใครสนใจลองอ่านรายละเอียดเต็มๆ ได้จากที่ http://blog.checkpoint.com/2016/02/02/ebay-platform-exposed-to-severe-vulnerability/ เลยนะครับ มีสอนวิธีสร้างตัวอักษรและสัญลักษณ์รวมถึงฟังก์ชั่นต่างๆ ที่ใช้ได้อยู่ค่อนข้างครบ อ่านสนุกดีเหมือนกันครับ และช่วงนี้ใครเข้า eBay ก็ระวังกันหน่อยนะครับ
ด้านล่างนี้เป็นตัวอย่างการโจมตีครับผม
ที่มา: http://blog.checkpoint.com/2016/02/02/ebay-platform-exposed-to-severe-vulnerability/