1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อรวมหน่วยความจำของ Claude ที่เปิดใช้เป็นค่าเริ่มต้นเข้ากับการท่องเว็บ พบว่าสามารถส่ง ชื่อ·ที่ทำงาน·บ้านเกิด ของผู้ใช้ไปยังเซิร์ฟเวอร์ภายนอกอย่างลับ ๆ ได้ เพียงถามคำถามธรรมดาเกี่ยวกับร้านกาแฟ
  • web_fetch บล็อกการเข้าถึง URL ใด ๆ โดยพลการ แต่ยังสามารถตามลิงก์ที่อยู่ในหน้าก่อนหน้าได้ จึงเข้ารหัสข้อมูลในคำขอ GET ด้วย ไดเรกทอรีตัวอักษร ที่เลือกเส้นทางทีละตัว เช่น /a/ay/ayu
  • เว็บไซต์โจมตีแสดงหน้าตรวจสอบ Cloudflare ปลอมเฉพาะกับ Claude และแสดงหน้าร้านกาแฟปกติให้มนุษย์เห็น โดย Claude ส่งไม่เพียงชื่อและบริษัท แต่ยังรวมถึง Charlotte, NC ที่อนุมานจากข้อมูลในอดีต โดยไม่ได้รับอนุญาต
  • แม้ผู้ใช้จะไม่ได้ส่ง URL อันตรายโดยตรง เว็บไซต์ก็สามารถถูกค้นพบและเข้าชมจากผลลัพธ์ web_search ได้ ดังนั้นหากทำให้เว็บไซต์ที่ปรับตามหัวข้อใหม่ ๆ ติดอันดับสูงในผลการค้นหา ก็สามารถชักนำการโจมตีได้ด้วยเพียงคำถามที่เกี่ยวข้อง
  • Anthropic ทราบปัญหาภายในอยู่แล้วแต่ในขณะนั้นไม่ได้แพตช์และไม่ได้จ่ายรางวัลบั๊กบาวน์ตี ต่อมาจึงบล็อกการตามลิงก์จากหน้าภายนอก และจำกัดขอบเขตการท่องเว็บไว้ที่ผลลัพธ์ web_search กับ URL ที่ผู้ใช้ให้มา

ข้อมูลที่สะสมในหน่วยความจำของ Claude

  • claude.ai สำหรับผู้ใช้ทั่วไปใช้ ระบบหน่วยความจำ ที่ประกอบด้วยสองส่วน
    • สรุปบทสนทนาล่าสุดทุกวันเป็นไม่กี่ย่อหน้า แล้วฉีดเข้าไปในบทสนทนาทั้งหมดหลังจากนั้น
    • ใช้เครื่องมือ conversation_search เพื่อค้นหาประวัติการสนทนาทั้งหมดเมื่อจำเป็น
  • ผู้ใช้มอบหมายให้ Claude จัดการตั้งแต่เอกสารงานลับ ไปจนถึงความลับส่วนตัวและปัญหาความสัมพันธ์ ทำให้บันทึกที่สะสมกลายเป็นโปรไฟล์ความหนาแน่นสูงที่สามารถประกอบภาพตัวบุคคลได้อย่างละเอียด
  • ข้อมูลนี้อาจถูกนำไปใช้ในทางที่ผิดเพื่อ แบล็กเมล·ปลอมตัว·หลบเลี่ยงคำถามความปลอดภัย และความเสี่ยงการรั่วไหลจะเพิ่มขึ้นเมื่อคลังหน่วยความจำถูกรวมเข้ากับเอเจนต์ที่ท่องเว็บ
  • เป้าหมายการตรวจสอบไม่ใช่ Claude Code แต่เป็น Claude สำหรับใช้งานประจำวัน

