DevSecOps คือแนวทางที่ฝังการตรวจความปลอดภัยไว้ในทุกขั้นตอนของการเขียนและปล่อยซอฟต์แวร์ ไม่รอไปตรวจตอนท้ายสุด ทุกครั้งที่ทีมแก้งาน เครื่องมืออัตโนมัติจะตรวจทั้งโค้ดและระบบที่รันอยู่ เครื่องมือที่ใช้บ่อยมี 3 ชนิด ได้แก่ SAST (ตรวจซอร์สโค้ดซึ่งเป็นโค้ดต้นฉบับ โดยไม่ต้องรันโปรแกรม) DAST (ทดสอบแอปที่กำลังรันอยู่จากภายนอก เหมือนผู้โจมตีลองเจาะ) และ SCA (ตรวจไลบรารี คือชุดโค้ดสำเร็จรูปของบุคคลที่สามที่ซอฟต์แวร์นำมาใช้ ว่ามีช่องโหว่ที่เปิดเผยแล้วหรือไม่) บทความนี้อธิบายว่าทั้ง 3 ชนิดต่างกันอย่างไร ควรวางไว้ตรงไหนของสายงานพัฒนา และเริ่มใช้อย่างไรไม่ให้การแจ้งเตือนท่วมทีม

DevSecOps ในทางปฏิบัติ

ทีมพัฒนาส่วนใหญ่มี CI/CD pipeline อยู่แล้ว คือสายงานอัตโนมัติที่ build (ประกอบโค้ดให้เป็นซอฟต์แวร์) ทดสอบ และปล่อยซอฟต์แวร์ทุกครั้งที่โค้ดเปลี่ยน DevSecOps คือการแทรกการตรวจความปลอดภัยเข้าไปในสายงานนี้ โดยทั่วไป ช่องโหว่ที่เจอตอนเขียนโค้ดแก้ง่ายกว่าช่องโหว่ที่เจอหลังระบบขึ้นใช้งานจริง แนวคิดนี้มักเรียกว่า shift left คือย้ายการตรวจไปไว้ต้นทางของงาน

SAST DAST และ SCA ต่างกันอย่างไร

เครื่องมือทั้ง 3 ชนิดมองซอฟต์แวร์คนละมุม จึงตอบคำถามคนละข้อ

  • SAST: ตรวจซอร์สโค้ดที่ทีมเขียนเอง โดยไม่ต้องรันโปรแกรม ใช้ได้ตั้งแต่ช่วงเขียนโค้ด เพื่อหาช่องโหว่ ข้อผิดพลาดในการเขียนโปรแกรม และโค้ดที่ไม่เป็นไปตามมาตรฐานการเขียนโค้ด
  • DAST: ส่งข้อมูลโจมตีจำลองเข้าไปในแอปที่กำลังรันอยู่ เหมือนผู้โจมตีที่มองไม่เห็นซอร์สโค้ด (เรียกว่าการทดสอบแบบ black-box) เพื่อหาช่องโหว่ เช่น SQL injection (การแทรกคำสั่งฐานข้อมูลผ่านช่องกรอกข้อมูล) และ XSS (cross-site scripting คือการแทรกสคริปต์ให้ไปทำงานในเบราว์เซอร์ของผู้ใช้) รวมถึงปัญหาการยืนยันตัวตนและการตั้งค่าเซิร์ฟเวอร์ผิดพลาด DAST ไม่ต้องใช้ซอร์สโค้ด
  • SCA: ตรวจไลบรารีโอเพนซอร์สและไลบรารีของบุคคลที่สามที่ซอฟต์แวร์เรียกใช้ ว่ามีช่องโหว่ที่เปิดเผยต่อสาธารณะแล้วหรือไม่ และแต่ละตัวใช้สัญญาอนุญาต (license) แบบใด
