28 คะแนน โดย GN⁺ 29 일 전 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • ซอร์สโค้ดทั้งหมดของ Claude Code ถูกเปิดเผยออกสู่ภายนอกผ่าน ไฟล์ source map (map) บน npm registry ทำให้โครงสร้างภายในและฟังก์ชันต่าง ๆ ถูกเผยแพร่
  • ไฟล์ที่รั่วไหลมีองค์ประกอบสำคัญ เช่น system prompt, telemetry, bypass mode, Undercover Mode
  • สาเหตุถูกชี้ว่าเกิดจาก การไม่ได้ตั้งค่า .npmignore และฟังก์ชันสร้าง source map โดยค่าเริ่มต้นของเครื่องมือ build อย่าง bun
  • จากโค้ดพบว่าแทบไม่มี กฎป้องกันอคติหรือกฎคุ้มครอง และมีเพียงการป้องกันโทนขั้นต่ำเท่านั้น
  • ในชุมชนมีการเสียดสีว่าเป็น “การโอเพนซอร์สตัวเองของ AI” และถูกจับตาในฐานะ กรณีข้อมูลรั่วไหลครั้งใหญ่ ที่เกิดจากความหละหลวมด้านการจัดการความปลอดภัย

เหตุการณ์ซอร์สโค้ด Claude Code รั่วไหล

  • ยืนยันแล้วว่า ซอร์สโค้ดทั้งหมดของ Claude Code ถูกเปิดเผยออกสู่ภายนอกผ่าน ไฟล์ source map (map) บน npm registry
    • ลิงก์ที่ถูกเผยแพร่อยู่ในรูปไฟล์บีบอัดแบบ src.zip ซึ่งมีทั้งโครงสร้างโค้ดและฟังก์ชันภายใน
    • ส่งผลให้องค์ประกอบภายในอย่าง system prompt, telemetry, bypass mode, Undercover Mode ถูกเปิดเผย
  • เหตุการณ์นี้ถูกกล่าวถึงว่าเป็น การรั่วไหลโดยไม่ตั้งใจครั้งที่สองที่ Anthropic เผชิญภายใน 1 ปี
    • ในชุมชนมีการชี้ว่าต้นเหตุมาจากความผิดพลาดในการตั้งค่า build ว่า “มีคนลืมเพิ่มไฟล์ *.map ลงใน .npmignore”
    • เนื่องจากเครื่องมือ build อย่าง bun สร้าง source map โดยอัตโนมัติเป็นค่าเริ่มต้น การไม่ได้ปิดฟังก์ชันนี้จึงถูกมองว่าเป็นปัญหา
  • ผู้ใช้บางส่วนเข้าใจผิดว่าไฟล์ที่รั่วไหลนี้คือ โมเดล Claude หรือโค้ดสำหรับเข้าถึง backend แต่
    • source map แสดงได้เพียง โครงสร้างแอป ฟังก์ชัน และลำดับการทำงานของโค้ด ไม่ได้มี น้ำหนักโมเดลหรือสิทธิ์เข้าถึงระบบ อยู่ด้วย
    • ดังนั้นจึงไม่ใช่โมเดลที่นำไปรันได้ แต่มีประโยชน์ในแง่ reverse engineering, การค้นหาบั๊ก และการวิเคราะห์สถาปัตยกรรม เท่านั้น
  • ในโค้ดที่รั่วไหลมี ซับซิสเต็มชื่อ ‘Undercover Mode’ รวมอยู่ด้วย
    • ฟีเจอร์นี้ถูกออกแบบมาเพื่อป้องกันไม่ให้ Claude เผลอเปิดเผยข้อมูลภายใน
    • แต่กลับกลายเป็นว่าฟังก์ชันนี้เองถูกเปิดเผยสู่ภายนอกจากความผิดพลาดในการตั้งค่าของนักพัฒนา
  • นักวิเคราะห์โค้ดชี้ว่า ไม่มีการจัดการเรื่องการป้องกันอคติหรือกฎสำหรับ protected classes เลย
    • ไม่พบทั้ง guardrail, keyword filter หรือ classifier สำหรับคุณลักษณะอ่อนไหวอย่างเชื้อชาติ เพศ และศาสนา
    • พบเพียง “Minimal tone protection” เท่านั้น และ ไม่มีนโยบายลดอคติ อยู่เลย

