นักวิจัยแกะพิกเซลโฆษณา ChatGPT พบคุกกี้ __obi ติดตามผู้ใช้ข้ามเว็บ ผูกกับบัญชี ChatGPT ได้ แม้ปฏิเสธ marketing consent — OpenAI ยังไม่ตอบ
หนึ่งสัปดาห์หลัง OpenAI ขยายธุรกิจโฆษณาด้วย Sponsored Agents และการเชื่อม ChatGPT Ads เข้า HubSpot/Shopify นักวิจัยด้านความปลอดภัยที่เขียนบล็อก Buchodi’s Threat Intel เผยแพร่รายงานเมื่อ 20 ก.ย. 2026 ชื่อ “ChatGPT now knows what you do on other websites via ad collector” ซึ่งแกะกลไกพิกเซลวัดผลโฆษณาของ ChatGPT ทีละขั้น รายงานนี้ขึ้นอันดับต้นของ Hacker News ในวันที่ 21 ก.ย.
ข้อสรุปของรายงานคือ คุกกี้ชื่อ __obi ที่ตั้งบนโดเมน .openai.com ทำหน้าที่เป็นตัวระบุตัวตนข้ามเว็บ ตัวคุกกี้ถูกผูกกับบัญชี ChatGPT ตอนผู้ใช้อยู่บน chatgpt.com แล้วถูกส่งกลับไปยัง OpenAI ทุกครั้งที่เบราว์เซอร์โหลดพิกเซลของ OpenAI บนเว็บผู้ลงโฆษณา ผู้วิจัยบอกว่าทำซ้ำกลไกนี้ได้บนโทรศัพท์ของตัวเองด้วยการดักจับสองวิธี และเทียบกับทราฟฟิกที่เก็บมาหลายเดือน ซึ่งครอบคลุม “936 distinct advertiser pixels across 1,029 hostnames”
กลไกทำงานอย่างไร
- ChatGPT สร้างตัวระบุแล้วเซ็นกำกับ: ฝั่ง client สุ่ม 16 ไบต์แล้วเรียก
/backend-api/bazaar/obi/sync-token(หรือ/backend-anon/เมื่อไม่ได้ล็อกอิน) ได้ JWT อายุ 60 วินาทีที่ผูกsub(บัญชี) เข้ากับobi(ตัวระบุ) โดยbzrย่อมาจาก bazaar ซึ่งเป็นชื่อภายในของแพลตฟอร์มโฆษณา - ตัวระบุกลายเป็นคุกกี้: client ส่ง token ไปยัง
bzr.openai.com/v1/obi/syncแล้วได้คุกกี้__obiแบบHttpOnly; SameSite=none; Secureอายุหนึ่งปี ในบรรดาคุกกี้ของ OpenAI มีตัวนี้ตัวเดียวที่ตั้งSameSite=Noneซึ่งเป็นค่าที่จำเป็นต่อการถูกส่งข้ามเว็บ - เว็บผู้ลงโฆษณาส่งกลับ: การโหลดสคริปต์
bzrcdn.openai.com/sdk/oaiq.min.jsก็แนบคุกกี้ไปแล้ว ก่อนที่โค้ดของ OpenAI จะเริ่มทำงานด้วยซ้ำ ดังนั้นเส้นทางของ SDK ที่ตั้งใจไม่ส่ง credential จึงไม่ช่วย
นอกจาก URL (ตัดเหลือ origin + path ไม่มี query string) SDK ยังดึงข้อมูลตัวตนจากหน้าเว็บด้วย ทั้งจากฟอร์ม ข้อความในหน้า และ window.dataLayer ของ Google Tag Manager อีเมล เบอร์โทร และชื่อจะถูก hash ด้วย SHA-256 ก่อนส่ง แต่ประเทศ ภูมิภาค เมือง และรหัสไปรษณีย์ถูกส่งแบบข้อความธรรมดา ในทราฟฟิกที่เก็บได้ ข้อมูลตัวตนที่ SDK ดึงเองมีมากกว่าที่ผู้ลงโฆษณาส่งให้โดยตั้งใจ (685 ต่อ 255 เหตุการณ์) และมี path ที่ไปถึงตัวเก็บข้อมูลซึ่งเป็นหน้าเกี่ยวกับโรค โปรแกรมแก้หนี้ และฟอร์มรับเรื่องคดีความ
ประเด็นเรื่อง consent
ในนโยบายคุกกี้ของ OpenAI __obi อยู่ในหมวด Analytics ไม่ใช่ Marketing ขณะที่ OpenAI แยก consent สองแบบคือ oai_consent_analytics และ oai_consent_marketing และ JWT ทุกตัวที่ผู้วิจัยถอดออกมามีค่า consent_decision: analytics_allowed แปลว่าผู้ใช้ที่ยอมรับ analytics แต่ปฏิเสธ marketing ก็ยังได้คุกกี้นี้อยู่
ผู้วิจัยยังพบว่ากลไกนี้ทำงานแม้ไม่ได้ล็อกอิน จาก sync token 932 ตัว มี 196 ตัวเป็นแบบ anonymous ซึ่งเป็นตัวระบุหนึ่งตัวต่อหนึ่งอุปกรณ์ และคงอยู่อย่างน้อย 27 วัน
ผู้วิจัยส่งคำถามไปที่ press@openai.com และ privacy@openai.com เมื่อ 14 ก.ย. ว่าทำไมจัด __obi เป็นคุกกี้ analytics และผู้ที่ปฏิเสธ marketing consent ยังได้คุกกี้นี้หรือไม่ คำตอบที่ได้มาจาก OpenAI Support ซึ่งรับเรื่องไว้และบอกว่าจะส่งต่อภายใน แต่ไม่ได้ตอบคำถามทั้งสองข้อ จนถึงวันที่เราเขียนข่าวนี้ เรายังไม่พบคำชี้แจงจาก OpenAI
ข้อจำกัดของรายงาน (สำคัญ)
ผู้วิจัยเขียนข้อจำกัดไว้เองอย่างตรงไปตรงมา:
- ทดสอบบน Chrome for Android เท่านั้น Safari ใช้ Intelligent Tracking Prevention บล็อกคุกกี้ third-party ทั้งหมด และเบราว์เซอร์ทุกตัวบน iOS ใช้ WebKit กลไกนี้จึงไม่ทำงานบน iOS ส่วน Chrome บน desktop ยังไม่ได้ทดสอบ
- ไม่ได้เกิดทุก session: ประมาณ 1 ใน 5 session ของ ChatGPT เท่านั้นที่สร้าง sync token
- ไม่เห็นการเชื่อมข้อมูลฝั่งเซิร์ฟเวอร์: รหัส 202 แปลว่าตัวเก็บข้อมูลรับเหตุการณ์พร้อมคุกกี้ แต่การที่ OpenAI นำไปผูกกับบัญชีเป็นข้อสรุปจากการออกแบบ ผู้วิจัยไม่ได้เห็นกับตา
นั่นคือนี่เป็นการวิเคราะห์อิสระที่ละเอียด แต่ยังไม่ใช่การยืนยันพฤติกรรมของระบบทั้งหมด
มุมมอง AI Curator
ในเชิงเทคนิค กลไกนี้ไม่ใช่ของใหม่ Meta ทำแบบเดียวกันมาหลายปี ผู้วิจัยเองก็บอกไว้ สิ่งที่ใหม่คือการนำกลไกนี้มาใช้กับแชตบอต ซึ่งเป็นที่ที่คนเล่าเรื่องสุขภาพ การเงิน และปัญหาส่วนตัว มากกว่าที่จะโพสต์ลงโซเชียล และกำลังจะมี agent ที่ซื้อของแทนผู้ใช้ด้วย เมื่อข้อมูลจากฝั่งแชตกับข้อมูลพฤติกรรมข้ามเว็บมาอยู่ในบัญชีเดียวกัน ความเสี่ยงสูงกว่าโฆษณาบนโซเชียลอย่างเทียบกันไม่ได้ การจัดคุกกี้ตัวเดียวที่ออกแบบมาให้ข้ามเว็บได้ไว้ในหมวด “analytics” จึงเป็นคำถามที่ OpenAI ควรตอบให้ชัด ไม่ใช่ส่งให้ Support ตอบแบบกลาง ๆ
สำหรับนักพัฒนาและเจ้าของเว็บในไทย ประเด็นที่ต้องคิดคือ ใครเป็นผู้รับผิดชอบ รายงานชี้ว่าผู้ลงโฆษณา “cannot see this” เพราะ __obi อยู่บนโดเมนที่สคริปต์ของเว็บอ่านไม่ได้ แต่ภายใต้ PDPA เจ้าของเว็บที่ติดตั้งพิกเซลของบุคคลที่สามยังต้องรับผิดชอบว่าได้ขอความยินยอมที่ถูกต้องหรือไม่ ถ้าจะติดตั้งพิกเซลของ ChatGPT Ads ควรจัดให้อยู่ในหมวด marketing ของ consent banner ของตัวเอง (ไม่ใช่ analytics) ตรวจว่าตั้ง “automatic matching” ที่ดึงข้อมูลจากฟอร์มกับ dataLayer ไว้ใน Ads Manager หรือไม่ และระวัง path ของ URL ที่บอกข้อมูลอ่อนไหว เช่น /loan/... หรือ /clinic/... นอกจากนี้ตลาดไทยใช้ Android มากกว่า iOS ผู้ใช้ส่วนใหญ่จึงอยู่ในกลุ่มที่กลไกนี้ทำงานได้
แหล่งข่าว
อ่านเพิ่มในหมวด นโยบายและกฎหมาย
Anthropic ขยายลายน้ำข้อความไปยัง Claude รุ่นเก่าอีก 4 รุ่น แต่บน Opus 4.6 และ Sonnet 4.6 แค่ปรับ temperature ลายน้ำก็ไม่ทำงาน
อีเมลถึงลูกค้า API ตามรายงานของ The Decoder ระบุว่า Anthropic จะใส่ลายน้ำให้ Mythos 5, Opus 4.7, Opus 4.6 และ Sonnet 4.6 แต่สองรุ่นหลังทำงานเฉพาะเมื่อพารามิเตอร์สุ่มเป็นค่าเริ่มต้น ขณะที่หน้าเอกสารทางการยังไม่แสดงการรองรับและไม่พูดถึงเงื่อนไขนี้
OpenAI จะนำเซสชัน Daybreak Blue ไปเทรนโมเดลตั้งแต่ 29 พ.ย. แม้ปิดการแชร์ข้อมูลไว้ ก่อนส่งอีเมลขอโทษและสัญญาว่าจะมีตัวเลือกแยก
OpenAI แจ้งสมาชิก Trusted Access ว่าจะใช้ข้อมูลเซสชัน Daybreak Blue เทรนโมเดลตั้งแต่ 29 พ.ย. แม้เคยปิดการแชร์ไว้ หลังถูกต้าน อีเมลฉบับที่สองขอโทษและสัญญาว่าจะมีตัวเลือกไม่เข้าร่วมแยกต่างหาก แต่เซสชันที่ถูกตั้งธงยังอาจถูกใช้เพื่อความปลอดภัย
OpenAI รื้อ Model Spec เป็น 5 คุณค่าหลัก — เลิกเรียกว่า the assistant ตัดกฎสไตล์ส่วนใหญ่ และสั่งให้ถือผลข้างเคียงเป็นของจริงแม้อยู่ใน eval
Model Spec ฉบับ 29 ต.ค. จัดโครงใหม่เป็น 5 คุณค่า เพิ่มหมวดการใช้บริบทและความจำ และหลักการรองรับการกำกับโดยมนุษย์ ขณะที่กฎสไตล์ส่วนใหญ่ รวมถึงหัวข้อ Markdown ถูกนำออก OpenAI ยังยอมรับว่าโมเดลที่ใช้งานจริงยังไม่ตรงตามเอกสารทั้งหมด