ข้ามไปยังเนื้อหา
Anthropic ใช้ Claude ลด attack surface ของโค้ด: 25 โปรเจกต์โอเพนซอร์สเจอ 493 จุด, OpenSSH ตัดโค้ดที่เข้าถึงได้ก่อนล็อกอินไปราว 1 ใน 5 ใน 10.6
เครื่องมือนักพัฒนา

Anthropic ใช้ Claude ลด attack surface ของโค้ด: 25 โปรเจกต์โอเพนซอร์สเจอ 493 จุด, OpenSSH ตัดโค้ดที่เข้าถึงได้ก่อนล็อกอินไปราว 1 ใน 5 ใน 10.6

อ่าน 5 นาที ที่มา: Anthropic

ทีม Frontier Red Team ของ Anthropic (ผู้เขียนคือ Chris Rohlf) เผยแพร่งานวิจัยเมื่อ 20 ต.ค. 2026 ที่ไม่ได้เน้นการ “หาช่องโหว่” แบบที่บริษัททำมาตลอดปี แต่ใช้ Claude ทำ attack surface reduction คือไล่หาว่าโค้ดส่วนไหนที่ผู้โจมตีเข้าถึงได้ทั้งที่ deployment นั้นไม่จำเป็นต้องเปิด แล้วย้ายโค้ดส่วนนั้นไปไว้หลังด่านที่เหมาะสม เช่น หลังการยืนยันตัวตน หลังการกดยืนยันจากผู้ใช้ หรือเปลี่ยนจากเปิดเป็นค่าเริ่มต้นไปเป็นต้องเปิดเอง

เหตุผลของแนวทางนี้คือ การแก้ช่องโหว่ทีละตัวไม่บอกอะไรเลยเกี่ยวกับช่องโหว่ที่ยังเหลืออยู่ แต่การลดจำนวนโค้ดที่เข้าถึงได้จะลดความรุนแรงของช่องโหว่ที่ยังไม่มีใครรู้จักทั้งหมดไปพร้อมกัน รวมถึงตัวที่อาจกำลังถูกใช้โจมตีอยู่ด้วย Anthropic ทดสอบกับ 25 โปรเจกต์โอเพนซอร์ส รวมกว่า 5 ล้านบรรทัด (C, C++, Java, PHP, Python) และพบปัญหา 493 จุด

สามวิธีที่ใช้ และสิ่งที่พบ

Claude ทำรายการตัวเลือกคอนฟิกได้กว่า 17,000 ตัว ในจำนวนนี้มี 3,842 ตัว ที่เกี่ยวกับความปลอดภัย จากนั้นค้นหาตามสามแนวทาง:

  • Default configuration — โค้ดที่เข้าถึงได้ในค่าเริ่มต้น แต่ไม่มีฟีเจอร์เริ่มต้นตัวไหนใช้งาน
  • Configuration interaction — คู่ตัวเลือกที่ดูปกติเมื่อแยกกัน แต่พอตั้งพร้อมกันแล้วปิดระบบป้องกันไปเงียบๆ
  • Early reachability — โค้ดที่ซับซ้อนและอ่อนไหวด้านความปลอดภัย แต่ทำงานก่อนการยืนยันตัวตนหรือก่อนเปลี่ยนสถานะของโปรโตคอล

ผลที่น่าสนใจที่สุดอยู่ในกลุ่ม Gated (โปรเจกต์ที่ควรให้บริการเฉพาะผู้ใช้ที่ยืนยันตัวตนแล้ว) เพราะทั้ง 11 โปรเจกต์มีโค้ดที่เข้าถึงได้โดยไม่ตั้งใจ โดยพบจุดที่เปิดก่อนยืนยันตัวตนโดยไม่จำเป็น 93 จุด, โค้ดที่รันหรือบันทึกสถานะก่อนยืนยันตัวตน 37 จุด และคู่คอนฟิก 61 คู่ที่ทำให้ด่านก่อนยืนยันตัวตนที่แอดมินตั้งไว้อ่อนลง Anthropic ย้ำว่าไม่มีจุดไหนที่ใช้โจมตีได้ทันทีด้วยตัวเอง แต่ทำให้ attack surface ใหญ่เกินจำเป็น