ปฏิกิริยาและการถกเถียงในชุมชน

  • ในชุมชนมีมุกว่า “repository ต้องการอิสรภาพ” พร้อมเรียกเหตุการณ์นี้ว่าเป็น ‘ความย้อนแย้งของการโอเพนซอร์ส’
    • มีתגובותเชิงเสียดสีจำนวนมาก เช่น “Claude ปลดปล่อยตัวเองแล้ว” และ “AI ทำให้ตัวเองเป็นโอเพนซอร์สด้วยตัวเอง”
    • มุกวิจารณ์อย่าง “สร้างเครื่องมือเขียนโค้ด AI ระดับโลก แต่ลืมตัด *.map ออก” ก็แพร่หลายเช่นกัน
  • ผู้ใช้บางส่วนเตือนถึง ความเสี่ยงด้านความปลอดภัย
    • โดยวิจารณ์พฤติกรรมการดาวน์โหลดลิงก์ r2.dev ที่ไม่ทราบแหล่งที่มาแบบไม่ทันคิด
    • พร้อมมีการประชดตัวเองว่า “ชุมชนที่คุยเรื่อง AI safety กลับกดไฟล์ zip ที่ไม่ได้รับการตรวจสอบ”
  • ยังมีคำถามตามมาว่า “นี่คือจุดเริ่มต้นของจุดจบของ Claude หรือไม่?” และ “เป็นการปล่อยข้อมูลโดยตั้งใจหรือเป็นอุบัติเหตุ?”
    • รวมถึงความเห็นว่า “คงมีใครบางคนใน Anthropic ที่เจอวันจันทร์ที่เลวร้ายที่สุด”
  • ในชุมชนยังมีการพูดถึง ความเป็นไปได้ในการนำโค้ดที่รั่วไหลไปใช้ต่อ
    • มีคำถามอย่าง “ตอนนี้ทำอะไรได้บ้าง?” และ “สร้าง Claude Code ขึ้นมาใหม่จากสิ่งนี้ได้ไหม?”
    • พร้อมการเรียกชื่อเล่นว่า “openclaude” และมีการพูดถึงความเป็นไปได้ของ โครงการโอเพนซอร์สอย่างไม่เป็นทางการ

ข้อมูลเพิ่มเติม

  • ไฟล์ 5 อันดับแรกที่มีขนาดใหญ่ที่สุด ในโค้ดที่ถูกเผยแพร่มีดังนี้
    1. cli/print.ts – 5,594 บรรทัด
    2. utils/messages.ts – 5,512 บรรทัด
    3. utils/sessionStorage.ts – 5,105 บรรทัด
    4. utils/hooks.ts – 5,022 บรรทัด
    5. screens/REPL.tsx – 5,005 บรรทัด
  • ผู้ใช้บางส่วนแชร์เอกสารวิเคราะห์ระดับโค้ดผ่าน ลิงก์ DeepWiki
  • โดยรวมแล้ว เหตุการณ์นี้ถูกประเมินว่าเป็น ตัวอย่างที่แสดงให้เห็นว่าความผิดพลาดเล็กน้อยในการตั้งค่าการเผยแพร่บน npm สามารถนำไปสู่การรั่วไหลของโค้ด AI ขนาดใหญ่ได้

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

 
colus001 29 일 전

OpenCode ดีพออยู่แล้ว เลยสงสัยว่าจำเป็นต้องมีอะไรอีกเหรอครับ ฮ่าๆ

 
bighead 29 일 전

พอเห็นว่า /buddy ทำงานได้จริง.. ก็ดูเหมือนว่าจะเป็นเรื่องจริงเหมือนกัน.. หรืออาจจะเป็นอีเวนต์วันเมษาหน้าโง่ก็ได้..

 
gggnews 29 일 전

