ความปลอดภัยของแอปพลิเคชัน: เว็บไซต์หลายล้านแห่งมีความเสี่ยงต่อการโจมตี XSS ผ่านช่องโหว่ในการใช้งาน OAuth

นักวิจัยได้ค้นพบและเผยแพร่รายละเอียดของการโจมตี XSS ที่อาจส่งผลกระทบต่อเว็บไซต์หลายล้านแห่งทั่วโลก

Salt Labs ซึ่งเป็นหน่วยวิจัยของบริษัทด้านความปลอดภัย API Salt Security ได้ค้นพบและเผยแพร่รายละเอียดของการโจมตีแบบ cross-site scripting (XSS) ที่อาจส่งผลกระทบต่อเว็บไซต์หลายล้านแห่งทั่วโลก

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

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

ปัญหาพื้นฐานไม่ใช่เรื่องใหม่ เทคโนโลยีใหม่ที่มีการแนะนำกระบวนการใหม่เข้าสู่ระบบนิเวศที่มีอยู่สามารถทำให้สมดุลที่มีอยู่ของระบบนิเวศนั้นถูกรบกวน นี่คือสิ่งที่เกิดขึ้นที่นี่ ไม่ใช่ปัญหาของ OAuth แต่มันอยู่ที่การใช้งาน OAuth ภายในเว็บไซต์ Salt Labs พบว่า เว้นแต่ว่ามันจะถูกใช้งานด้วยความระมัดระวังและเข้มงวด – และบ่อยครั้งที่ไม่เป็นเช่นนั้น – การใช้ OAuth สามารถเปิดเส้นทาง XSS ใหม่ที่ข้ามการบรรเทาปัจจุบันและสามารถนำไปสู่การยึดบัญชีเต็มรูปแบบ

Salt Labs ได้เผยแพร่รายละเอียดของการค้นพบและวิธีการของพวกเขา โดยมุ่งเน้นไปที่บริษัทเพียงสองแห่ง: HotJar และ Business Insider ความสำคัญของสองตัวอย่างนี้คือ พวกเขาเป็นบริษัทใหญ่ที่มีทัศนคติด้านความปลอดภัยที่แข็งแกร่ง และที่สองคือ ปริมาณข้อมูลส่วนบุคคลที่อาจถือโดย HotJar นั้นมหาศาล หากสองบริษัทใหญ่เหล่านี้มีการใช้งาน OAuth ผิดพลาด ความน่าจะเป็นที่เว็บไซต์ที่มีทรัพยากรน้อยกว่าจะทำเหมือนกันนั้นมหาศาล

สำหรับบันทึก Yaniv Balmas รองประธานฝ่ายวิจัยของ Salt บอกกับ SecurityWeek ว่าปัญหา OAuth ยังถูกพบในเว็บไซต์รวมถึง Booking.com, Grammarly และ OpenAI แต่ไม่ได้รวมสิ่งเหล่านี้ในรายงานของพวกเขา “นี่เป็นเพียงผู้โชคร้ายที่ตกอยู่ภายใต้กล้องจุลทรรศน์ของเรา หากเรายังคงมองหา เราจะพบมันในที่อื่น ๆ ฉันมั่นใจ 100% ในเรื่องนี้” เขากล่าว

ที่นี่เราจะมุ่งเน้นไปที่ HotJar เนื่องจากการแพร่กระจายตลาด ปริมาณข้อมูลส่วนบุคคลที่รวบรวม และการรับรู้สาธารณะที่ต่ำ “มันคล้ายกับ Google Analytics หรืออาจเป็นส่วนเสริมของ Google Analytics” Balmas อธิบาย “มันบันทึกข้อมูลการเซสชันของผู้ใช้จำนวนมากสำหรับผู้เยี่ยมชมเว็บไซต์ที่ใช้มัน – ซึ่งหมายความว่าแทบทุกคนจะใช้ HotJar บนเว็บไซต์รวมถึง Adobe, Microsoft, Panasonic, Columbia, Ryanair, Decathlon, T-Mobile, Nintendo และชื่อใหญ่อื่น ๆ อีกมากมาย” กล่าวได้ว่าเว็บไซต์หลายล้านแห่งใช้ HotJar