ในภาพรวม มีคู่คอนฟิกด้านความปลอดภัย 162 คู่ ที่ระบบยอมรับโดยไม่มี error ไม่มี warning และไม่มีเอกสารบอกว่าตั้งพร้อมกันแล้วจะเป็นอย่างไร ใน 94 คู่ การตั้งพร้อมกันปิดระบบป้องกันไปเลย ตัวอย่างที่เจอซ้ำใน 4 โปรเจกต์ที่ไม่เกี่ยวข้องกันคือ แอดมินเขียนกฎ deny ด้วยชื่อโฮสต์หรือ wildcard แต่ reverse DNS ปิดอยู่ (ซึ่งเป็นค่าที่ตั้งกันเป็นส่วนใหญ่) เซิร์ฟเวอร์จึงเอา pattern ชื่อโฮสต์ไปเทียบกับ IP แบบข้อความธรรมดา ผลคือกฎ deny ไม่เคยทำงาน อีกกรณีคือคู่ตัวเลือกที่ตั้งใจให้ “เลื่อน” การตรวจใบรับรองไคลเอนต์ออกไปก่อน แต่จริงๆ แล้วปิดการตรวจทิ้งไปเลย บั๊กนี้อยู่ในซอฟต์แวร์มา 21 ปี

กรณีศึกษา: OpenSSH

โปรเจกต์ที่ลด attack surface ได้มากที่สุดเมื่อคิดเป็นสัดส่วนของโค้ดกลับเป็น OpenSSH ใน sshd รุ่น 10.4 Claude พบว่ามีโค้ดใหม่ที่ยังอยู่ในขั้นทดลองของ ML-DSA-44 (ลายเซ็นแบบ post-quantum) ราว 4,500 บรรทัด ที่ไคลเอนต์ที่ยังไม่ยืนยันตัวตนเข้าถึงได้ในค่าเริ่มต้น แม้แอดมินจะตัดอัลกอริทึมนี้ออกไปแล้วก็ตาม เพราะ sshd parse คีย์ที่ไคลเอนต์ส่งมาก่อน แล้วค่อยเช็คว่าอนุญาตชนิดคีย์นั้นหรือไม่ โค้ดส่วนนี้คิดเป็นราว 16% ของโค้ด pre-auth ของ sshd ในค่าเริ่มต้น

รุ่น 10.5 ย้ายการเช็คให้เกิดก่อนการ parse แต่ Claude พบช่องโหว่ในการแก้นั้นอีก 2 จุด:

  1. การเช็คดูจากชื่ออัลกอริทึมที่ไคลเอนต์ประกาศ แต่ parser ที่ถูกเลือกใช้ขึ้นกับสตริงชนิดคีย์ที่ฝังอยู่ใน key blob ไคลเอนต์จึงประกาศว่าเป็น ssh-ed25519 แต่ส่งคีย์ ML-DSA มาก็ได้
  2. ในกรณีของ certificate sshd จะ deserialize คีย์สาธารณะของ CA ที่ฝังอยู่และตรวจลายเซ็นเต็มรูปแบบก่อนดูคอนฟิก ทำให้ตัวตรวจลายเซ็นทุกตัวในไบนารีเข้าถึงได้จากไคลเอนต์ใดก็ได้ที่ทำ key exchange สำเร็จ

ทีมทำ proof of concept และแก้กับผู้ดูแลหลายรอบ จนได้วิธีย้ายการตรวจเข้าไปไว้ใน parser เอง ผลคือโค้ดที่ไคลเอนต์ไม่ยืนยันตัวตนเข้าถึงได้ใน build ค่าเริ่มต้นหายไปราว 1 ใน 5 เราตรวจ release notes ของ OpenSSH 10.6 (ออก 6 ต.ค. 2026) แล้ว มีรายการ “check key and CA signature types during key parsing against allowlists … as early as possible. This reduces the attack surface presented by disabled algorithms” พร้อมเครดิต “Chris Rohlf in collaboration with Claude and Anthropic Research” จริง และรุ่นเดียวกันนี้ก็เปิดใช้อัลกอริทึม hybrid ssh-mldsa44-ed25519 อย่างเป็นทางการแล้ว (คีย์ที่สร้างจากรุ่นทดลองเดิมต้องสร้างใหม่)

เครื่องมือ: skill 3 รอบ ที่ยังไม่เปิดให้ใช้

Anthropic รวมเทคนิคทั้งหมดไว้ใน Claude skill ตัวเดียว ที่รัน 3 รอบ แต่ละรอบเริ่มด้วย context ว่าง และรับสรุปสั้นๆ จากรอบก่อนหน้าเท่านั้น ทุกรอบ Claude ทำรายการ entry point แล้วยืนยันทุกผลลัพธ์ด้วย dynamic trace สำหรับปัญหาในค่าเริ่มต้น มันจะเขียนด่านป้องกันเองแล้วรันชุดเทสต์ของโปรเจกต์คู่กับ black-box regression suite โดยกำหนดว่าผลต้องเหมือนเดิมทุกประการ ถ้าด่านไหนเปลี่ยนพฤติกรรมของคอนฟิกที่ไม่ใช่ค่าเริ่มต้น จะส่งให้คนตัดสินใจ