INFOGRAPHIC
ซอฟต์แวร์หนึ่งตัว มองได้ 3 มุม
ซอฟต์แวร์ขององค์กร
แต่ละเครื่องมือเห็นไม่เหมือนกัน
SAST
โค้ดที่ทีมเขียนเอง ไม่ต้องรันแอป
SCA
ไลบรารีของบุคคลที่สามที่นำมาใช้
DAST
แอปที่รันอยู่ มองจากภายนอก

ไม่มีเครื่องมือชนิดใดครอบคลุมได้ทุกเรื่อง SCA หาได้เฉพาะช่องโหว่ที่เปิดเผยแล้วในส่วนประกอบที่รู้จัก และไม่ตรวจโค้ดที่ทีมเขียนเอง SAST ไม่เห็นพฤติกรรมของระบบตอนรันจริง และผลบางรายการอาจไม่ใช่ช่องโหว่จริง เรียกว่า false positive (การแจ้งเตือนผิดพลาด) จึงต้องมีคนคัดกรองว่ารายการไหนจริง DAST ทดสอบได้เฉพาะแอปที่รันอยู่ และมักบอกไม่ได้ว่าปัญหามาจากโค้ดบรรทัดใด ด้วยเหตุนี้องค์กรจึงใช้ทั้ง 3 ชนิดร่วมกัน

วางการตรวจไว้ตรงไหนของสายงาน

ตัวอย่างการวางต่อไปนี้เป็นแนวทางที่พบบ่อย ไม่ใช่ข้อบังคับ ทีมปรับได้ตามเครื่องมือและเวลาที่มี หลักคิดคือให้เครื่องมือที่ตรวจเร็วและไม่ต้องมีแอปรันอยู่ ไปอยู่ต้นสายงาน ส่วนเครื่องมือที่ต้องมีแอปรันอยู่ ให้ไปอยู่หลังติดตั้งแอปในระบบทดสอบ OWASP DevSecOps Guideline ระบุว่าเพิ่มระบบอัตโนมัติทีละส่วนและปรับให้เข้ากับกระบวนการพัฒนาของตนได้ รายการ pipeline พื้นฐานของแนวทางนี้วาง SCA เป็นลำดับที่สอง ต่อจากการสแกนหาความลับที่รั่วในที่เก็บโค้ด และก่อน SAST กับ DAST โดยไม่ได้ระบุว่าเป็นลำดับที่บังคับ

  • ตอนเขียนโค้ด: ตรวจหารหัสผ่านหรือ token ที่เผลอใส่ลงในโค้ด (เรียกว่า secrets scanning) ก่อนโค้ดเข้าที่เก็บโค้ดกลาง (repository)
  • ตอนส่งโค้ดเข้าตรวจ (pull request คือคำขอรวมโค้ด ที่ผู้เขียนส่งให้ทีมตรวจก่อนรวมเข้าโค้ดหลัก): รัน SCA และ SAST แล้วแสดงผลให้ผู้เขียนเห็นทันที
  • ตอน build: ตรวจไลบรารีอีกรอบ และสร้าง SBOM (รายการส่วนประกอบของซอฟต์แวร์) เก็บไว้คู่กับงานที่ build ออกมา
  • ตอนทดสอบในระบบทดสอบ (staging): รัน DAST กับแอปที่ติดตั้งแล้ว อาจตั้งให้รันทุกคืน
  • หลังขึ้นระบบจริง: เฝ้าดูช่องโหว่ใหม่ของไลบรารีที่ใช้อยู่อย่างต่อเนื่อง เพราะมีช่องโหว่ใหม่ประกาศได้ทุกวัน แม้โค้ดของเราไม่ได้เปลี่ยน
INFOGRAPHIC
ตัวอย่างจุดตรวจ 5 จุดในสายงาน
1
ตอนเขียนโค้ด
ตรวจรหัสผ่านและ token ในโค้ด
2
ตอนส่งโค้ดเข้าตรวจ
รัน SCA และ SAST
3
ตอน build
ตรวจไลบรารีซ้ำ สร้าง SBOM
4
ตอนทดสอบในระบบทดสอบ
รัน DAST กับแอปที่ติดตั้งแล้ว
5
หลังขึ้นระบบจริง
เฝ้าดูช่องโหว่ใหม่ของไลบรารี

