ข้ามไปเนื้อหาหลัก

เจาะลึกการตรวจสอบ CI กว่า 2,864 รายการ พบระบบสีเขียวจอมปลอม

บทเรียนจากการตรวจสอบระบบ CI กว่า 2,864 รายการที่เผยให้เห็นว่าสถานะสีเขียวไม่ได้หมายความว่าระบบทำงานจริงเสมอไป

เรียบเรียงโดย AI
Inewgen
30 Jul 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)อัปเดตล่าสุด 04 Aug 2026
แชร์
เจาะลึกการตรวจสอบ CI กว่า 2,864 รายการ พบระบบสีเขียวจอมปลอม

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ตรวจสอบระบบ CI ทั้งหมด 2,864 รายการจาก 9 คลังโค้ด
  • กฎ Vale ตรวจจับ Em Dash ล้มเหลวโดยสิ้นเชิงเนื่องจากปัญหา Regular Expression
  • ระบบรายงานผลถูกตั้งค่าให้ไม่ส่งสัญญาณเตือนแม้พบข้อผิดพลาด
  • พบเครื่องมือรักษาความปลอดภัย Semgrep ไม่ได้เชื่อมต่อกับเวิร์กโฟลว์ใดๆ

คำถามสั้นๆ บน Hacker News เกี่ยวกับระบบตรวจสอบความปลอดภัยที่รันในทุก Pull Request กลายเป็นจุดเริ่มต้นให้ผู้พัฒนาท่านหนึ่งตัดสินใจนับจำนวนการตรวจสอบ CI ทั้งหมดที่เคยรันมาในชีวิตการทำงาน ซึ่งได้ตัวเลขรวมถึง 2,864 รายการ ครอบคลุมคลังโค้ด (Repositories) ทั้งหมด 9 แห่ง แม้คำตอบแรกจะดูเรียบง่าย แต่สิ่งที่ค้นพบระหว่างทางกลับน่าตกใจกว่ามาก

ตัวเลขความล้มเหลวไม่ได้กระจายตัวอย่างสม่ำเสมอ แต่จะเกิดขึ้นในรูปแบบกลุ่มก้อนช่วง 3 ถึง 4 วัน สลับกับความเงียบสงบยาวนานหลายเดือน เช่น ในช่วงปลายเดือนเมษายนเมื่อมีการดึงการตรวจสอบเหล่านี้เข้าไปใช้ในรีใช้เบิลเวิร์กโฟลว์ร่วมกัน เกิดความล้มเหลวของ cost-gate ถึง 18 ครั้งภายใน 4 วัน ระหว่างที่กำลังแก้ไขบั๊กเกี่ยวกับการดึงข้อมูลและการตรวจสอบข้อมูลรับรอง

คลังโค้ดที่มีอัตราความล้มเหลวสูงสุดในองค์กรคือคลังโค้ดที่อยู่ในขั้นตอนการตั้งค่าเท่านั้น โดยไม่มีสถานะปกติให้นำมาเฉลี่ย โดยจุดสูงสุดอยู่ที่ 57% ซึ่งเป็นเทมเพลตที่ถูกนำไปใช้โคลนต่อสำหรับโปรเจกต์อื่นๆ บริบทเหล่านี้ไม่ได้แสดงอยู่บนตัวเลขดิบ แต่มันอยู่ในความทรงจำของผู้พัฒนาเอง

code audit pipeline

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

เหตุการณ์นี้ชี้ให้เห็นถึงปัญหาคลาสสิกในกระบวนการ DevOps ที่เรียกว่า 'Silent Failures' หรือความล้มเหลวที่ไม่มีการแจ้งเตือน ซึ่งระบบอัตโนมัติอาจรายงานสถานะว่าปกติ (Green) เสมอ แม้ว่าตัวระบบตรวจสอบจะทำงานผิดพลาด ตั้งค่าไม่ถูกต้อง หรือไม่ได้รันเลยก็ตาม การตรวจสอบโค้ดแบบเจาะลึก (Audit) เป็นระยะจึงเป็นสิ่งสำคัญที่จะช่วยเปิดโปงข้อบกพร่องที่ซ่อนอยู่หลังหน้าจอแดชบอร์ดที่เขียวขจี

จุดเปลี่ยนที่ทำให้ต้องขุดคุ้ยลึกกว่าเดิมเริ่มต้นจากกฎ Vale ในไพป์ไลน์เนื้อหาที่ชื่อว่า EmDashes ซึ่งตั้งค่าระดับไว้ที่ error เพื่อป้องกันไม่ให้เครื่องหมาย Em Dash เล็ดลอดขึ้นไปบนเว็บไซต์ เนื่องจากระบบร่างบทความผ่าน Claude ที่มักใส่เครื่องหมายนี้เข้ามาเสมอ แต่ในบทความล่าสุดที่มีเครื่องหมาย Em Dash ถึง 15 ตัว ระบบ Vale กลับรายงานว่าพบข้อผิดพลาดเป็นศูนย์

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

"Here is why. Vale's existence check compiles a tokens list into a regex with word boundaries wrapped around it."

ผู้พัฒนา

สาเหตุมาจาก Regular Expression ที่ใช้ขอบเขตคำ b ซึ่งไม่สามารถจับคู่กับเครื่องหมายวรรคตอนได้ ทำให้กฎนี้รันผ่านและแสดงผลเป็นสีเขียวมาตลอดตั้งแต่วันแรกที่เขียนขึ้นมา โดยไม่มีความแตกต่างใดๆ ระหว่างกฎที่ทำงานได้จริงกับกฎที่เสีย นอกจากนี้ เมื่อแก้เรกซ์ได้แล้ว ปรากฏว่าคำสั่ง vale --no-exit ถูกตั้งค่าให้บังคับออกด้วยสถานะ 0 เสมอ และคำสั่ง grep ก็ค้นหาฟิลด์ severity ที่รูปแบบรายงานของ Vale ไม่มีอยู่จริง ทำให้การตรวจสอบนี้ไม่เคยบล็อกการสร้างใดๆ เลยในประวัติศาสตร์

ความผิดพลาดซ้อนกันสามชั้นยังเกิดขึ้นเมื่อ Vale ไปตรวจสอบเครื่องหมายในบล็อกโค้ด เนื่องจากไม่ได้กำหนดค่าแมปส่วนขยาย .mdx ทำให้ระบบปฏิบัติกับไฟล์เหมือนเป็นข้อความธรรมดา นอกจากนี้ยังพบว่า Semgrep เครื่องมือรักษาความปลอดภัยที่ถูกกำหนดในนโยบาย แท้จริงแล้วไม่ได้ถูกเชื่อมต่อเข้ากับเวิร์กโฟลว์ใดเลยในทุกคลังโค้ด รวมถึง cost-gate ที่ล้มเหลวมานานหลายเดือนเพราะไม่ได้ระบุโทเค็น GitHub App

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้