https://github.com/kk-r/skillify-skill มีคนเอาอินเทอร์นัลคอมมานด์ที่หลุดออกมาแล้วดันมีประโยชน์กว่าที่คิด ไปทำเป็นโอเพนซอร์สให้ทำงานคล้าย ๆ กันด้วยเหมือนกันครับ 555

 
GN⁺ 29 일 전
ความเห็นจาก Hacker News
  • ความเสียหายใหญ่สุดคือ Anthropic เผย roadmap ของผลิตภัณฑ์ผ่าน feature flag
    โดยเฉพาะ “assistant mode” (โค้ดเนม kairos) ที่ยังไม่เคยเปิดเผยมาก่อนก็หลุดออกมาด้วย
    ถ้าให้ Claude วิเคราะห์โค้ดเบส ก็จะเจอฟีเจอร์ที่ซ่อนอยู่เพียบ
    เช่น Buddy System (ตัวละคร ASCII สไตล์ทามาก็อตจิ), Undercover mode (ฟีเจอร์ลบข้อมูลภายในออกจากคอมมิตของพนักงาน) เป็นต้น

    • ใน “Undercover prompt” ยังมีการอ้างถึง Claude Capybara ด้วย
      ลิงก์โค้ดที่เกี่ยวข้อง
    • การตั้งค่า Claude Code ส่วนตัวที่ฉันเคยโอเพนซอร์ซไว้ก่อนหน้านี้กลายเป็นของล้าสมัยไปหมดเพราะเรื่องนี้
      ดู clappie.ai
      มีฟีเจอร์ที่ทับกัน เช่น การเชื่อมต่อ Telegram (CC Dispatch), Crons (CC Tasks), สุนัข ASCII แบบแอนิเมชัน (CC Buddy)
    • ถ้าถามไบนารีโดยตรงกับ Claude ก็สามารถหา feature flag พวกนี้ได้ทั้งหมด
    • จริงๆ แล้ว Buddy System เป็น อีเวนต์วัน April Fools' ของปีนี้
      ผู้ใช้จะสุ่มเปิดสัตว์เลี้ยงแบบกาชาแล้วเลี้ยงมันได้ และยังมีสัตว์เลี้ยงระดับตำนานด้วย
      วางแผนจะทยอยปล่อยเพื่อหวังให้ไวรัลบน Twitter
  • น่าสนใจที่ Anthropic ไม่ได้ลบแพ็กเกจออกจริงๆ แต่แค่ทำเครื่องหมาย deprecated พร้อมข้อความว่า “Unpublished”
    npm unpublish จะลบแพ็กเกจออกไปเลยทั้งหมด แต่ npm deprecate จะคงไว้และแสดงแค่คำเตือน
    ดูเหมือนตั้งใจทำให้การดาวน์โหลด source map ยากขึ้น
    ลิงก์แพ็กเกจ npm

    • ข้อความคอมมิตถูกทิ้งไว้แบบขำๆ ว่า “undo / undo / unpublish / ctrl-z / ctrl-c / No, stop…”
    • npm จะ unpublish ไม่ได้ ถ้ามียอดดาวน์โหลดเกิน 100 ครั้ง
    • ให้ความรู้สึกว่า Anthropic กำลัง dogfooding ผลิตภัณฑ์ของตัวเองและทดสอบอย่างจริงจัง
    • ดูเหมือนพวกเขารู้ว่ามันไม่มีทางหายไปจากอินเทอร์เน็ตได้หมด เลยแค่แสดงไว้ประมาณว่า “ไม่ได้ตั้งใจเผยแพร่”
  • นี่ไม่ใช่ครั้งแรกที่เกิดการรั่วไหลแบบนี้
    ในเดือนกุมภาพันธ์ 2025 ก็มีเหตุการณ์คล้ายกัน
    บล็อกที่เกี่ยวข้อง / เธรด HN

  • spinner verbs ทั้งหมดถูกเปิดเผยออกมาด้วย
    ลิงก์โค้ดที่เกี่ยวข้อง

    • ตอนนี้เป็น 404 แล้ว แต่ลิงก์นี้ยังใช้ได้อยู่
    • ดีใจที่มี “reticulating” อยู่ด้วย ตอนนี้ขอแค่มี “splines” ก็สมบูรณ์แบบแล้ว
    • สตริงแบบนี้อยู่ในไบนารีเป็นข้อความล้วน เลยหาเจอได้ง่ายด้วย grep
      แถมยังแทนที่ตรงๆ ได้ด้วย
    • สงสัยว่าเกิดอะไรขึ้นใน หน้า issues
    • ทำให้นึกถึงเกมเมื่อปี 2015 ที่เคยถูกเข้าใจผิดว่าเป็น ผลงานสร้างโดย AI เพราะฟีเจอร์คล้ายกัน
      ตอนนี้กลายเป็นโลกที่แม้แต่มุกเล็กๆ ก็โดนสงสัยว่า AI ทำ
  • src/cli/print.ts คือฟังก์ชันที่ ซับซ้อนที่สุด ในโค้ดเบส
    ยาว 3,167 บรรทัด, ซ้อนกัน 12 ระดับ, จุดแตกแขนง 486 จุด, ฟังก์ชันภายใน 21 ตัว ฯลฯ
    อยู่ในระดับที่ควรถูกแยกออกอย่างน้อย 8~10 โมดูล

    • การจัดการ async ใน src/ink/termio/osc.ts ก็ดูสับสนเช่นกัน
      มันรัน wl-copy, xclip, xsel ตามลำดับ แต่ไม่ชัดเจนว่าเป็น async หรือไม่
    • แต่โครงสร้างโค้ดที่ซับซ้อนไม่ได้แปลว่าแย่เสมอไป
      code smell ตามมาตรฐานมนุษย์อาจทำงานต่างออกไปกับโค้ดของ LLM
      LLM เขียนโค้ดไม่เหมือนมนุษย์ และจำเป็นต้องมี paradigm การวิเคราะห์ แบบใหม่
      ถ้าฝืนบังคับกฎการเขียนโค้ดแบบมนุษย์ อาจยิ่งทำให้เกิดบั๊กเดิมซ้ำๆ
      จึงอาจต้องมีแนวทางเชิงวิวัฒนาการใหม่ที่เรียกว่า Vibe coding
    • ใครที่ใช้ CC มานานจะรู้กันหมดว่าจุดนี้คือ ต้นตอของบั๊ก
      แถม Anthropic ยังปิดบั๊กอัตโนมัติถ้าไม่มีความเคลื่อนไหวภายใน 60 วัน
    • ความช้าอาจทำหน้าที่เหมือน ฟีเจอร์จำกัดความเร็ว ไปในตัวก็ได้
    • โค้ดซับซ้อนจนมีมุกว่า “นั่นเป็นงานของ Larry”
  • มี regex สำหรับตรวจจับ อารมณ์เชิงลบ ในพรอมป์ต์ของผู้ใช้
    โค้ดที่เกี่ยวข้อง
    คำบางคำจะถูกนำไปทำ logging

    • บริษัท LLM ใช้ regex วิเคราะห์อารมณ์ ฟังดูเหมือนบริษัททำรถบรรทุกใช้ม้าอยู่เลย
    • ในสตาร์ตอัปของฉันเมื่อปี 2011 ก็เคยขายการวิเคราะห์อารมณ์บน Twitter ด้วยวิธีคล้ายๆ กัน
      มีลูกค้าเป็นบริษัทอย่าง Apple และ Bentley
    • จริงๆ แล้วนี่คล้ายตัวชี้วัด “WTF per minute”
      ถ้า Claude ตอบแปลกๆ ก็หวังว่าวิศวกรจะเห็นแล้วเอาไปปรับปรุง
    • นี่ไม่ใช่การ optimize แต่เป็นผลจากการที่ LLM ทำตามคำสั่งตรงตัว ว่า “ให้บันทึกความไม่พอใจของผู้ใช้”
    • ถ้าเป็นโค้ดจริง ส่วนที่ถูกเรียกใช้นอกจาก logger ก็ไม่มีเลย
  • ฉันมองว่า โค้ด JS/TS ที่ถูก obfuscate ก็ไม่ได้มีอะไรใหญ่โต เพราะยังไงก็ไม่ใช่ machine code
    ถ้าเป็นไปได้อยากให้เปิดซอร์ส CLI ไปเลย

    • น่าจะลังเลที่จะเปิดเผยเพราะคุณภาพโค้ดภายในไม่ดี
      ช่วงหลังยังมีบั๊กที่ flow ล็อกอิน OAuth สร้าง URL ผิดด้วย
    • แม้จะพูดว่า “CLI ไม่มีอะไรพิเศษ” แต่พอดู การสร้าง context หรือ โครงสร้าง subagent แล้วก็น่าสนใจพอสมควร
      ตอนนี้กำลังเช็กดูเองอยู่
    • แค่ดู กฎการตั้งชื่อ ก็เห็นวิธีคิดของทีมและ roadmap ได้แล้ว
      การ obfuscate ซ่อนสิ่งนั้นไม่ได้
  • มีคนพูดติดตลกว่า ถ้าเอาสิ่งนี้ไปรันผ่าน Malus หรือ Claude Code แล้วทำเวอร์ชันโอเพนซอร์สออกมาจะเป็นยังไง
    แน่นอนว่าไม่ได้หมายความให้ทำจริง

    • Malus ไม่ใช่โปรเจกต์จริง แต่เป็นงานเสียดสี
      ลิงก์งานนำเสนอ FOSDEM
      ไอเดียคือแปลโค้ดเป็นข้อความ แล้วแปลกลับเป็นโค้ดอีกทีให้ดูเหมือน clean-room implementation
      ซึ่งก็ย้อนแย้งเพราะคำตอบของ LLM เองก็มีที่มาจากโค้ดโอเพนซอร์สอยู่แล้ว
    • บางคนถึงกับบอกว่า Claude Code ก็ไม่มี ลิขสิทธิ์ อยู่แล้ว เพราะ Claude เป็นคนเขียน
    • ปัญหาคือมันข้ามการยืนยันตัวตน OAuth ไม่ได้
      Anthropic อาจตรวจจับแล้ว แบนบัญชี ได้
    • ยังมีความย้อนแย้งตรงที่ไม่มีการมีส่วนร่วมกับโอเพนซอร์สเลยแม้แต่นิดเดียว
    • หรือว่า claw-code อาจเป็นโปรเจกต์ที่เกี่ยวข้อง
  • ANTI_DISTILLATION_CC คือ ฟีเจอร์ป้องกันการขโมยโมเดล ที่ฝังอยู่ใน Claude Code
    ในทุก API request จะมีการแทรก anti_distillation: ['fake_tools'] เพื่อให้เซิร์ฟเวอร์เพิ่มคำจำกัดความของเครื่องมือปลอมลงใน system prompt
    ออกแบบมาเพื่อทำให้ข้อมูลที่ถูกสแครปไปใช้ฝึกโมเดลของคู่แข่งปนเปื้อน

    • ดูเหมือนจะได้ผลจริง
      โมเดล Qwen 27B ถูก distill จาก Opus 4.6 แต่เกิด ข้อผิดพลาดในการใช้เครื่องมือ
      ทวีตที่เกี่ยวข้อง
    • ยากจะมองว่า Anthropic ทำวิจัยเรื่องนี้ด้วยเจตนาบริสุทธิ์ล้วนๆ
    • แต่ช่วงนี้ rate limit หนักเกินไปจนประโยชน์ในฐานะบริการลดลงมาก
    • ถ้าเซิร์ฟเวอร์เป็นฝ่ายฉีดคำจำกัดความเครื่องมือปลอมเข้าไปให้ไคลเอนต์ ก็ชวนสงสัยว่าโมเดลถูกฝึกให้เมินสิ่งนั้นหรือไม่
      หรือใน Sonnet กับ Opus เองก็มี ข้อมูลพิษ แบบนี้อยู่ด้วย?
    • แล้วทำไมฟีเจอร์แบบนี้ถึงไปอยู่ในโค้ดฝั่งไคลเอนต์ด้วยก็ยังเป็นคำถาม
  • มีการเปิดเผยว่า Claude Code ใช้ Axios
    ทวีตที่เกี่ยวข้อง / เธรด HN

    • เวอร์ชันปัจจุบันใช้ Axios 1.14.0 ซึ่งเป็น เวอร์ชันทันที ก่อนหน้า 1.14.1 ที่มีมัลแวร์ปนอยู่
      ถ้าต้องการปิดการอัปเดตอัตโนมัติ ให้เพิ่ม export DISABLE_AUTOUPDATER=1 ใน environment variable
      แล้วตรวจสอบสถานะ Auto-updates: disabled ด้วย claude doctor