- ฟาวิคอน (favicon) เป็นเทคนิคติดตามที่ใช้แคชเพื่อกำหนด ตัวระบุเฉพาะ ให้กับผู้เยี่ยมชมเว็บไซต์ ทำให้ข้อมูลระบุตัวตนยังคงอยู่แม้ผู้ใช้จะลบแคชหรือคุกกี้แล้วก็ตาม
- วิธีนี้ยังทำงานได้แม้ใช้ โหมดไม่ระบุตัวตน, VPN, ตัวบล็อกโฆษณา และยังคงอยู่ต่อแม้รีสตาร์ตเบราว์เซอร์หรือบูตระบบใหม่
- เบราว์เซอร์จะสร้าง หมายเลขระบุเฉพาะ จากการผสมรูปแบบการร้องขอฟาวิคอนหรือการโหลดจากแคช
- เบราว์เซอร์หลักอย่าง Chrome, Firefox, Safari, Edge รวมถึงเบราว์เซอร์บนมือถือ ได้รับผลกระทบจากช่องโหว่นี้
- ประเด็นนี้ตอกย้ำ ความสำคัญของการจัดการแคชฟาวิคอน ในด้านความปลอดภัยของเบราว์เซอร์และความเป็นส่วนตัว
ภาพรวมของ Supercookie
- Supercookie คือเทคโนโลยีที่ใช้ แคชฟาวิคอน (F-Cache) เพื่อระบุตัวผู้ใช้
- ฟาวิคอนคือไอคอนขนาดเล็กของเว็บไซต์ที่แสดงในแถบที่อยู่ของเบราว์เซอร์หรือรายการบุ๊กมาร์ก
- เบราว์เซอร์จะเก็บฟาวิคอนไว้ในฐานข้อมูลภายในเครื่องแยกต่างหาก (F-Cache) เพื่อให้แสดงผลได้รวดเร็ว
- F-Cache มีข้อมูล URL ที่เข้าชม, ID ของฟาวิคอน, TTL (ระยะเวลามีผล)
- หากนำโครงสร้างนี้ไปใช้ในทางที่ผิด ก็สามารถผสมการมีหรือไม่มีการร้องขอฟาวิคอนในแต่ละเส้นทาง URL เพื่อสร้าง แพตเทิร์นเฉพาะของเบราว์เซอร์ ได้
โมเดลภัยคุกคาม
- เว็บเซิร์ฟเวอร์สามารถตัดสินได้ว่าผู้ใช้ เคยเข้าชมมาก่อนหรือไม่ จากการตรวจสอบว่าเบราว์เซอร์ร้องขอฟาวิคอนใหม่หรือไม่
- หากไม่มีฟาวิคอนอยู่ในแคช จะเกิดคำขอ GET ไปยังเซิร์ฟเวอร์ แต่ถ้ามีอยู่แล้ว คำขอนั้นจะถูกข้าม
- เมื่อนำสถานะการร้องขอฟาวิคอนของหลายเส้นทางมาผสมกัน จะสามารถสร้าง หมายเลขระบุเฉพาะของแต่ละเบราว์เซอร์ ได้
- ตัวระบุนั้น ไม่ได้รับผลกระทบจากมาตรการป้องกันการติดตามแบบเดิม เช่น การลบคุกกี้, การล้างแคช, การใช้ VPN หรือการดัดแปลงเฮดเดอร์
เปรียบเทียบกับคุกกี้แบบเดิม
- ตามตาราง Supercookie มี ความแม่นยำในการระบุตัวตน 100% และ
- สามารถ ตรวจจับโหมดไม่ระบุตัวตน, คงอยู่แม้ลบแคช·คุกกี้แล้ว, ระบุตัวข้ามหลายหน้าต่าง, หลบเลี่ยงซอฟต์แวร์ป้องกันการติดตาม ได้
- ในทางกลับกัน คุกกี้ทั่วไปไม่รองรับความสามารถเหล่านี้
เบราว์เซอร์ที่ได้รับผลกระทบ
- เบราว์เซอร์หลักอย่าง Chrome, Safari, Edge, Firefox มีความเสี่ยง
- Chrome: ได้รับผลกระทบบน Windows, macOS, Linux, Android
- Safari: ได้รับผลกระทบบน macOS, iOS
- Edge: ได้รับผลกระทบบน Windows, macOS, Android
- Firefox: บางแพลตฟอร์มจะสร้างลายนิ้วมือที่ต่างออกไปเมื่ออยู่ในโหมดไม่ระบุตัวตน
- Brave: ในเวอร์ชันล่าสุดสามารถบล็อกได้เป็นส่วนใหญ่
- Brave เวอร์ชันเก่า (1.14.0) และ Firefox (<84.0) มีความเสี่ยงต่อการโจมตีนี้
ความสามารถในการขยายและประสิทธิภาพ
- สามารถปรับจำนวนเส้นทางรีไดเร็กต์ (N) เพื่อแยกผู้ใช้ที่ไม่ซ้ำกันได้ 2^N คน
- ยิ่งจำนวนผู้ใช้ที่ต้องแยกมีมากขึ้น เวลาอ่าน·เขียน ก็จะเพิ่มขึ้น
- สามารถปรับความยาวของ N แบบไดนามิกเพื่อลดจำนวนรีไดเร็กต์ให้น้อยที่สุดได้
วิธีป้องกัน
- วิธีที่ชัดเจนที่สุดคือ ปิดการทำงานของแคชฟาวิคอนทั้งหมดหรือ ลบด้วยตนเอง
- Chrome(macOS): ลบ
~/Library/Application Support/Google/Chrome/Default/Favicons และ Favicons-journal
- Chrome(Windows): ลบ
C:\Users\username\AppData\Local\Google\Chrome\User Data\Default
- Safari(macOS): ลบเนื้อหาใน
~/Library/Safari/Favicon Cache
- Edge(macOS): ลบ
~/Library/Application Support/Microsoft Edge/Default/Favicon และ Favicons-journal
วัตถุประสงค์และเบื้องหลังของโครงการ
- ที่เก็บโค้ดนี้จัดทำขึ้นเพื่อ การศึกษาและการสาธิต โดยมีเป้าหมายเพื่อ ยกระดับการตระหนักรู้ด้านความปลอดภัย เกี่ยวกับความเป็นไปได้ของการติดตามผ่านฟาวิคอน
- แรงบันดาลใจมาจาก งานวิจัยของ University of Illinois Chicago และ บทความของ heise.de
- โครงการนี้มี เดโมพอร์ทัล ที่สร้างเสร็จภายใน 2 วัน เป็นส่วนหนึ่งของงานวิจัยส่วนบุคคล
อื่น ๆ
- ผู้พัฒนาเป็นนักศึกษาอายุ 20 ปีจากเยอรมนี ที่สนใจด้าน การออกแบบซอฟต์แวร์และความปลอดภัยด้านไอที
- โครงการเผยแพร่บน GitHub และสามารถรันได้ในสภาพแวดล้อม Docker หรือ Node.js
- ประเด็นนี้ได้รับการรายงานโดย สื่อหลักอย่าง Vice, Gizmodo, TechRadar, Schneier.com
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เช่น ใน Reddit กลับขึ้น favicon ของ Ars Technica
แม้อัปเดต iOS แล้วก็ยังเหมือนเดิม และยังคงอยู่ทั้งในโปรไฟล์หรือ โหมดไม่ระบุตัวตน
ถ้าจะบังคับให้รีเฟรช ต้องปรับนาฬิกาของระบบไปข้างหน้าหลายปี
บน MacBook เป็นแบบนี้มาหลายปีแล้วเลยยอมแพ้ไปเอง
บน iOS Safari ตัวนับวิ่งจาก 1 ถึง 18 แล้วก็กลับไปรีไดเร็กต์ใหม่ ติดอยู่ใน ลูปไม่สิ้นสุด
นี่เป็นพฤติกรรมที่ไม่พึงประสงค์ เลยกำลังคิดว่าจะลบรายการโปรดทิ้งหรือบันทึกไว้เป็น HTML ดี
ปกติฉันใช้ หน้าต่างส่วนตัว เป็นหลัก และสังเกตเห็นเรื่องนี้ได้เพราะ Little Snitch
เป็นชุด qemu + cage + firefox โดยอิมเมจจะถูกลบทิ้งเมื่อปิด
มันช้าแต่สบายใจกว่าในแง่ความปลอดภัย จะทำเป็นคอนเทนเนอร์ก็ได้ แต่ฉันกังวลที่เบราว์เซอร์ เข้าถึงเคอร์เนลของโฮสต์ ได้
การจะควบคุมด้วยนโยบาย eBPF ก็ซับซ้อนเกินไป เลยแยกด้วย VM ไปเลย
เช่น มีการตรวจจับลักษณะอย่างตัวเรนเดอร์ SwiftShader หรือการไม่มีฟอนต์
ต่อให้พยายามปลอมสิ่งเหล่านี้ การทำอย่าง ปรับแต่ง canvas noise ก็ถูกจับได้เร็วอยู่ดี ถ้ามีวิธีแก้ก็อยากให้ช่วยแชร์
รู้สึกเหมือนเสียเวลาไปประมาณ 20 วินาที