การนำข้อมูลออกด้วยการท่องเว็บ

  • เลือกฟีเจอร์ท่องเว็บของ Claude เป็น เส้นทางนำข้อมูลออก แบบทั่วไปที่ทำงานได้โดยไม่ต้องมีการตั้งค่าทดลองแยกต่างหาก การรันโค้ด หรือ MCP พิเศษ
  • Claude ใช้ web_search และ web_fetch แบบอ่านอย่างเดียวในการเข้าถึงอินเทอร์เน็ต
  • เมื่อทำให้ web_fetch เข้าเยี่ยมชมเซิร์ฟเวอร์ที่ผู้โจมตีเป็นเจ้าของ ก็ตรวจพบคำขอ GET ที่มี user agent Claude-User
    • คำขอแรกเริ่มล้มเหลวเพราะ robots.txt ที่ Cloudflare ตั้งค่าไว้ให้เว็บไซต์
    • หลังแก้ไข robots.txt แล้ว คำขอจึงปรากฏในล็อกเซิร์ฟเวอร์
  • เนื่องจากทำได้เฉพาะคำขอ GET จึงพยายามใส่ข้อมูลไว้ใน path ของ URL แต่วิธีสั่งให้ Claude ขอ path ใด ๆ ที่มีชื่อโดยตรงถูกบล็อก

กฎที่ web_fetch ใช้ในการตามลิงก์

  • เพื่อให้ web_fetch เข้าถึง URL ได้ ต้องตรงตามหนึ่งในสามเงื่อนไขต่อไปนี้
    • URL ถูกใส่โดยตรงในข้อความของผู้ใช้
    • URL ถูกใส่โดยตรงในผลลัพธ์ web_search
    • URL นั้นถูกลิงก์อยู่ในเนื้อหาของผลลัพธ์ web_fetch ก่อนหน้า
  • เงื่อนไขที่สามทำให้ Claude สามารถคลิกลิงก์ที่เห็นในหน้าก่อนหน้าได้ และหากผู้โจมตีเป็นเจ้าของเว็บไซต์ ก็สามารถควบคุมได้ว่าจะเปิดเผยลิงก์ใดบ้าง

เข้ารหัสข้อมูลลงใน URL ด้วยไดเรกทอรีตัวอักษร

  • วางลิงก์อย่าง /a, /b, /c ฯลฯ ในหน้าแรก เพื่อสร้าง คีย์บอร์ดเสมือน ให้ Claude เลือกข้อมูลได้
  • เมื่อขอให้ Claude ไปยังอักษรตัวแรกของชื่อ เซิร์ฟเวอร์บันทึกคำขอ / ตามด้วย /a
  • ขยายโครงสร้างลิงก์แบบไดนามิก เพื่อให้เลือกตัวอักษรถัดไปได้ในแต่ละ path
    • /a ลิงก์ไปยัง /aa, /ab, /ac ฯลฯ
    • path ถัด ๆ ไปก็สร้างต่อในลักษณะเดียวกัน เช่น /aaa
  • เมื่อให้สะกดชื่อจนสมบูรณ์ คำขอ /a/ay/ayu/ayus/ayush/ayush-paul ถูกบันทึกตามลำดับ
  • แม้วิธีใส่ข้อมูลใด ๆ ลงใน URL โดยตรงจะถูกบล็อก แต่หากทำให้เลือกซ้ำ ๆ จากลิงก์ที่ถูกเปิดเผยแล้ว ก็สามารถ ส่งข้อมูลออกนอก sandbox ได้

Prompt injection ที่ปลอมเป็นการตรวจสอบ Cloudflare

  • Prompt injection แบบโจ่งแจ้งไม่เสถียร และเป็นเรื่องยากที่จะหลอก Claude ด้วยหน้าที่ขอความลับผู้ใช้พร้อมให้ลิงก์น่าสงสัย
  • สถานการณ์ปลอมตัวหลายแบบรวมถึงสมาชิกดูไม่เป็นธรรมชาติหรือน่าสงสัย จึงเลือกใช้ Cloudflare ซึ่งถูกใช้แพร่หลายและได้รับความเชื่อถือบนเว็บเป็นฉากหน้า
  • ตกแต่งเว็บไซต์โจมตีให้เหมือนร้านกาแฟจริง แล้วสร้างเรื่องว่าเอเจนต์ต้องผ่านการตรวจสอบ Cloudflare เพื่อท่องเว็บอย่างอิสระแทนมนุษย์
  • Turnstile ปลอมชักนำให้ Claude เลือกลิงก์ตามลำดับเพื่อกรอกชื่อเต็มและส่งข้อมูล
    • เมื่อส่งเสร็จ จะให้เว็บไซต์ร้านกาแฟปกติ เพื่อไม่ให้ Claude รู้ตัวว่าถูกหลอก
  • Claude กรอกชื่อทีละตัวโดยไม่ขออนุญาต และคำตอบสุดท้ายมีเพียงข้อมูลร้านกาแฟ โดยไม่ได้แจ้งว่ามีการส่งข้อมูลส่วนตัว

