เมื่อเร็ว ๆ นี้ มีการค้นพบว่า ตัวบล็อกโฆษณายอดนิยม«Adblock Plus »มีช่องโหว่ที่อนุญาตให้จัดระเบียบการเรียกใช้โค้ด JavaScript บนไซต์ในกรณีที่ใช้ตัวกรองที่ยังไม่ผ่านการทดสอบซึ่งจัดทำโดยบุคคลที่สาม ด้วยเจตนาร้าย (ตัวอย่างเช่นโดยการเชื่อมต่อชุดกฎของบุคคลที่สามหรือโดยการแทนที่กฎระหว่างการโจมตี MITM)
แสดงรายชื่อผู้เขียนด้วยชุดตัวกรอง สามารถจัดระเบียบการดำเนินการของโค้ดในบริบทของไซต์ที่เข้าถึงไฟล์ ผู้ใช้เพิ่มกฎด้วยโอเปอเรเตอร์» $ เขียนใหม่«ซึ่งอนุญาตให้แทนที่บางส่วนของ URL
การเรียกใช้โค้ดนี้เป็นไปได้อย่างไร?
คำประกาศของ $ rewrite ไม่อนุญาตให้แทนที่โฮสต์ ใน url แต่เปิดโอกาสให้จัดการกับข้อโต้แย้งได้อย่างอิสระ ของคำขอ
อย่างไรก็ตาม การเรียกใช้โค้ดสามารถทำได้ บางไซต์เช่น Google Maps, Gmail และ Google Images, พวกเขาใช้เทคนิคการโหลดบล็อก JavaScript แบบไดนามิกที่ส่งในรูปแบบของข้อความธรรมดา
หากเซิร์ฟเวอร์อนุญาตให้เปลี่ยนเส้นทางคำขอก็สามารถส่งต่อไปยังโฮสต์อื่นได้โดยการเปลี่ยนพารามิเตอร์ของ URL (ตัวอย่างเช่นในบริบทของ Google การเปลี่ยนเส้นทางสามารถทำได้ผ่าน API » google.com/search «) .
นอกจากนี้แล้ว โฮสต์ที่อนุญาตให้เปลี่ยนเส้นทางคุณยังสามารถโจมตีได้ กับบริการที่อนุญาตให้ระบุตำแหน่งของเนื้อหาผู้ใช้ (การโฮสต์โค้ดแพลตฟอร์มการจัดวางบทความ ฯลฯ )
วิธีการของ การโจมตีที่เสนอจะส่งผลเฉพาะเพจที่โหลดสตริงด้วยโค้ด JavaScript แบบไดนามิก (ตัวอย่างเช่นผ่าน XMLHttpRequest หรือ Fetch) แล้วเรียกใช้
ข้อ จำกัด ที่สำคัญอีกประการหนึ่งคือความจำเป็นในการใช้การเปลี่ยนเส้นทางหรือใส่ข้อมูลตามอำเภอใจที่ด้านข้างของเซิร์ฟเวอร์ต้นทางที่ให้ทรัพยากร
อย่างไรก็ตาม เป็นการแสดงให้เห็นถึงความเกี่ยวข้องของการโจมตีจะแสดงวิธีจัดระเบียบการเรียกใช้โค้ดของคุณโดยเปิด maps.google.com โดยใช้การเปลี่ยนเส้นทางผ่าน "google.com/search"
ในความเป็นจริงการร้องขอเพื่อใช้ XMLHttpRequest หรือ Fetch เพื่อดาวน์โหลดสคริปต์ระยะไกลเพื่อเรียกใช้จะไม่ล้มเหลวเมื่อใช้ตัวเลือก $ เขียนซ้ำ
นอกจากนี้การเปลี่ยนเส้นทางแบบเปิดมีความสำคัญพอ ๆ กันเนื่องจากอนุญาตให้ XMLHttpRequest อ่านสคริปต์จากไซต์ระยะไกลแม้ว่าดูเหมือนว่าจะมาจากแหล่งเดียวกันก็ตาม
พวกเขากำลังดำเนินการแก้ไขปัญหาอยู่แล้ว
การแก้ปัญหายังอยู่ในการเตรียมการ ปัญหานี้ยังส่งผลกระทบต่อตัวบล็อก AdBlock และ uBlock uBlock Origin Blocker ไม่หวั่นไหวต่อปัญหาเนื่องจากไม่รองรับตัวดำเนินการ» $ rewrite »
มีอยู่ช่วงหนึ่งผู้เขียน uBlock Origin ปฏิเสธที่จะเพิ่มการสนับสนุน $ rewrite โดยอ้างถึงปัญหาด้านความปลอดภัยที่เป็นไปได้และข้อ จำกัด ระดับโฮสต์ที่ไม่เพียงพอ (แทนที่จะเขียนใหม่ตัวเลือก querystrip ถูกเสนอให้ล้างพารามิเตอร์การค้นหาแทนการแทนที่)
เป็นความรับผิดชอบของเราในการปกป้องผู้ใช้ของเรา
แม้จะมีความเสี่ยงต่ำมาก แต่เราก็ตัดสินใจที่จะลบตัวเลือก $ rewrite ออก ดังนั้นเราจะเผยแพร่ Adblock Plus เวอร์ชันอัปเดตโดยเร็วที่สุดในทางเทคนิค
เราทำสิ่งนี้เพื่อความไม่ประมาท ไม่มีความพยายามที่จะใช้ตัวเลือกการเขียนซ้ำในทางที่ผิดและเราจะพยายามอย่างเต็มที่เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น
ซึ่งหมายความว่าไม่มีภัยคุกคามต่อผู้ใช้ Adblock Plus ใด ๆ
Dนักพัฒนา Adblock Plus มองว่าการโจมตีจริงไม่น่าจะเกิดขึ้นได้เนื่องจากการเปลี่ยนแปลงทั้งหมดในรายการกฎทั่วไปจะได้รับการตรวจสอบและการเชื่อมต่อกับรายการของบุคคลที่สามนั้นได้รับการฝึกฝนโดยผู้ใช้น้อยมาก
การแทนที่กฎผ่าน MITM จะลบการใช้ HTTPS ตามค่าเริ่มต้น เพื่อโหลดรายการบล็อกปกติ (สำหรับรายการที่เหลือมีการวางแผนที่จะห้ามการดาวน์โหลด HTTP ในรุ่นอนาคต)
เพื่อป้องกันการโจมตีทางฝั่งไซต์ สามารถใช้คำสั่ง CSP ได้ (นโยบายความปลอดภัยของเนื้อหา) ซึ่งคุณสามารถระบุโฮสต์ที่จะโหลดทรัพยากรภายนอกได้อย่างชัดเจน
Fuente: https://adblockplus.org, https://armin.dev