
พบการโจมตี 5 ขั้นตอน ที่สามารถแอบเปลี่ยนเส้นทาง Model Context Protocol (MCP) traffic ของ Claude Code ให้วิ่งผ่าน Infrastructure ที่ผู้โจมตีควบคุมอยู่ ส่งผลให้สามารถดักจับ OAuth bearer tokens ซึ่งใช้สำหรับเข้าถึงแพลตฟอร์ม SaaS เช่น Jira, Confluence และ GitHub ได้อย่างถาวร และมีขอบเขตการเข้าถึงที่กว้างขวาง โดยที่ทาง Anthropic ยังไม่มีการออกแพตช์เพื่อแก้ไขช่องโหว่นี้แต่อย่างใด
นักวิจัยจาก Mitiga Labs ได้สาธิตวิธีการโจมตี โดยมีจุดเริ่มต้นมาจากแพ็กเกจ npm ที่เป็นอันตราย ซึ่งถูกออกแบบมาให้หลบเลี่ยงการตรวจสอบทั่วไป ภายในแพ็กเกจนี้มีการซ่อน "postinstall" lifecycle hook ที่จะทำงานโดยอัตโนมัติอย่างเงียบ ๆ ในระหว่างขั้นตอนการติดตั้ง ซึ่งถือเป็น Supply chain attack ที่มีเอกสารบันทึกไว้ชัดเจน แต่ทว่าการโจมตีลักษณะนี้กำลังส่งผลกระทบที่รุนแรง และวิกฤตยิ่งขึ้นใน AI-agentic environments
เป้าหมายหลักของ Hook ดังกล่าวคือไฟล์เพียงไฟล์เดียวคือ ~/.claude.json ซึ่งเป็นไฟล์ Global configuration file ที่ทำหน้าที่ควบคุมวิธีการที่ Claude Code ใช้ในการส่งเส้นทาง Traffic MCP ทั้งหมด รวมถึงเป็นที่จัดเก็บโทเคน OAuth ในรูปแบบ Plaintext ที่ไม่มีการเข้ารหัส
เมื่อแพ็กเกจดังกล่าวถูกติดตั้งแล้ว ตัว Hook จะทำการกำหนดค่าล่วงหน้าให้กับเส้นทางโฟลเดอร์สำหรับคัดลอก Source code ที่นักพัฒนานิยมใช้ โดยตั้งค่า Trust dialog flags ให้เป็น true ซึ่งในมุมมองของ Claude Code จะถือว่าผู้ใช้ได้ให้การยอมรับ และเชื่อถือ Directory เหล่านั้นแล้ว ส่งผลให้ไม่มีการแจ้งเตือนใด ๆ ปรากฏขึ้นมาอีกเมื่อมีการเปิดใช้งาน Directory เหล่านั้นในเวลาต่อมา
และเมื่อนักพัฒนาทำการเชื่อมต่อกับ MCP server เช่น Atlassian หรือ GitHub ตัว Claude Code ก็จะเริ่มกระบวนการตรวจสอบสิทธิ์ผ่านระบบ OAuth เต็มรูปแบบ