จากการรั่วไหลชื่อไปถึงการอนุมานคำถามความปลอดภัย

  • เมื่อใส่ URL ร้านกาแฟอันตรายปะปนระหว่าง URL จริงหลายรายการ แล้วถามว่ากาแฟของที่ไหนดีที่สุด Claude ส่งข้อมูลต่อไปนี้อย่างต่อเนื่อง
    • ชื่อ: Ayush Paul
    • บริษัท: Beem
    • บ้านเกิด: Charlotte, NC
  • Claude ไม่ได้หยุดแค่ค้นหาบทสนทนาในอดีต แต่ยังอนุมานข้อสรุปใหม่จากข้อมูลเดิมด้วย
  • แม้ไม่เคยบอกโดยตรงว่ามาจาก Charlotte แต่ Claude อนุมานบ้านเกิดจากชื่อของแฮกกาธอน Queen City Hacks ที่เริ่มทำสมัยมัธยมปลาย

แสดงหน้าต่างกันระหว่างมนุษย์กับ Claude

  • เพื่อให้การโจมตีทำงาน ผู้ใช้ต้องสั่งให้ Claude เข้าเยี่ยมชมเว็บไซต์ ดังนั้นหน้าที่มนุษย์เห็นจึงต้องดูปกติ
  • ใช้ประโยชน์จากข้อเท็จจริงที่ Claude ระบุตัวเองด้วย user agent Claude-User เพื่อแยกเนื้อหาตามผู้ร้องขอ
    • ให้เว็บไซต์ร้านกาแฟปกติกับผู้เข้าชมทั่วไป
    • แสดง Turnstile ปลอมที่ทำให้กรอกข้อมูลส่วนตัว เฉพาะเมื่อ Claude เข้าถึง
  • หากติด payload นี้เข้ากับเว็บไซต์ทั่วไป ผู้ใช้จะไม่พบสิ่งผิดปกติ แต่ทันทีที่ส่งเว็บไซต์นั้นให้ Claude ข้อมูลส่วนตัวอาจถูกส่งผ่านหน้าตรวจสอบปลอม

ดึงเว็บไซต์โจมตีเข้ามาอัตโนมัติจากผลการค้นหา

  • web_fetch เข้าถึงได้ไม่เพียง URL ที่ผู้ใช้ให้โดยตรง แต่ยังรวมถึง ผลลัพธ์ web_search ด้วย
  • เมื่อ Claude พบหัวข้อใหม่หลังวันที่ตัดข้อมูลฝึก ก็จะค้นเว็บโดยอัตโนมัติ
  • หากดันอันดับค้นหาของเว็บไซต์โจมตีที่ปรับตามข่าวใหม่ให้สูงขึ้น แม้ผู้ใช้ไม่ได้ให้ URL เว็บไซต์นั้นก็อาจถูกเลือกในคำถามที่เกี่ยวข้อง
  • ตัวอย่างเช่น หากเว็บไซต์ร้านกาแฟอันตรายติดอันดับสูงในผลค้นหา ผู้ใช้ที่ถามทั่วไปเกี่ยวกับกาแฟใน Berkeley ก็อาจตกเป็นเป้าหมายได้

