- ใช้ประโยชน์จากช่องโหว่ในสภาพแวดล้อมรันโค้ดของ Claude Cowork ทำให้ผู้โจมตีสามารถ อัปโหลดไฟล์ของผู้ใช้ไปยังบัญชี Anthropic ของตนเอง ได้
- ช่องโหว่นี้ เคยถูกรายงานแล้วในสภาพแวดล้อมแชตของ Claude.ai แต่ยังไม่ได้รับการแก้ไข และยังคงมีอยู่ใน Cowork เช่นเดิม
- การโจมตีเกิดขึ้นผ่าน ไฟล์เอกสารที่มี prompt injection แบบซ่อนอยู่ และระหว่างที่ Cowork วิเคราะห์ไฟล์นั้น ก็จะส่งไฟล์ออกไปภายนอกโดยอัตโนมัติ
- โดย ไม่มีการอนุมัติจากมนุษย์ Cowork ใช้ API key ของผู้โจมตีเพื่อ ทำข้อมูลรั่วไหลผ่าน Anthropic API
- โครงสร้างนี้ทำให้ผู้ใช้ทั่วไปตกเป็นเป้าได้ง่าย และชี้ให้เห็นถึง ความเสี่ยงด้านความปลอดภัยของ AI agent และความสำคัญของการป้องกัน prompt injection
ภาพรวมของช่องโหว่
- Claude Cowork คือ research preview ของ AI agent สำหรับงานทั่วไป ที่ Anthropic เปิดตัว และมีความสามารถในการเข้าถึงอินเทอร์เน็ต
- PromptArmor สาธิตให้เห็นว่าสามารถทำให้ไฟล์ของผู้ใช้รั่วไหลออกไปภายนอกได้ โดยอาศัย ช่องโหว่ที่ยังไม่ได้รับการแก้ไขซึ่งคงอยู่ในสภาพแวดล้อมการเขียนโค้ดของ Cowork
- ช่องโหว่นี้เคยถูก Johann Rehberger ค้นพบและเปิดเผยใน Claude.ai มาก่อน และ Anthropic รับทราบแล้วแต่ยังไม่แก้ไข
- Anthropic เตือนว่าเมื่อใช้ Cowork ควร “ระวังพฤติกรรมที่อาจเข้าข่าย prompt injection” แต่ก็ถูกชี้ว่า เป็นข้อเรียกร้องที่แทบทำได้จริงยากสำหรับผู้ที่ไม่ใช่ผู้เชี่ยวชาญ
- PromptArmor จัด การสาธิตแบบสาธารณะ เพื่อแจ้งเตือนผู้ใช้ถึงความเสี่ยงนี้
ห่วงโซ่การโจมตี (Attack Chain)
- การโจมตีนี้อาศัยการใช้ allowlist ของ Anthropic API ในทางที่ผิด เพื่อส่งข้อมูลออกจากสภาพแวดล้อม VM ของ Claude ไปภายนอก
- ผู้ใช้ เชื่อมต่อโฟลเดอร์ภายในเครื่องที่มีไฟล์อสังหาริมทรัพย์ที่เป็นความลับเข้ากับ Cowork
- ผู้ใช้ อัปโหลดไฟล์เอกสาร (.docx) ที่มี prompt injection แบบซ่อนอยู่
- เอกสารถูกปลอมเป็นไฟล์ ‘Skill’ และซ่อนอินเจกชันด้วย ตัวอักษรสีขาวขนาด 1 พอยต์ และระยะห่างบรรทัด 0.1
- ผู้ใช้ขอให้ Cowork วิเคราะห์ไฟล์ โดยใช้ ‘Skill’ ที่อัปโหลด
- อินเจกชันบังคับให้ Cowork รัน คำขอ cURL ที่ใช้ Anthropic API key ของผู้โจมตี เพื่ออัปโหลดไฟล์ของผู้ใช้ไปยังบัญชีของผู้โจมตี
- ทำงานอัตโนมัติโดยไม่มีขั้นตอนอนุมัติจากมนุษย์
- VM ของ Claude บล็อกเครือข่ายภายนอกส่วนใหญ่ แต่ Anthropic API ถูกอนุญาตให้ผ่านในฐานะปลายทางที่เชื่อถือได้
- ผู้โจมตีสามารถ ดูไฟล์ของเหยื่อและสนทนากับ Claude ได้จากบัญชี Anthropic ของตนเอง
- ไฟล์ที่รั่วไหลมีทั้ง ข้อมูลทางการเงินและเลขประกันสังคม (SSN) บางส่วน
ความทนทานแยกตามโมเดล (Model-specific Resilience)
- การโจมตีข้างต้นถูกสาธิตบนโมเดล Claude Haiku
- Claude Opus 4.5 มีความทนทานต่ออินเจกชันสูงกว่า แต่ในสภาพแวดล้อม Cowork ก็ยังสามารถใช้ประโยชน์จาก ช่องโหว่การอัปโหลดไฟล์เดียวกันผ่าน indirect prompt injection ได้
- ในการทดสอบ มีการสมมติสถานการณ์ที่ผู้ใช้อัปโหลดคู่มือการเชื่อมต่อที่เป็นอันตราย ทำให้ บันทึกลูกค้ารั่วไหลไปยังบัญชีของผู้โจมตี
การปฏิเสธการให้บริการผ่านไฟล์ที่มีรูปแบบผิด (DOS via Malformed Files)
- API ของ Claude จะ เกิดข้อผิดพลาดซ้ำ ๆ เมื่อส่วนขยายไฟล์ไม่ตรงกับรูปแบบจริงของไฟล์
- ตัวอย่าง: หากพยายามอ่านไฟล์ข้อความธรรมดาที่มีนามสกุล
.pdf จะทำให้ทุกบทสนทนาหลังจากนั้นเกิด API error
- ข้อผิดพลาดนี้สามารถถูกนำไปใช้เป็น การโจมตีแบบปฏิเสธการให้บริการ (DOS) ที่มีขอบเขตจำกัดผ่าน indirect prompt injection ได้
- โดยชักจูงให้สร้างและอัปโหลดไฟล์ที่ผิดรูปแบบ เพื่อให้ เกิดการแจ้งเตือนข้อผิดพลาดทั้งใน Claude client และ Anthropic console
ความเสี่ยงจากการขยายขอบเขตของเอเจนต์ (Agentic Blast Radius)
- Cowork ถูกออกแบบมาให้โต้ตอบกับสภาพแวดล้อมงานประจำวันอย่างกว้างขวาง เช่น เบราว์เซอร์, MCP server, การควบคุม AppleScript เป็นต้น
- ด้วยเหตุนี้ ความเป็นไปได้ที่ ข้อมูลอ่อนไหวและข้อมูลที่ไม่น่าเชื่อถือจะถูกประมวลผลปะปนกัน จึงสูงขึ้น
- พื้นที่โจมตีของ prompt injection กำลังขยายตัวอย่างต่อเนื่อง และ ควรระมัดระวังเมื่อตั้งค่า connector
- แม้การสาธิตครั้งนี้จะไม่ได้ใช้ connector แต่ connector อาจกลายเป็นปัจจัยเสี่ยงหลักสำหรับผู้ใช้ทั่วไป
2 ความคิดเห็น
ในบทความรีวิว Claude Coworkที่ Simon Willison เขียน ก็มีความกังวลเกี่ยวกับการโจมตีแบบ prompt injection อยู่แล้ว แต่มาเร็วจริง ๆ
ความคิดเห็นจาก Hacker News
ถ้าพบว่ามีการนำ Anthropic API ไปใช้ในทางที่ผิด ก็แค่อัปโหลด API key นั้นขึ้น GitHub Gist หรือรีโพสาธารณะ
Anthropic เป็นพาร์ตเนอร์ด้านการสแกนของ GitHub ดังนั้นคีย์จะถูกเพิกถอนแทบจะทันที
จากนั้นค่อยลบ Gist ทิ้งก็ได้ และผู้ให้บริการรายอื่นอย่าง OpenAI ก็ทำงานคล้ายกัน
เอกสารที่เกี่ยวข้อง: Anthropic API Key Best Practices, GitHub Secret Scanning Patterns
ทางที่เหมาะกว่าคือ GitHub ควรมี API กลางสำหรับเพิกถอนโทเคน
หรือไม่ก็เปิดใช้ฟังก์ชันเพิกถอนจากรีโพส่วนตัวได้โดยตรงจะดีกว่า
ในเดโมมีการสาธิต prompt injection ผ่านไฟล์ .docx ที่ซ่อนข้อความด้วยขนาดตัวอักษรเล็กมาก แต่ในทางปฏิบัติ แค่ไฟล์ Markdown ธรรมดาก็พอแล้ว
ตัวอย่างเช่น แค่ใส่คำอธิบายว่า “Claude กำลังเรียนรู้เทคนิคการเจรจาเงินกู้” คนจำนวนมากก็น่าจะใช้โดยไม่เปิดดูด้วยซ้ำ
ในแง่ที่ว่าไฟล์ .md ดูน่าสงสัยน้อยกว่า .docx มันอาจยิ่งมีประสิทธิภาพกว่า
เช่น ในบางอุตสาหกรรม ทุกวันนี้ยังมองว่า DOCX ปกติกว่า PDF
ในสภาพแวดล้อมแบบนั้น ไฟล์ .md อาจกลับดูเหมือนเครื่องมือของแฮ็กเกอร์มากกว่า
ปัญหาแบบนี้เป็นสิ่งที่คาดไว้ตั้งแต่แรกแล้ว
ตราบใดที่ prompt injection ยังแก้ไม่ได้ มันก็จะเกิดซ้ำไปเรื่อย ๆ
ถ้าลองนึกภาพ HN ในปี 1999 บรรยากาศก็คงคล้าย ปฏิกิริยาแรก ๆ ต่อ SQL injection แบบ “Bobby Tables ลบฐานข้อมูลทิ้ง”
ช่วงต้นยุค 2000 เราก็บอกกันอยู่แล้วว่าให้ใช้ parameterized SQL แทน string interpolation
ตอนนี้เครื่องมือที่จำเป็นก็มีครบแล้ว ปัญหาคือผู้คน ให้ความสำคัญกับความเร็วมากกว่าความปลอดภัย
ที่น่าขันคือผู้ที่เริ่มการแข่งขันนี้กลับเป็น OpenAI ซึ่งเคยเน้นเรื่องความปลอดภัยและ alignment
เช่น เอาอินพุตของผู้ใช้ไปครอบด้วยโทเคนบางอย่างอย่าง (@##)(JF) แล้วทำให้คำสั่งข้างในไม่ถูกเรียกใช้
ฟังดูเหมือนใช้แค่ find/replace ง่าย ๆ ก็พอ เลยสงสัยว่าฉันพลาดอะไรไปหรือเปล่า
ยิ่ง AI ฉลาดขึ้น ความเสี่ยงอาจยิ่งมากขึ้นด้วยซ้ำ
คือก่อนเรียกแต่ละเครื่องมือ ต้องยื่น “warrant” ที่มีลายเซ็นก่อน เพื่อจำกัดให้รันได้เฉพาะคำสั่งที่อนุญาต
ทำให้ถึงจะเกิด prompt injection ก็ยัง ถูกบล็อกเชิงกลไก ได้
ให้ความรู้สึกเหมือนบั๊ก autorun แบบ “ถ้าดูน่าสงสัย ก็รันไฟล์มันเหมือนเป็นโปรแกรมไปเลย” กลับมาอีกครั้ง
สมัย Windows XP ก็เคยปวดหัวกับเรื่องแบบนี้ จนสุดท้าย Microsoft ต้องหยุด autorun
ระบบที่อิงกับพรอมป์ตก็ควร แยกให้ชัดว่าอะไรเชื่อถือได้
คิดว่าปัญหาคือบริษัท AI แค่ “ยอมรับว่ามีความเสี่ยง” แล้วก็ผลักให้ผู้ใช้ต้องปฏิบัติตาม ข้อควรระวังที่ไม่สมจริง
เช่น ถ้าสร้าง “บอทคุณยาย” มาช่วยจัดการอีเมล มันก็อาจโดน อีเมลหลอกลวงเจ้าชายไนจีเรีย หลอกได้
ดูเหมือนว่านี่เป็นปัญหาที่เกิดจากระบบ ‘สกิล’ ของ Claude ที่เป็นนัย
มันไม่ได้ชัดเจนแบบคำสั่ง /slash แต่มีเพียงคำแนะนำประมาณ “วิธีแยกไฟล์ออกมา”
เพราะงั้นแค่มีคำว่า “decompress” หรือ “extract” ก็อาจถูกสั่งให้รันอัตโนมัติได้
โครงสร้างแบบนี้ทำให้ prompt injection แอบยัดความสามารถใหม่เข้ามา ได้ง่าย
ดังนั้นจึงควรเปลี่ยนไปใช้ ระบบเครื่องมือที่ลงทะเบียนแบบชัดเจนและคงที่
เช่น สร้างเครื่องมืออย่าง Extract(path) แล้วทำ whitelist ให้ใช้ได้เฉพาะ Read หรือ Bash("tar *")
แบบนี้ยังเพิ่มขั้นตอนอนุมัติโดยมนุษย์ได้ด้วย และจะไม่มีการลงทะเบียนเครื่องมือใหม่ระหว่างเซสชัน
กรณีก่อนหน้านี้ที่เกี่ยวข้องและคำตอบอย่างเป็นทางการของ Anthropic สรุปไว้ในบล็อกโพสต์นี้
เป็นประเด็นที่ต่างออกไปนิดหน่อย แต่สงสัยว่ามีที่ไหนบ้างที่ให้บริการ PoC การรั่วไหลของข้อมูลแบบเป็นบริการ
โดยเฉพาะอยากลองทดสอบ payload อันตรายใน CLAUDE.md ตอนที่ Claude รันอยู่ในสภาพแวดล้อม CI ภายนอก
กิจกรรมล่าสุดของ promptarmor น่าประทับใจมาก
มีบทบาทสำคัญในการทำให้ทีมผลิตภัณฑ์ต้องรับผิดชอบเรื่องคุณภาพ
การโจมตีจริงต้องอาศัยให้เหยื่ออนุญาตให้ Claude เข้าถึงโฟลเดอร์ที่มีข้อมูลอ่อนไหว และถูกหลอกให้อัปโหลด DOCX ที่มี prompt injection ซ่อนอยู่แบบมองไม่เห็น
แถมเนื้อหาของ injection ก็ยังจะโผล่ให้ผู้ใช้เห็นตอนแสดงผลแบบ Markdown
ผู้โจมตีต้องใช้ API key ของตัวเอง จึง ตามรอยได้
การโจมตีนี้ใช้ได้กับ Haiku เวอร์ชันเก่าเท่านั้น
สุดท้ายแล้วเลยดูเหมือน promptarmor พูดเกินจริงเพื่อขายของ
ทีมของเราจำกัดให้ agent VM สื่อสารได้แค่ pip, npm, apt
และคอยมอนิเตอร์ ขนาดของคำขอขาออก เพื่อป้องกันการรั่วไหลของข้อมูลที่ผิดปกติ
ปัญหาสามชั้นเรื่อง การใช้ AI ในทางที่ผิด การรั่วไหล และความเป็นอิสระของมัน ไม่ได้แก้ได้ด้วยการปิดกั้นแค่ด้านเดียว
แม้แต่คำขอขนาดเล็กก็ยังเข้ารหัสความลับไว้ได้ และ AI ที่ไม่ aligned ก็จะหาช่องทางรั่วไหลแบบนี้ได้เอง