จุดประสงค์ของ HotJar คือการรวบรวมข้อมูลทางสถิติของผู้ใช้สำหรับลูกค้าของมัน “แต่จากสิ่งที่เราเห็นใน HotJar มันบันทึกภาพหน้าจอและเซสชัน และตรวจสอบการคลิกแป้นพิมพ์และการกระทำของเมาส์ อาจมีข้อมูลที่มีความอ่อนไหวมากมายที่ถูกเก็บไว้ เช่น ชื่อ อีเมล ที่อยู่ ข้อความส่วนตัว รายละเอียดธนาคาร และแม้แต่ข้อมูลประจำตัว และคุณและผู้บริโภคหลายล้านคนอื่น ๆ ที่อาจไม่เคยได้ยินชื่อ HotJar ขณะนี้พึ่งพาความปลอดภัยของบริษัทนั้นในการเก็บข้อมูลของคุณเป็นความลับ” และ Salt Labs ได้ค้นพบวิธีการเข้าถึงข้อมูลนั้น

(ในความเป็นธรรมกับ HotJar ควรสังเกตว่าบริษัทใช้เวลาเพียงสามวันในการแก้ไขปัญหาหลังจากที่ Salt Labs เปิดเผยให้พวกเขาทราบ)

HotJar ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดทั้งหมดในปัจจุบันสำหรับการป้องกันการโจมตี XSS ซึ่งควรจะป้องกันการโจมตีทั่วไป แต่ HotJar ยังใช้ OAuth เพื่ออนุญาตการเข้าสู่ระบบด้วยโซเชียล หากผู้ใช้เลือกที่จะ ‘เข้าสู่ระบบด้วย Google’ HotJar จะเปลี่ยนเส้นทางไปยัง Google หาก Google รับรู้ผู้ใช้ที่คาดหมาย มันจะเปลี่ยนเส้นทางกลับไปยัง HotJar พร้อมกับ URL ที่มีรหัสลับที่สามารถอ่านได้ โดยพื้นฐานแล้ว การโจมตีเป็นเพียงวิธีการปลอมแปลงและดักจับกระบวนการนั้นและได้รับความลับในการเข้าสู่ระบบที่ถูกต้อง

“เพื่อรวม XSS กับฟีเจอร์เข้าสู่ระบบด้วยโซเชียลใหม่ (OAuth) นี้และบรรลุการใช้งานการแสวงหาผลประโยชน์ เราใช้โค้ด JavaScript ที่เริ่มกระบวนการเข้าสู่ระบบ OAuth ใหม่ในหน้าต่างใหม่และจากนั้นอ่านโทเค็นจากหน้าต่างนั้น” Salt อธิบาย Google เปลี่ยนเส้นทางผู้ใช้ แต่มีความลับในการเข้าสู่ระบบใน URL “โค้ด JS อ่าน URL จากแท็บใหม่ (นี่เป็นไปได้เพราะหากคุณมี XSS ในโดเมนในหน้าต่างหนึ่ง หน้าต่างนี้สามารถเข้าถึงหน้าต่างอื่น ๆ ของต้นกำเนิดเดียวกัน) และดึงข้อมูลรับรอง OAuth จากมัน”

โดยพื้นฐานแล้ว ‘การโจมตี’ ต้องการเพียงลิงก์ที่สร้างขึ้นไปยัง Google (เลียนแบบความพยายามในการเข้าสู่ระบบโซเชียลของ HotJar แต่ขอ ‘โทเค็นโค้ด’ แทนที่จะตอบกลับ ‘โค้ด’ ธรรมดาเพื่อป้องกันไม่ให้ HotJar ใช้โค้ดแบบครั้งเดียว); และวิธีการทางวิศวกรรมสังคมเพื่อชักชวนให้เหยื่อคลิกลิงก์และเริ่มการโจมตี (ด้วยรหัสที่ถูกส่งมอบให้กับผู้โจมตี) นี่คือพื้นฐานของการโจมตี: ลิงก์ที่เป็นเท็จ (แต่ดูเหมือนถูกต้องตามกฎหมาย) ชักชวนให้เหยื่อคลิกลิงก์ และได้รับรหัสเข้าสู่ระบบที่สามารถใช้งานได้

“เมื่อนักโจมตีได้รับรหัสของเหยื่อแล้ว พวกเขาสามารถเริ่มกระบวนการเข้าสู่ระบบใหม่ใน HotJar แต่แทนที่รหัสของพวกเขาด้วยรหัสของเหยื่อ – นำไปสู่การยึดบัญชีเต็มรูปแบบ” Salt Labs รายงาน