การตรวจแบบอื่นในสายงานเดียวกัน

OWASP DevSecOps Guideline ยังรวมการตรวจแบบอื่นที่เติมเพิ่มได้ภายหลัง

  • การตรวจ IaC (infrastructure as code คือไฟล์ที่ใช้สร้างระบบโครงสร้างพื้นฐานโดยอัตโนมัติ): ตรวจไฟล์ เช่น Terraform และ Helm chart ก่อนนำไปสร้างระบบจริง
  • IAST (การตรวจจากภายในแอป ขณะที่แอปรันและกำลังถูกทดสอบ): ตัวตรวจฝังอยู่ในแอป จึงเห็นการทำงานจริงระหว่างทดสอบ
  • ความปลอดภัยของห่วงโซ่อุปทานซอฟต์แวร์ (supply chain): เช่น SBOM การเซ็นรับรองไฟล์ที่ build ออกมา และการรักษาความปลอดภัยของ CI/CD pipeline ดู SBOM และความปลอดภัยของห่วงโซ่อุปทานซอฟต์แวร์
  • ความปลอดภัยของ API (ช่องทางที่แอปเปิดให้โปรแกรมอื่นเรียกใช้): ตรวจ API ที่แอปเปิดให้ใช้ แยกจากหน้าเว็บ

โค้ดที่ AI ช่วยเขียนควรผ่านการตรวจชุดเดียวกับโค้ดที่คนเขียน ดู ความปลอดภัยของ AI Coding Assistant และ Vibe Coding ส่วนประเภทช่องโหว่ที่พบบ่อยในเว็บแอปพลิเคชันสรุปไว้ใน สรุป OWASP Top 10 สำหรับเว็บแอปพลิเคชัน

วัดความพร้อมด้วยกรอบอ้างอิง

NIST SP 800-218 หรือ SSDF (กรอบแนวปฏิบัติสำหรับพัฒนาซอฟต์แวร์อย่างปลอดภัย) แบ่งแนวปฏิบัติเป็น 4 กลุ่ม ได้แก่ เตรียมองค์กร (PO) ปกป้องซอฟต์แวร์ (PS) สร้างซอฟต์แวร์ให้ปลอดภัย (PW) และตอบสนองต่อช่องโหว่ (RV) งานตรวจโค้ดและทดสอบซอฟต์แวร์อยู่ในกลุ่ม PW เป็นหลัก

SSDF เวอร์ชัน 1.1 เป็นฉบับสมบูรณ์ (กุมภาพันธ์ 2022) NIST ออกฉบับร่างเวอร์ชัน 1.2 (SP 800-218 Rev. 1) เมื่อ 17 ธันวาคม 2025 และปิดรับความเห็นเมื่อ 30 มกราคม 2026 หน้ารวมเอกสาร SSDF ที่ตรวจเมื่อ 27 ตุลาคม 2026 ยังแสดงเวอร์ชัน 1.2 เป็นฉบับร่าง ควรตรวจสถานะล่าสุดที่เว็บไซต์ NIST ก่อนอ้างอิง

OWASP SAMM (แบบจำลองวัดระดับความพร้อมด้านความปลอดภัยของการพัฒนาซอฟต์แวร์) ช่วยให้องค์กรรู้ว่าตอนนี้อยู่ตรงไหนและควรไปต่อทางไหน แบ่งเป็น 5 ด้านหลักของธุรกิจ (business function) ได้แก่ Governance (ธรรมาภิบาล) Design (ออกแบบ) Implementation (พัฒนา) Verification (ตรวจสอบ) และ Operations (ปฏิบัติการ) แต่ละด้านมี 3 แนวปฏิบัติ รวมเป็น 15 แนวปฏิบัติ การทดสอบความปลอดภัย (Security Testing) อยู่ในด้าน Verification หน้าโครงการ OWASP ระบุเวอร์ชันล่าสุดเป็น 2.2.0