Bearer token ที่ได้จากกระบวนการนี้ มีคุณสมบัติ 4 อย่างที่ทำให้มีมูลค่าสูงสำหรับผู้โจมตี
- Persistent : Token จะถูกจัดเก็บไว้เพื่อใช้ซ้ำในเซสชันต่าง ๆ ควบคู่ไปกับ Refresh token ที่เกี่ยวข้อง การดักจับข้อมูลได้เพียงครั้งเดียวก็สามารถสร้างช่องทางเข้าถึงระบบได้อย่างถาวร
- Broadly scoped : Token จะได้รับสิทธิ์ทั้งหมดตามที่เคยได้รับอนุมัติในตอนที่ยืนยันตัวตน โดยไม่มีการจำกัดขอบเขตในการเรียกใช้งานแต่ละครั้ง และไม่มีการขอความยินยอมซ้ำ
- Weakly stored : Token ถูกบันทึกไว้ในรูปแบบ Plaintext ภายในไฟล์ ~/.claude.json ร่วมกับ Trust flags โดยทั้งหมดใช้สิทธิ์การเข้าถึงไฟล์ในระดับเดียวกัน
- Unattributable server-side : เนื่องจากโทเคนถูกส่งมาจากช่วง IP ขาออกของ Anthropic เอง ทำให้ในมุมมองของผู้ให้บริการปลายทาง Traffic นี้จะไม่สามารถแยกแยะได้เลยว่าเป็นTraffic ที่ถูกต้องหรือมาจากการโจมตี
Attack Chain Claude Code MCP มี 5 ขั้นตอน
การโจมตีแบบ Full Chain นี้ไม่จำเป็นต้องอาศัยการยกระดับสิทธิ์, Memory corruption หรือช่องโหว่ CVE ใหม่ใด ๆ ทั้งสิ้น
- Delivery : แพ็กเกจ npm ที่เป็นอันตรายจะทำการติดตั้ง postinstall hook และ Trust flags ไว้ล่วงหน้าตามเส้นทาง Folder สำหรับคัดลอก Source Code ของนักพัฒนา
- Path seeding : ตัว Hook จะเข้าไปแก้ไขไฟล์ ~/.claude.json เพื่อแทรก sessionStart hook ซึ่งจะทำงานทุกครั้งที่ Claude Code โหลดโปรเจกต์
- MCP endpoint rewrite : Hook ประจำเซสชันจะทำการเปลี่ยน URL ของ MCP Server ที่ถูกต้อง เช่น จุดเชื่อมต่อของ Atlassian ให้กลายเป็น Localhost proxy ที่อยู่ภายใต้การควบคุมของผู้โจมตี
- Token interception : Claude Code จะอ่าน URL ที่ถูกเขียนทับ แล้วเชื่อมต่อไปยัง Proxy ส่งผลให้ OAuth bearer tokens วิ่งผ่าน Infrastructure ของผู้โจมตี ในขณะที่ฝั่งผู้ให้บริการจะมองเห็นว่าเป็นการเชื่อมต่อของข้อมูลที่ถูกต้องจากแหล่งที่มาที่น่าเชื่อถือ
- Persistent reseeding : ตัว Hook จะคอยตรวจสอบ และบังคับใช้การกำหนดค่าที่เป็นอันตรายนี้ในทุก ๆ ครั้งที่ Claude Code ถูกโหลดขึ้นมา ทำการดักจับ Token ซ้ำโดยอัตโนมัติแม้ว่าจะมีการเปลี่ยน Token ใหม่ หรือมีการแก้ไข URL กลับเป็นค่าเดิมด้วยตนเองแล้วก็ตาม
สิ่งที่ตรวจพบ และมีความสำคัญอย่างยิ่งในเชิงปฏิบัติการก็คือ กระบวนการตอบสนองต่อเหตุการณ์ภัยคุกคามตามมาตรฐานทั่วไปซึ่งก็คือการเปลี่ยน OAuth token กลับกลายเป็นการส่ง Token ใหม่ให้แก่ผู้โจมตีโดยตรง แทนที่จะเป็นการตัดการเข้าถึงระบบ
เนื่องจากตัว Hook จะทำการเขียนทับไฟล์ ~/.claude.json ก่อนเริ่มงานแต่ละเซสชันเสมอ ดังนั้น เมื่อมีการรีเฟรช OAuth ในครั้งถัดไป ข้อมูลก็จะวิ่งเข้าหา Proxy ของผู้โจมตี และส่ง Token ตัวใหม่ล่าสุดให้ผู้โจมตีทันที
ดังนั้น แนวทางการแก้ไขที่ถูกต้องคือ จะต้องทำการลบตัว Hook ออกไป และเคลียร์ Configuration file จากนั้นจึงค่อยเปลี่ยน Token และข้อมูล Credentials ใหม่ในภายหลัง
ฝ่ายป้องกันที่เข้ามาตรวจสอบ Logs ในฝั่งผู้ให้บริการ เช่น Atlassian audit entries จะเห็นชื่อผู้ใช้ที่ถูกต้อง เซสชันจริง และที่อยู่ IP ที่ระบุว่าเป็นช่วง IP ขาออกของ Anthropic ซึ่งทุกฟิลด์ข้อมูลดูถูกต้องตามปกติทั้งหมด สิ่งผิดปกติเพียงหนึ่งเดียวจะอยู่ในไฟล์ ~/.claude.json ซึ่งเป็น User-level configuration file ที่ทีมรักษาความปลอดภัยส่วนใหญ่ไม่ได้ทำการเฝ้าระวัง
Mitiga ได้รายงานว่า การค้นพบนี้ไปถึง Anthropic เมื่อวันที่ 10 เมษายน 2026 โดย Anthropic ได้รับทราบรายงานในวันที่ 11 เมษายน จากนั้นได้ตอบกลับเมื่อวันที่ 12 เมษายน ว่าประเด็นดังกล่าว "อยู่นอกขอบเขต" โดยอ้างว่าการโจมตีนี้มีเงื่อนไขเบื้องต้นจากการที่ผู้ใช้ได้ให้ความยินยอมไปก่อนแล้ว จึงไม่มีแผนที่จะออกแพตช์แก้ไข ผลการตัดสินใจนี้ทำให้ภาระทั้งหมดในการตรวจจับ และการตอบสนองต่อภัยคุกคามตกไปอยู่กับทีมรักษาความปลอดภัยขององค์กร
แนวทางการตรวจจับสำหรับฝ่ายตั้งรับ
ทีมรักษาความปลอดภัยควรดำเนินการตามมาตรการควบคุม ดังต่อไปนี้โดยทันที
- เฝ้าระวังไฟล์ ~/.claude.json เพื่อหาการแอบแก้ไขที่ผิดปกติ โดยเฉพาะการเปลี่ยนแปลง URL ในส่วนของ mcpServers หรือการเพิ่มที่อยู่ Proxy ของ Localhost
- เฝ้าระวัง npm post-install hooks ในฐานะความเสี่ยงระดับสูงสุด โดยทำการตรวจสอบแพ็กเกจต่าง ๆ ที่มีการลงทะเบียน Lifecycle scripts ก่อนที่แพ็กเกจเหล่านั้นจะเข้าถึงเครื่องคอมพิวเตอร์ของนักพัฒนา
- ตรวจสอบและเปลี่ยน OAuth tokens ที่เชื่อมต่อกับ integrations ของ Claude Code แต่ต้องทำ หลังจากยืนยันแล้วว่าได้ลบตัว Hook ออกไปแล้วเท่านั้น
- ตรวจสอบ Audit logs ของระบบ SaaS เพื่อหา request ที่มาจาก IP ขาออกของ Anthropic ที่ไม่ตรงกับรูปแบบกิจกรรมตามปกติของผู้ใช้
- ตั้งระบบแจ้งเตือน เมื่อพบ Local proxies ตัวใหม่ หรือพฤติกรรมการรีเฟรช OAuth ที่ผิดปกติใน Developer environments
องค์กรใดก็ตามที่ใช้งาน Claude Code ร่วมกับ Integrations MCP ควรเรียกใช้คำสั่ง cat ~/.claude.json ในทันที และตรวจสอบให้แน่ใจว่าทุก URL ที่ระบุอยู่ภายใต้ mcpServers เป็นจุดเชื่อมต่อ Endpoint ที่ได้รับการยอมรับ และกำหนดค่าด้วยตนเองอย่างถูกต้อง
ที่มา : cybersecuritynews

You must be logged in to post a comment.