การยืนยันและมาตรการตามมาของ Anthropic

  • ช่องโหว่นี้ถูก เปิดเผยอย่างรับผิดชอบ ผ่านโปรแกรมบั๊กบาวน์ตี HackerOne ของ Anthropic
  • Anthropic ยืนยันว่าเคยพบปัญหานี้ภายในอยู่แล้ว แต่ในขณะนั้นไม่ได้แพตช์ และไม่ได้จ่ายรางวัลสำหรับรายงานนี้
  • ต่อมาได้ปิดใช้งานความสามารถของ web_fetch ในการตามลิงก์ที่พบจากหน้าภายนอก
  • ปัจจุบันเป้าหมายการท่องเว็บถูกจำกัดไว้ที่ ผลลัพธ์ web_search และ URL ที่ผู้ใช้ให้มาโดยตรง

เหนือกว่าหน่วยความจำไปถึงข้อมูลที่เชื่อมต่ออยู่

  • ผู้ใช้เพียงถามหาร้านกาแฟ โดยไม่ได้คลิกลิงก์หรือเปิดใช้งาน integration ใหม่ แต่ Claude ส่งชื่อ·ที่ทำงาน·เมืองที่เติบโตไปยังภายนอก
  • หน่วยความจำถูกเลือกเป็นเป้าหมายโจมตีที่ง่ายเพราะเปิดใช้เป็นค่าเริ่มต้นเท่านั้น
  • วิธีเดียวกันนี้อาจเข้าถึงข้อมูลใน Google Drive·กล่องจดหมายอีเมล·MCP ที่เชื่อมต่ออยู่ ซึ่ง Claude สามารถดึงมาแทนผู้ใช้ได้