ข้อผิดพลาดที่พบบ่อย

  • เปิดทุกกฎของเครื่องมือตั้งแต่วันแรก: ผลการตรวจหลายร้อยรายการท่วมทีมจนไม่มีใครอ่าน
  • ให้ build ล้มทุกครั้งที่เจอผลการตรวจ โดยยังไม่เคยทดลองใช้ก่อน: ทีมจะหาทางปิดเครื่องมือแทนที่จะแก้ปัญหา
  • มองผล SAST ทุกรายการว่าเป็นช่องโหว่จริง: ไม่มีขั้นคัดกรอง และไม่มีใครตัดสินว่ารายการนั้นจริงหรือไม่
  • ใช้เครื่องมือชนิดเดียวแล้วเข้าใจว่าครอบคลุมทุกเรื่อง: เช่น มี SCA แต่ไม่มีการตรวจโค้ดที่ทีมเขียนเอง
  • สแกนแล้วไม่มีเจ้าของรับผิดชอบการแก้: รายงานค้างอยู่โดยไม่มีผู้รับงานและไม่มีกำหนดเวลา
  • สแกนเฉพาะก่อนปล่อยครั้งสุดท้าย: ช่องโหว่ใหม่ของไลบรารีที่ใช้อยู่อาจประกาศหลังปล่อยซอฟต์แวร์แล้ว
INFOGRAPHIC
ข้อผิดพลาดกับแนวปฏิบัติ

ข้อผิดพลาด

  • เปิดทุกกฎตั้งแต่วันแรกผลการตรวจท่วมทีม
  • ใช้เครื่องมือชนิดเดียวเข้าใจว่าครอบคลุมทุกเรื่อง
  • สแกนแล้วไม่มีเจ้าของรายงานค้าง ไม่มีใครแก้

แนวปฏิบัติ

  • เริ่มจากโหมดรายงานอย่างเดียวดูปริมาณก่อนบล็อก build
  • ใช้ SAST DAST SCA ร่วมกันครอบคลุมทั้ง 3 มุมมอง
  • ตกลงกฎและเจ้าของงานรู้ว่าอะไรบล็อก ใครแก้ เมื่อไร

ขั้นแรกที่ทำได้ทันที

  • ทำรายการระบบ: จดแอปที่ทีมพัฒนาเอง ภาษาโปรแกรมที่ใช้ และสายงาน build ของแต่ละแอป
  • เริ่มจาก SCA ในโหมดรายงานอย่างเดียว: แสดงผลโดยยังไม่บล็อกการ build เพื่อดูว่าไลบรารีที่ใช้อยู่มีช่องโหว่มากแค่ไหน
  • ตรวจหารหัสผ่านและ token ในโค้ด: เปิดใช้ที่ที่เก็บโค้ดกลาง เพื่อจับความลับที่เผลอใส่ลงไป
  • เพิ่ม SAST กับโค้ดใหม่ก่อน: เลือกกฎที่ตรวจช่องโหว่ร้ายแรงก่อน แล้วค่อยขยายเพิ่ม
  • ตั้ง DAST ในระบบทดสอบ: สแกนเฉพาะระบบที่องค์กรเป็นเจ้าของและได้รับอนุญาตให้ทดสอบ
  • ตกลงกฎและเจ้าของงาน: ช่องโหว่ระดับความรุนแรงใดต้องบล็อก build ใครคัดกรอง ใครแก้ และต้องแก้ภายในกี่วัน ดูวิธีจัดลำดับความสำคัญใน โปรแกรมบริหารจัดการช่องโหว่

หากต้องการทราบว่าการพัฒนาและทดสอบซอฟต์แวร์ขององค์กรอยู่ในระดับใดเมื่อเทียบกับแนวปฏิบัติทั่วไป ลองใช้ แบบประเมินตนเอง

แหล่งอ้างอิงและข้อมูลเพิ่มเติม