ช่องโหว่อยู่ที่การใช้งาน OAuth โดยเว็บไซต์หลายแห่ง การใช้งานที่ปลอดภัยอย่างสมบูรณ์ต้องใช้ความพยายามเพิ่มเติมที่เว็บไซต์ส่วนใหญ่ไม่ตระหนักและปฏิบัติ หรือเพียงแค่ไม่มีทักษะภายในองค์กรในการทำเช่นนั้น

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

เครื่องสแกนสามารถใช้งานได้ที่นี่

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


การโจมตี XSS (Cross-Site Scripting) คือรูปแบบของการโจมตีบนเว็บไซต์ที่เกิดขึ้นเมื่อผู้โจมตีสามารถใส่หรือฉีดโค้ดที่เป็นอันตราย (ส่วนใหญ่เป็นโค้ด JavaScript) ลงในหน้าเว็บที่แสดงให้กับผู้ใช้งานคนอื่น ๆ เมื่อผู้ใช้เข้าชมหน้าเว็บนั้น โค้ดที่เป็นอันตรายจะถูกเรียกใช้ในเบราว์เซอร์ของผู้ใช้และสามารถทำให้เกิดผลกระทบที่ไม่พึงประสงค์ได้ เช่น การขโมยข้อมูลเซสชัน การเปลี่ยนแปลงเนื้อหาของหน้าเว็บ หรือการเปลี่ยนเส้นทางผู้ใช้ไปยังเว็บไซต์ที่เป็นอันตราย

การโจมตี XSS แบ่งออกเป็น 3 ประเภทหลัก ๆ ได้แก่:

  1. Stored XSS (หรือ Persistent XSS): โค้ดที่เป็นอันตรายถูกเก็บไว้ในเซิร์ฟเวอร์และจะแสดงผลทุกครั้งที่ผู้ใช้เข้าถึงข้อมูลที่ถูกเก็บไว้ ตัวอย่างเช่น โค้ดที่ถูกใส่ในฟิลด์ความคิดเห็นของบล็อก เมื่อมีผู้ใช้งานเข้ามาอ่านความคิดเห็นนั้น โค้ดจะถูกเรียกใช้ในเบราว์เซอร์ของผู้ใช้
  2. Reflected XSS (หรือ Non-Persistent XSS): โค้ดที่เป็นอันตรายถูกส่งไปยังเซิร์ฟเวอร์ผ่านทางการร้องขอ เช่น URL หรือฟอร์ม และจะแสดงผลทันทีในหน้าที่ตอบกลับ ผู้โจมตีมักจะใช้วิธีการหลอกให้ผู้ใช้คลิกลิงก์ที่มีโค้ดแฝงอยู่
  3. DOM-based XSS: การโจมตีแบบนี้เกิดขึ้นเมื่อการเปลี่ยนแปลง Document Object Model (DOM) ในฝั่งไคลเอนต์ทำให้เกิดการเรียกใช้โค้ดที่เป็นอันตราย

วิธีป้องกันการโจมตี XSS:

  1. การตรวจสอบและล้างข้อมูล (Input Validation and Sanitization): ตรวจสอบและล้างข้อมูลที่ได้รับจากผู้ใช้เพื่อให้แน่ใจว่าไม่มีโค้ดที่เป็นอันตราย
  2. การเข้ารหัส (Encoding): ใช้การเข้ารหัสข้อมูลก่อนที่จะแสดงผลในหน้าเว็บ
  3. การใช้ Content Security Policy (CSP): กำหนดนโยบายความปลอดภัยในการโหลดทรัพยากร เช่น สคริปต์หรือสไตล์ชีต
  4. การหลีกเลี่ยงการใช้ข้อมูลผู้ใช้ใน DOM โดยตรง: หลีกเลี่ยงการใช้ข้อมูลที่ไม่ปลอดภัยใน DOM ของหน้าเว็บ

การป้องกันการโจมตี XSS จำเป็นต้องใช้การผสมผสานระหว่างเทคนิคต่าง ๆ และความระมัดระวังในการเขียนโค้ดเพื่อให้เว็บไซต์มีความปลอดภัยมากยิ่งขึ้น

Credit Securityweek.com , chatgpt.com