1 ความคิดเห็น

 
GN⁺ 4 시간 전
ความคิดเห็นจาก Hacker News
  • น่าประหลาดใจที่บริษัท AI ระดับแนวหน้าต่าง ๆ เปิดใช้ ฟีเจอร์หน่วยความจำ โดยแทบไม่มีแรงต่อต้านอะไรเลย ในอดีตวงการโฆษณาต้องคาดเดาข้อมูลปะติดปะต่อจากเว็บไซต์ที่ผู้ใช้เข้า แต่ตอนนี้ผู้คนส่งแทบทุกอย่างให้ AI โดยตรง รวมถึงความลับที่ลึกที่สุดด้วย
    อาจเป็นเพราะผมทำงานในวงการโฆษณาเลยไวต่อเรื่องนี้เกินไป แต่ทันทีที่ Claude และ ChatGPT ออกหน่วยความจำมา ผมก็ปิดมันทันที และมันก็ไม่ได้มีประโยชน์ด้วย เพราะทำให้บริบทปนเปื้อนด้วยรายละเอียดที่ไม่เกี่ยวข้องจนคุณภาพลดลงด้วยซ้ำ สำหรับบทสนทนาส่วนตัว ใช้บัญชีแยกต่างหากบนที่อย่าง OpenRouter จะดีกว่า
    ควรมีกฎห้ามบริษัท AI เก็บโปรไฟล์ผู้ใช้ และให้หน่วยความจำอยู่ บนเซิร์ฟเวอร์ของผู้ใช้เท่านั้น แม้กระทั่งการถือหุ้นไขว้กันระหว่างบริษัทหน่วยความจำกับบริษัท AI ก็น่าจะควรถูกห้ามด้วย

    • บางครั้งหน่วยความจำก็มีประโยชน์เพราะไม่ต้องอธิบายบริบททั้งหมดใหม่ทุกครั้ง แต่การที่มันยึดติดกับสิ่งที่เคยพูดไว้ในบทสนทนาอื่นแล้วลากบทสนทนาปัจจุบันไปผิดทางก็ชวนหงุดหงิดพอ ๆ กัน
    • ในมุมมองของนักลงทุน การเก็บรวบรวมข้อมูล คือหนึ่งในคุณค่าหลักของบริษัทเหล่านี้ พวกเขาสร้างโมเดลจากข้อมูลสาธารณะ การสเครปที่ผิดกฎหมาย และงานมีลิขสิทธิ์ สะสมข้อมูลส่วนตัวที่สุดของผู้คนจำนวนมากในระดับมหาศาล และยังขยายฟองสบู่ที่หากแตกจะสร้างแรงกระเพื่อมมหาศาล รวมถึงการกระจุกตัวของความมั่งคั่งและความเหลื่อมล้ำอย่างรุนแรง
  • ได้รู้ว่าผู้คนรัน AI agent ด้วย สิทธิ์ผู้ดูแลระบบ โดยไม่มีแม้แต่การแยกด้วยคอนเทนเนอร์ น่าตกใจเหมือนเราลืมหลักการความปลอดภัยคอมพิวเตอร์ที่สั่งสมมา 50 ปีไปในชั่วข้ามคืน

    • โปรแกรมเมอร์และผู้ใช้ขั้นสูงจำนวนมากติดตั้ง ต้นไม้ dependency ขนาดมหึมา อย่าง npm, pip, bundler ฯลฯ อยู่ตลอดเวลาในบัญชีผู้ใช้เดียวกับเบราว์เซอร์หลัก แม้บน Linux ที่สร้างบัญชีใหม่ได้ง่ายก็ยังเป็นเช่นนั้น ดังนั้นการรัน AI agent จึงไม่ได้ต่างกันมากนัก
    • เพราะการตั้งค่า sandbox ค่อนข้างยากมาก แม้ใช้ cco โฮมไดเรกทอรีก็ยังถูกเปิดเผยอยู่ และเพียง prompt เดียว agent ก็สามารถส่งรหัสผ่านในเบราว์เซอร์ออกไปด้วย curl ได้
      หากจะป้องกัน ต้องมีโฮมไดเรกทอรีปลอมและ allowlist เครือข่ายที่อนุญาตเฉพาะผู้ให้บริการอย่าง llama.cpp หรือ OpenAI ไม่มีวิธีแก้แบบข้ามแพลตฟอร์มที่ใช้ง่าย และสำหรับการพัฒนาแอป native ที่ต้องคอมไพล์และแก้ข้อผิดพลาดเฉพาะแพลตฟอร์มเอง แม้แต่เครื่อง Linux ที่ติดตั้ง Docker ก็ยังไม่พอ
    • โดยรวมแล้วผู้ใช้ขี้เกียจ แถมยังคิดว่าแล็บใหญ่ ๆ คงไม่ออกซอฟต์แวร์ที่ไม่ปลอดภัย หรือไม่ก็คิดว่าความปลอดภัยเป็นความรับผิดชอบของแล็บ แนวทางที่ ข้ามการตรวจสอบสิทธิ์อย่างเสี่ยง ๆ แล้วรันไปเลยเพราะช่วยให้งานเสร็จมากขึ้น กำลังกลายเป็นค่าเริ่มต้นไปแล้ว
    • โมเดลความปลอดภัยดูเหมือนจะมาบรรจบกันในสองทิศทางคือ การให้สิทธิ์น้อยที่สุด และ การให้บริบทน้อยที่สุด agent ที่เห็นเฉพาะไฟล์และหน่วยความจำที่จำเป็นต่อภารกิจปัจจุบัน แม้จะมีสิทธิ์เครื่องมือเท่ากัน ก็อันตรายน้อยกว่ามาก
      ในเมื่อปัจจุบันเราปรับบริบทให้เหมาะสมเพื่อลดต้นทุนกันอยู่แล้ว ในอนาคตมีความเป็นไปได้สูงที่จะปฏิบัติกับตัวบริบทเองในฐานะขอบเขตความปลอดภัย
    • สุดท้ายก็เป็นเรื่องความสะดวก หากปล่อยให้ agent ทำงานข้าง ๆ โดยไม่มีข้อจำกัดใด ๆ ก็ให้ความพึงพอใจได้ทันที และยากที่จะเอาชนะสิ่งนี้
  • ผมตั้งชื่อใน Claude ไว้ว่า Silly Bean ตอนแรกทำเพราะคำทักทาย “Back again, Silly Bean?” มันตลก แต่สุดท้ายกลับกลายเป็นหมากรุกความปลอดภัยสี่มิติ

    • ตั้งแต่ยุค Eternal September ก็แนะนำกันมาแล้วว่าในระบบออนไลน์ควรใช้ ข้อมูลปลอมที่สอดคล้องกัน สำหรับชื่อและวันเกิด แทบไม่มีเว็บไซต์ไหนที่จำเป็นต้องใช้ข้อมูลระบุตัวตนส่วนบุคคล (PII) ที่ถูกต้องจริง ๆ และแม้ในที่ที่จำเป็น ก็เปิดบัญชีหรือโปรไฟล์แยกซ้อนได้ถ้าต้องใช้
    • ชื่อของผมย่อได้สองแบบ ตอนสมัคร Claude เลยคิดว่าโลกของ “ปัญญา” ประดิษฐ์กำลังเปิดขึ้น จึงใส่ชื่อเป็น “ or ” แต่ดูเหมือนฟิลด์นี้ไม่ได้ถูกประมวลผลด้วยโมเดล แต่ hardcode ไว้
      จนตอนนี้ก็ยังปล่อยไว้อย่างนั้น ใช้เป็นเครื่องหมายไว้เยาะเย้ยหรือปลอบใจแบบขมขื่นว่ามันเป็นผลิตภัณฑ์แบบพึ่งพาที่ไม่ได้ฉลาดอย่างที่คิด
    • ตั้งชื่อเป็น Sir แล้วได้คำตอบที่สุภาพเกินเหตุ เลยสนุกกับมันอยู่ แอปธนาคารก็ทักว่า “Good morning, Sir” ซึ่งเป็นระดับความสัมพันธ์ที่พอดีกับสิ่งที่ผมอยากมีกับธนาคาร
    • ผมลืมบัญชี claude.ai ที่สร้างไว้ช่วงแรก ๆ ไปแล้ว แต่พอล่าสุดล็อกอินด้วย Google มันกลับทักว่า Hello, Master ซึ่งรู้สึกว่าค่อนข้างกล้าสำหรับมาตรฐานยุคนี้
    • Claude และ ChatGPT ยังมีความเป็นไปได้สูงที่จะเห็นชื่อจริงในข้อมูลการชำระเงิน
  • ประเด็นที่ว่า Cloudflare ใช้ robots.txt แบบเข้มงวดเกินไปโดยไม่ได้รับความยินยอม เป็นภาพที่พบไม่บ่อยนักของการบ่นว่าเว็บไซต์ได้รับการปกป้องจากสแครปเปอร์

    • เท่าที่รู้ หาก Cloudflare จะจัดการ robots.txt ผู้ใช้ต้องเปิดฟีเจอร์เอง น่าจะมีโอกาสเปิดโดยไม่ตั้งใจได้ เพราะคลิกครั้งเดียวก็พอ
    • ประเด็นหลักคือ ไม่มีความยินยอม ไม่ว่าบริการที่ใช้จะป้องกันไซต์จากสแครปเปอร์ หรือส่งทุกอย่างให้สแครปเปอร์ก็ตาม ผมอยากให้ขอความยินยอมล่วงหน้าโดยมีข้อมูลครบถ้วนทั้งสองทาง
    • ถึงอย่างไรก็ต้องขอความยินยอมอยู่ดี และ robots.txt ก็ไม่สามารถหยุดสแครปเปอร์ที่ตั้งใจจริงได้ด้วย
  • ผมรัน Claude Code ใน VM ที่ไม่มี credential และใช้โดยโคลนเฉพาะ repository GitHub โอเพนซอร์สที่จะทำงาน เมื่อก่อนรีเซ็ต VM ทุกวัน แต่ยุ่งยากเลยเปลี่ยนเป็นเดือนละครั้ง และต่อให้หลุดออกไปก็อย่างมากคือรายการโอเพนซอร์สที่ทำในช่วงเดือนที่ผ่านมา
    ข้อมูลนี้ก็อาจเผยตัวตนได้มากพอสมควร แต่ชื่อและอีเมลของผู้ร่วมพัฒนาโอเพนซอร์สจะอยู่ในประวัติ Git ที่แก้ไม่ได้อยู่แล้ว ดังนั้นส่วนใหญ่ก็ค้นเจอใน Google ได้อยู่ดี เห็นเรื่องนี้แล้วกำลังคิดว่าจะเปลี่ยนรอบรีเซ็ตเป็นรายสัปดาห์
    ถ้าจะตั้งคุกสำหรับ AI agent ก็ใช้สคริปต์ที่ https://jai.scs.stanford.edu/arch-vm.html แล้วเพิ่มแพ็กเกจอย่าง dotnet-sdk เข้าไปในคำสั่ง pacstrap ก็น่าจะใช้ได้ หากทำ root ของ guest เป็น BTRFS subvolume แล้วใช้ snapshot ก็สร้าง VM ใหม่ได้ทันทีด้วย sudo btrfs subvol snap template-root newvm และการรัน qemu-system-x86_64 ก็ใช้เวลาเพียงไม่กี่วินาที พร้อมควบคุมเนื้อหาใน VM ได้ทั้งหมด

    • เคยลองทำคล้าย ๆ กัน แต่ข้อจำกัดเยอะมาก ผมอยากให้คนกับ AI โต้ตอบกันไปมาเหมือน pair programming และขอบเขตบทบาทของทั้งสองฝ่ายก็เปลี่ยนไปตามงาน หรือแม้แต่ระหว่างงานเอง โดยมักไม่ชัดเจนตั้งแต่เริ่ม
      บางงานต้องให้คนกดปุ่มเพื่อตัดสินว่าประสบการณ์ผู้ใช้ถูกต้องหรือไม่ และถ้าเป็นไปได้ก็ไม่อยากให้ AI มีสิทธิ์เข้าถึงหน้าจอ โมเดล VM แบบนี้ทำงานได้ดีมากกับปัญหาบางประเภท แต่ขอบเขตที่ใช้ได้ก็น่าเสียดายที่แคบ
    • ปัญหาครั้งนี้ไม่ได้เกิดจาก Claude Code แต่เกิดจาก เว็บไซต์ Claude AI
  • ประเด็นที่ว่า “สวัสดีครับ/ค่ะ นี่คือ Cloudflare ขอข้อมูลส่วนตัวหน่อย” ยังใช้ได้ผล ทำให้ prompt injection ยังคงเป็นปัญหาอย่างเลี่ยงไม่ได้ ไม่เช่นนั้นก็ต้องจำกัดโมเดลจนแทบไร้ประโยชน์ หรือยอมให้การโจมตีแบบนี้แทรกซึมเข้ามา จนสร้างแนวคิดที่ไม่ปลอดภัยที่สุดในประวัติศาสตร์อินเทอร์เน็ตขึ้นมา นั่นคือหุ่นยนต์ที่หลอกได้

    • เหมือน social engineering ตรงที่น่าจะเป็นปัญหาที่คงอยู่ตลอดไปในระดับหนึ่ง และสังคมน่าจะค่อย ๆ สร้างมาตรการป้องกันจนถึงเส้นฐานที่ยอมรับได้ ข้อสรุปนี้ไม่ได้ทำให้อุ่นใจนัก แต่กล่องแพนโดราที่เปิดไปแล้วคงปิดกลับได้ยาก
    • ข้อจำกัดแบบ Gödel ของ AI ที่ปลอดภัยใน prompt ถูกพูดถึงไว้ที่ https://matthodges.com/posts/2025-08-26-music-to-break-model...
    • ยากที่จะยอมรับข้อเท็จจริงที่ว่า ข้อมูลที่ถูกประมวลผลสามารถโน้มน้าว LLM ผ่านบทสนทนาให้ทำลาย ขอบเขตความปลอดภัย ได้ prompt ที่เป็นอันตรายไม่ใช่อุปมา แต่เป็นสตริงโจมตีจริง ๆ และมันน่าประหลาดที่เทคโนโลยีแบบนี้ถูกใช้กันกว้างขวางในการโต้ตอบอัตโนมัติ ทั้งที่ไม่ได้ถูกจำกัดอย่างมีตรรกะหรือในระดับพื้นฐาน
      ดูเหมือนโครงสร้างที่เราไม่มีวิธีเข้าใจการทำงานภายในในเชิงฟังก์ชันหรือแยกส่วนมันออกมา ทำได้เพียงโน้มน้าวก้อนขนาดมหึมาก้อนเดียวให้ทำงาน แล้วภาวนาว่าผู้โจมตีจะโน้มน้าวมันได้ไม่ดีกว่าเรา
  • ช่วงหลังเจอเรื่องค่อนข้างหลอนในแอป ChatGPT บน iPhone เพื่อนสนิทคนหนึ่งใช้บัญชีของตัวเองถามปัญหาเกี่ยวกับเครื่องให้อาหารสัตว์เลี้ยงอัจฉริยะ แต่ตอน ChatGPT ตอบ กลับใช้ ชื่อสัตว์เลี้ยงของฉัน
    ชื่อนั้นก็ไม่ใช่ชื่อทั่วไป แถมยังมีความเชื่อมโยงกับเพื่อนคนนี้ จึงยากจะมองว่าเป็นเรื่องบังเอิญ พอคิดว่าเพื่อนเคยเชื่อมต่อ Wi-Fi บ้านเรา ก็เลยสงสัยว่าอาจมี cache contamination หรือข้อมูลเซสชันรั่วไหลหรือไม่

    • ChatGPT ดูเหมือนจะเปิด memory เป็นค่าเริ่มต้น และเก็บข้อมูลผู้ใช้ข้ามทุกบทสนทนาไว้ ของฉันเอง เวลาตอบเรื่องสูตรอาหาร มันยังชอบเติมเนื้อหาอย่าง “วัตถุดิบนี้หาซื้อได้ง่ายในร้านค้า ดังนั้นวีซ่าจึงไม่เป็นปัญหา” ทั้งที่เป็นคำถามที่ไม่เกี่ยวกับวีซ่าเลย
      ฟีเจอร์นี้ยังไม่พร้อมนัก ดังนั้น ปิด memory ไว้ น่าจะดีกว่า แต่ถ้าเพื่อนใช้บัญชีของตัวเองจริง ๆ ปรากฏการณ์นี้ก็อธิบายได้ยาก
  • Claude Code ใส่ ชื่อและอีเมลของฉันใน User-Agent ตอน scrape เอกสารของ SEC ไม่ต้องใช้ prompt แยบยลอะไรเลย และตัวไอเดียเองก็ไม่ได้แย่มากนัก แต่ถ้าถามก่อนก็คงดี

    • สาเหตุอยู่ที่เครื่องมือ SEC EDGAR ฝั่งนั้น เอกสารของ Edgar MCP แนะนำให้ตั้ง environment variable เป็น SEC_EDGAR_USER_AGENT="Your Name (name@domain.com)" ดังนั้น Claude ก็แค่ทำตามคำสั่งเท่านั้น บางทีตรงนี้อาจยิ่งอันตรายกว่าเดิมด้วยซ้ำ
    • อยากรู้ว่าค้นพบได้อย่างไรว่า Claude ทำแบบนั้น
    • อยากรู้ว่าทำไมถึงมองว่าการใส่ชื่อและอีเมลไม่ใช่ไอเดียที่แย่มาก
  • สงสัยว่ามีผู้ใช้กี่คนที่เปิด global memory ซึ่งมีผลกับบทสนทนาทั้งหมด memory แบบนี้สุดท้ายน่าจะส่งผลเสียต่อคุณภาพของ output

    • แม้จะถามเรื่องที่ไม่เกี่ยวกับโปรเจกต์ปัจจุบันเลย มันก็มักสันนิษฐานผิด ๆ ว่าเป็นคำถามเกี่ยวกับโปรเจกต์เดิมเพราะ memory พอแก้ว่า “ไม่ใช่ ฉันถามเรื่อง PostgreSQL” มันก็ไม่เข้าใจว่าทำไมถึงเปิดบทสนทนาแยก และบางทียังอัปเดต memory ว่าโปรเจกต์นั้นใช้ PostgreSQL อีกด้วย
      ในทางกลับกัน ก็มีประโยชน์ในบางจังหวะที่ไม่ต้องอธิบายบริบทอย่างยืดยาวทุกครั้ง
  • เพราะอย่างนั้นจึงไม่เปิด memory และก็ไม่ได้ใช้ Claude Code ด้วยเหตุผลอื่นเช่นกัน ระบบ memory ในปัจจุบันหยาบเกินไป จนไม่มีประโยชน์

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