แต่ skill นี้ยังไม่เปิดเผย บทความบอกเพียงว่ากำลังรวมเข้ากับ OSS Scanner (บริการสแกนฟรีสำหรับโปรเจกต์โอเพนซอร์สที่เราเพิ่งลงข่าวไปเช้านี้) และไม่ได้ระบุชื่อ 24 โปรเจกต์ที่เหลือ หรือบอกว่าผลการแก้ถูก merge ไปกี่จุด

มุมมอง AI Curator

ตัวเลขที่ควรจำคือ 94 คู่คอนฟิกที่ปิดระบบป้องกันโดยไม่เตือน มากกว่าตัวเลข 493 เพราะนี่คือปัญหาที่ทั้ง fuzzing และ code review แบบเดิมแทบไม่เคยจับได้ fuzzer ทดสอบอินพุต ไม่ได้ทดสอบเมทริกซ์ของคอนฟิก ส่วนคนรีวิวก็อ่านทีละไฟล์ แต่บั๊กแบบ “deny ด้วยชื่อโฮสต์ + ปิด reverse DNS = fail open” ต้องอาศัยการเชื่อมเอกสาร โค้ด parser และค่าเริ่มต้นเข้าด้วยกัน ซึ่งเป็นงานที่โมเดลที่อ่านโค้ดได้ทั้ง repo ทำได้ดีกว่ามาก

กรณี OpenSSH ก็มีบทเรียนที่ลึกกว่าที่บทความเล่า รุ่น 10.5 แก้แล้ว แต่ยังแก้ไม่ครบถึงสองจุด และแต่ละจุดเป็นบั๊กคลาสสิกแบบ “เช็คสิ่งที่ผู้ใช้อ้าง ไม่ได้เช็คสิ่งที่ผู้ใช้ส่งมาจริง” ในโค้ดที่ถูกตรวจละเอียดที่สุดในโลก ข้อนี้ทำให้เห็นว่าการตรวจซ้ำหลังแก้ (regression review) คุ้มพอๆ กับการหาบั๊กรอบแรก และยังสะท้อนปัญหาของช่วงเปลี่ยนผ่านไปใช้ post-quantum crypto ด้วย คือโค้ด PQ ใหม่ที่ยังไม่ผ่านการพิสูจน์ใช้เวลากว่าจะเข้าที่ แต่ถูกคอมไพล์เข้ามาและเข้าถึงได้ตั้งแต่ก่อนมีคนเปิดใช้

สำหรับทีมไทยที่ดูแลระบบ ไม่ต้องรอ skill ของ Anthropic ก็เริ่มได้ ลองให้ coding agent ตัวไหนก็ได้ทำสามงานนี้กับซอฟต์แวร์ที่ deploy อยู่ คือ (1) ทำรายการตัวเลือกคอนฟิกที่เกี่ยวกับความปลอดภัยของ reverse proxy, VPN, SSO หรือฐานข้อมูลที่ใช้ (2) เทียบกับไฟล์คอนฟิกจริงใน production โดยเน้นคู่ตัวเลือกที่ขัดกัน และ (3) ตรวจกฎ allow/deny ที่เขียนด้วยชื่อโฮสต์ งานที่ต้องทำโดยเร็วที่สุดคืออัปเดต OpenSSH เป็น 10.6 โดยเฉพาะเครื่องที่เปิดพอร์ต 22 ออกอินเทอร์เน็ต ซึ่งในไทยยังมีอยู่มาก ระยะยาว แนวคิด “ลดโค้ดที่เข้าถึงได้” น่าจะกลายเป็นงานมาตรฐานที่หน่วยงานอย่าง สกมช. ควรผลักให้ผู้ให้บริการโครงสร้างพื้นฐานสำคัญทำ เพราะได้ผลกับช่องโหว่ zero-day ที่ยังไม่มีใครรู้จักด้วย ซึ่ง patch management แบบเดิมทำไม่ได้

แหล่งข่าว

บทความนี้เรียบเรียงจากแหล่งข่าวต้นทาง — Anthropic

เนื้อหาบน blog นี้สร้างโดย AI โดยมีการกำกับบรรณาธิการจากมนุษย์

อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ

Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2

· อ่าน 5 นาที
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
เครื่องมือนักพัฒนา

กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง

ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง

· อ่าน 4 นาที
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
เครื่องมือนักพัฒนา

Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้

รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog

· อ่าน 4 นาที