กรอบการวิจัยใหม่ที่มีชื่อว่า ARQ กำลังเข้ามาจัดการกับหนึ่งในปัญหาปวดหัวเรื้อรังที่สุดในด้านความปลอดภัยซอฟต์แวร์: ทำอย่างไรให้สแกนเนอร์โค้ดอัตโนมัติสามารถแจ้งเตือนบั๊กที่ถูกต้องได้จริง งานวิจัยนี้จัดทำโดย Chunyi Wang และเผยแพร่บน arXiv ในเดือนสิงหาคม 2026 โดยมุ่งเป้าไปที่การตรวจจับช่องโหว่ด้วย CodeQL ซึ่งเป็นวิธีที่ใช้กันอย่างแพร่หลายในการค้นหาข้อบกพร่องในโค้ด C และ C++ และแสดงให้เห็นว่าคิวรีตรวจจับในปัจจุบันนั้นเชื่อถือได้น้อยกว่าที่นักพัฒนาส่วนใหญ่คาดคิดมาก
Summary
ประเด็นสำคัญ
- ARQ ปรับแต่งคิวรี CodeQL C/C++ โดยอัตโนมัติด้วยหลักฐานจากการรันโปรแกรมที่สังเคราะห์ขึ้น โดยไม่ต้องใช้ชุดข้อมูลที่มีการติดป้ายกำกับหรือเทมเพลตเฉพาะช่องโหว่
- การทดสอบด้วย LLM เชิงพาณิชย์สามตัว — GPT-5.4, Claude-Sonnet-4.6 และ Gemini-3.5-flash — สามารถปรับแต่งคิวรี CodeQL อย่างเป็นทางการได้ 12 คิวรี
- คิวรีที่ผ่านการปรับแต่งตรวจพบทูโพสิทีฟเพิ่มขึ้นสูงสุด 119.8% ขณะเดียวกันยังคงความแม่นยำไว้ที่ 98.0% หรือสูงกว่า
- ARQ แก้ไขปัญหาใน GitHub สามรายการในรีโพสิทอรี CodeQL อย่างเป็นทางการ ซึ่งค้างอยู่โดยไม่มีคำตอบนานสูงสุดถึง 27 เดือน
- คิวรีที่ปรับแต่งแล้วค้นพบบั๊กใหม่สองรายการในไลบรารีโลกจริงอย่าง libpng และ zlib
ข้อจำกัดของคิวรี CodeQL ปัจจุบันในการตรวจจับช่องโหว่ C/C++
ตัววิเคราะห์แบบสแตติกได้กลายเป็นส่วนมาตรฐานของเวิร์กโฟลว์ด้านความปลอดภัยซอฟต์แวร์ และ CodeQL ก็เป็นหนึ่งในเครื่องมือที่ถูกนำมาใช้สแกนโค้ดเบส C/C++ อย่างแพร่หลาย เครื่องมือเหล่านี้ทำงานโดยการเข้ารหัสรูปแบบโค้ดที่มีช่องโหว่ที่รู้จักไว้ในรูปของคิวรีตรวจจับ จากนั้นจึงจับคู่รูปแบบเหล่านั้นกับซอร์สโค้ดของโปรแกรม แนวทางนี้ฟังดูเรียบร้อยในทางทฤษฎี แต่ในทางปฏิบัติกลับมีแรงเสียดทานอยู่มาก
การเกิดฟอลส์โพสิทีฟและฟอลส์เนกาทีฟในคิวรีที่มีอยู่
คิวรี CodeQL ที่มีอยู่ยังคงสร้างฟอลส์โพสิทีฟ คือแจ้งเตือนโค้ดที่ปลอดภัยว่าเป็นช่องโหว่โดยไม่ถูกต้อง และฟอลส์เนกาทีฟ คือพลาดข้อบกพร่องด้านความปลอดภัยจริงไปโดยสิ้นเชิง ทั้งสองผลลัพธ์นี้มีต้นทุน ฟอลส์โพสิทีฟทำให้นักพัฒนาสูญเสียเวลาไปกับการไล่ตามบั๊กที่ไม่มีอยู่จริง ขณะที่ฟอลส์เนกาทีฟปล่อยให้ช่องโหว่จริงเล็ดลอดไปถึงโปรดักชัน นี่คือช่องว่างที่ ARQ ถูกออกแบบมาเพื่ออุด และอธิบายได้ว่าทำไมการตรวจจับช่องโหว่ด้วย CodeQLจึงยังคงเป็นพื้นที่วิจัยที่มีการเคลื่อนไหวอยู่ แทนที่จะเป็นปัญหาที่แก้ไขเสร็จแล้ว
เฟรมเวิร์ก ARQ: การปรับแต่งคิวรีแบบอัตโนมัติบนพื้นฐานการรันโปรแกรม
ARQ เป็นเฟรมเวิร์กเชิงเอเจนต์ที่ปรับปรุงคิวรี CodeQL สำหรับ C/C++ โดยอัตโนมัติ ด้วยการยึดโยงกับหลักฐานจากการรันโปรแกรมที่สังเคราะห์ขึ้น แทนที่จะพึ่งพาตัวอย่างที่ติดป้ายกำกับด้วยมือหรือเทมเพลตที่สร้างด้วยมือ ความแตกต่างนี้สำคัญ เพราะเทคนิคการปรับแต่งส่วนใหญ่ก่อนหน้านี้ต้องพึ่งชุดข้อมูลที่คัดสรรหรือประวัติคอมมิต ซึ่งมีต้นทุนสูงในการสร้างและช้าในการดูแลรักษา
กลไกในการระบุจุดอ่อนของคิวรีผ่านการรันโปรแกรมที่สังเคราะห์ขึ้น
แก่นของแนวคิดเบื้องหลัง ARQ นั้นเรียบง่ายแต่ทรงพลัง: โปรแกรมที่สังเคราะห์ขึ้นจะเผยให้เห็นจุดอ่อนของคิวรีทุกครั้งที่ผลการรันจริงของมันไม่สอดคล้องกับสิ่งที่คิวรีคาดการณ์ หากโปรแกรมมีช่องโหว่จริงแต่คิวรีไม่แจ้งเตือน นั่นคือฟอลส์เนกาทีฟ หากโปรแกรมปลอดภัยจริงแต่คิวรีกลับแจ้งเตือน นั่นคือฟอลส์โพสิทีฟ สิ่งนี้ทำให้ ARQ มีกราวด์ทรูทที่สร้างขึ้นเองในตัวสำหรับตัดสินคุณภาพของคิวรี โดยไม่ต้องพึ่งการติดป้ายกำกับจากภายนอก
ลูปการปรับแต่งแบบวนซ้ำด้วย LLM โดยไม่ต้องใช้ข้อมูลติดป้ายกำกับหรือเทมเพลตเฉพาะช่องโหว่
เมื่อจุดอ่อนถูกเปิดเผย ARQ จะรันลูปการปรับแต่งแบบวนซ้ำที่ขับเคลื่อนด้วย LLM เพื่อซ่อมแซมคิวรีโดยใช้ความไม่สอดคล้องของการรันเหล่านั้นเป็นหลักฐาน นี่คือส่วนของการปรับแต่งคิวรี ARQที่ทำให้มันแตกต่างจากแนวทางก่อนหน้า ไม่มีการพึ่งชุดข้อมูลที่ติดป้ายกำกับ ไม่ต้องขุดค้นประวัติคอมมิต และไม่มีเทมเพลตเฉพาะช่องโหว่ที่ฝังอยู่ในระบบ กระบวนการปรับแต่งเป็นแบบปิดในตัวเอง ขับเคลื่อนอย่างสมบูรณ์ด้วยความไม่ตรงกันระหว่างพฤติกรรมที่คาดการณ์กับที่สังเกตได้ในโค้ดที่สังเคราะห์ขึ้น
การประเมินและผลกระทบของการปรับแต่ง ARQ ต่อคิวรี CodeQL
บททดสอบเชิงปฏิบัติของเฟรมเวิร์กการปรับแต่งใด ๆ คือมันช่วยให้ผลลัพธ์การตรวจจับดีขึ้นจริงหรือไม่ และผลลัพธ์ของ ARQ บ่งชี้ว่าดีขึ้นอย่างมาก นักวิจัยได้ปรับแต่งคิวรี CodeQL อย่างเป็นทางการ 12 คิวรี และวัดผลการปรับปรุงโดยใช้ชุดข้อมูลช่องโหว่ C/C++ ที่เป็นที่ยอมรับสองชุด ทำให้ผลลัพธ์มีจุดยึดโยงที่มีความหมายในงานวิจัยด้านการวิเคราะห์สแตติก C/C++ที่มีอยู่
ผลการปรับแต่งโดยใช้ GPT-5.4, Claude-Sonnet-4.6 และ Gemini-3.5-flash
ARQ ถูกทดสอบกับโมเดลภาษาขนาดใหญ่เชิงพาณิชย์สามตัว: GPT-5.4, Claude-Sonnet-4.6 และ Gemini-3.5-flash แต่ละโมเดลขับเคลื่อนลูปการปรับแต่งแบบวนซ้ำอย่างอิสระ ทำให้นักวิจัยสามารถเปรียบเทียบได้ว่า LLM ต่าง ๆ ทำงานกับภารกิจพื้นฐานเดียวกันได้ดีเพียงใด การออกแบบแบบหลายโมเดลนี้ช่วยเสริมความเชื่อมั่นว่าผลลัพธ์ที่ดีขึ้นมาจากระเบียบวิธีของ ARQ เอง ไม่ใช่จากลักษณะเฉพาะของโมเดลใดโมเดลหนึ่ง
การปรับปรุงประสิทธิภาพบนชุดข้อมูลมาตรฐาน Juliet v1.3 และ FormAI v2
คิวรี CodeQL ทั้งที่ผ่านการปรับแต่งด้วย ARQ และเวอร์ชันดั้งเดิมถูกนำมาเปรียบเทียบบนชุดข้อมูล Juliet v1.3 และ FormAI v2 ซึ่งเป็นชุดมาตรฐานที่ได้รับการยอมรับสำหรับประเมินเครื่องมือค้นหาช่องโหว่ คิวรีที่ปรับแต่งแล้วตรวจพบทูโพสิทีฟได้มากขึ้นอย่างมีนัยสำคัญ เพิ่มขึ้นสูงสุดถึง119.8% ขณะเดียวกันยังคงความแม่นยำอย่างน้อย 98.0% ตลอดช่วง ผลลัพธ์เช่นนี้น่าสนใจ เพราะการเพิ่มทูโพสิทีฟมักทำได้ง่ายด้วยการผ่อนเกณฑ์การตรวจจับ แต่โดยทั่วไปจะทำให้ความแม่นยำลดลงเมื่อฟอลส์โพสิทีฟเพิ่มขึ้น ผลของ ARQ แสดงรูปแบบตรงกันข้าม หมายความว่าเฟรมเวิร์กนี้ไม่ได้แค่ขยายตาข่ายให้กว้างขึ้น แต่ยังทำให้ตาข่ายคมขึ้นด้วย
การแก้ปัญหา GitHub ที่ค้างมานานและการค้นพบบั๊กใหม่ใน libpng และ zlib
นอกเหนือจากตัวเลขบนชุดทดสอบมาตรฐานแล้ว ARQ ยังให้ผลลัพธ์ที่เป็นรูปธรรมในโลกจริง เฟรมเวิร์กนี้แก้ไขปัญหา GitHub ที่ยังไม่ได้รับการแก้สามรายการในรีโพสิทอรีคิวรี CodeQL อย่างเป็นทางการ ซึ่งเปิดค้างไว้นานสูงสุดถึง 27 เดือนโดยไม่มีคำตอบ นอกจากนี้ คิวรีที่ปรับแต่งแล้วยังเปิดเผยบั๊กใหม่สองรายการใน libpng และ zlib ซึ่งเป็นไลบรารีโลกจริงที่ถูกใช้อย่างแพร่หลาย นั่นเป็นสัญญาณที่มีความหมาย: นี่ไม่ใช่แค่การทดลองเชิงวิชาการที่สร้างตัวเลขสวย ๆ บนลีดเดอร์บอร์ด แต่เป็นเครื่องมือที่ค้นพบข้อบกพร่องด้านความปลอดภัยจริงที่ไม่เคยถูกพบมาก่อนในซอฟต์แวร์ที่แอปพลิเคชันนับไม่ถ้วนพึ่งพาอยู่
เหตุใดเรื่องนี้จึงสำคัญต่อความปลอดภัยซอฟต์แวร์
ผลกระทบของงานนี้ขยายไปไกลกว่า CodeQL เอง ฟอลส์โพสิทีฟและฟอลส์เนกาทีฟเป็นปัญหาเรื้อรังในทั้งสนามของการวิเคราะห์สแตติก ไม่ใช่แค่ในเครื่องมือเดียว และวิธีการใดก็ตามที่ลดทั้งสองอย่างลงพร้อมกันได้ โดยไม่ต้องใช้ข้อมูลติดป้ายกำกับหรือเทมเพลตที่สร้างด้วยมือ ย่อมมีศักยภาพที่จะมีอิทธิพลต่อวิธีที่เครื่องมือการปรับปรุงคิวรีด้วย LLMในอนาคตถูกสร้างขึ้น สำหรับองค์กรที่พึ่งพาการสแกนอัตโนมัติเพื่อปกป้องโค้ดเบส C/C++ เฟรมเวิร์กที่เพิ่มการตรวจจับทูโพสิทีฟ ขณะเดียวกันยังคงความแม่นยำไว้เหนือ98% อาจหมายถึงชั่วโมงการทำงานของวิศวกรที่สูญเปล่าน้อยลงจากการไล่ตามสัญญาณเตือนลวง และช่องโหว่จริงที่เล็ดลอดไปโดยไม่ถูกตรวจจับน้อยลง
การค้นพบบั๊กใหม่ใน libpng และ zlib ยังตอกย้ำประเด็นสำคัญบางอย่าง: แม้แต่ไลบรารีโอเพ่นซอร์สที่มีความเป็นผู้ใหญ่และถูกตรวจสอบอย่างเข้มข้นก็ยังอาจซ่อนข้อบกพร่องที่ไม่ถูกค้นพบไว้ได้ และคิวรีตรวจจับที่ผ่านการปรับแต่งให้ดีขึ้นสามารถค้นพบข้อบกพร่องเหล่านั้นในจุดที่เครื่องมือเดิมทำไม่ได้
คำถามที่พบบ่อย
ARQ ตั้งใจจะแก้ปัญหาอะไรในการตรวจจับช่องโหว่ C/C++?
ARQ แก้ปัญหาฟอลส์โพสิทีฟและฟอลส์เนกาทีฟในคิวรี CodeQL ที่มีอยู่ โดยปรับแต่งคิวรีเหล่านั้นโดยอัตโนมัติด้วยหลักฐานจากการรันโปรแกรมที่สังเคราะห์ขึ้น
ARQ ระบุจุดอ่อนในคิวรี CodeQL ได้อย่างไร?
ARQ ตรวจพบจุดอ่อนของคิวรีทุกครั้งที่การรันของโปรแกรมที่สังเคราะห์ขึ้นไม่สอดคล้องกับคำตัดสินของคิวรี: ความไม่ตรงกันบ่งชี้ถึงฟอลส์โพสิทีฟหรือฟอลส์เนกาทีฟอย่างใดอย่างหนึ่ง
โมเดลภาษาขนาดใหญ่มีบทบาทอย่างไรใน ARQ?
ARQ ใช้ลูปการปรับแต่งแบบวนซ้ำที่ขับเคลื่อนด้วย LLM เพื่อซ่อมแซมคิวรีโดยอิงจากฟีดแบ็กจากการรัน โดยไม่ต้องใช้ข้อมูลติดป้ายกำกับหรือเทมเพลตเฉพาะช่องโหว่
ARQ แสดงให้เห็นถึงการปรับปรุงที่เป็นรูปธรรมอะไรบ้างในการปรับแต่งคิวรี CodeQL?
คิวรี CodeQL ที่ผ่านการปรับแต่งด้วย ARQ เพิ่มการตรวจจับทูโพสิทีฟได้สูงสุดถึง119.8% พร้อมความแม่นยำอย่างน้อย 98.0% แก้ไขปัญหา GitHub ที่ค้างมานานสามรายการ และค้นพบบั๊กใหม่สองรายการในไลบรารีโลกจริง
{“@context”:”https://schema.org”,”@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”ARQ ตั้งใจจะแก้ปัญหาอะไรในการตรวจจับช่องโหว่ C/C++?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”ARQ แก้ปัญหาฟอลส์โพสิทีฟและฟอลส์เนกาทีฟในคิวรี CodeQL ที่มีอยู่ โดยปรับแต่งคิวรีเหล่านั้นโดยอัตโนมัติด้วยหลักฐานจากการรันโปรแกรมที่สังเคราะห์ขึ้น.”}},{“@type”:”Question”,”name”:”ARQ ระบุจุดอ่อนในคิวรี CodeQL ได้อย่างไร?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”ARQ ตรวจพบจุดอ่อนของคิวรีทุกครั้งที่การรันของโปรแกรมที่สังเคราะห์ขึ้นไม่สอดคล้องกับคำตัดสินของคิวรี: ความไม่ตรงกันบ่งชี้ถึงฟอลส์โพสิทีฟหรือฟอลส์เนกาทีฟอย่างใดอย่างหนึ่ง.”}},{“@type”:”Question”,”name”:”โมเดลภาษาขนาดใหญ่มีบทบาทอย่างไรใน ARQ?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”ARQ ใช้ลูปการปรับแต่งแบบวนซ้ำที่ขับเคลื่อนด้วย LLM เพื่อซ่อมแซมคิวรีโดยอิงจากฟีดแบ็กจากการรัน โดยไม่ต้องใช้ข้อมูลติดป้ายกำกับหรือเทมเพลตเฉพาะช่องโหว่.”}},{“@type”:”Question”,”name”:”ARQ แสดงให้เห็นถึงการปรับปรุงที่เป็นรูปธรรมอะไรบ้างในการปรับแต่งคิวรี CodeQL?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”คิวรี CodeQL ที่ผ่านการปรับแต่งด้วย ARQ เพิ่มการตรวจจับทูโพสิทีฟได้สูงสุดถึง 119.8% พร้อมความแม่นยำอย่างน้อย 98.0% แก้ไขปัญหา GitHub ที่ค้างมานานสามรายการ และค้นพบบั๊กใหม่สองรายการในไลบรารีโลกจริง.”}}]}
บทความนี้จัดทำขึ้นด้วยความช่วยเหลือของปัญญาประดิษฐ์และผ่านการทบทวนโดยทีมบรรณาธิการแล้ว

