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

ปัญหาความปลอดภัย

finding หนึ่งรายการผูกกับการสแกนครั้งเดียว ส่วน ปัญหาความปลอดภัย (security issue) คือปัญหาเดียวกันที่ติดตามข้ามทุกบิลด์ของ repository เช่น CVE เดียวกันในแพ็กเกจและไฟล์เดียวกันจะเป็นปัญหาเดียว ไม่ว่าจะพบในกี่ commit ปัญหาที่พบใน container image จะผูกกับ repository ของ image นั้นด้วย เมื่อ repository เดียวบิลด์หลาย image แล้วพบ CVE เดียวกันในสอง image จะนับเป็นสองปัญหา แยกตาม image ฟีเจอร์นี้ใช้ได้เมื่อ workspace ของคุณเปิดใช้งานแล้ว สมาชิกและผู้ที่มีสิทธิ์สูงกว่าดูได้ที่เมนู ปัญหาความปลอดภัย ในแถบด้านข้างของ workspace รายการแสดง repository ของแต่ละปัญหา (หรือ repository ของ image สำหรับปัญหาใน image ที่ไม่มี repository) และกรองตาม repository ได้

ปัญหาเกิดขึ้นจากอะไร​

  • ปัญหาเกิดจากการสแกนที่ Loha รันเองเท่านั้น (managed Trivy scan) รายงานที่ pipeline อัปโหลดเองจะแสดงในหน้าบิลด์ แต่ไม่เปิดหรือปิดปัญหา
  • ปัญหาจะเปิดเมื่อการสแกนบน branch ที่ติดตาม พบเป็นครั้งแรก ได้แก่ branch หลักของ repository และ branch ที่นโยบาย Build Security ระบุไว้ใน protected refs บิลด์ที่ไม่มี repository ไม่มี branch ให้เทียบ จึงติดตามทุกบิลด์
  • สิ่งที่พบบน branch อื่นจะถูกเพิ่มในรายการ พบในบิลด์ ของปัญหาที่มีอยู่แล้ว แต่ไม่เปิดปัญหาใหม่และไม่เปลี่ยนสถานะของปัญหา

เมื่อเปิดการสแกน secret ตอน push push ไปยัง default branch หรือ ref ที่ป้องกันไว้จะถูกสแกนหา secret ด้วย issue ที่มาจากการสแกนนี้จะแสดง push (Push ไปที่ main) ในรายการที่พบแทน build

สถานะ​

สถานะความหมาย
เปิดอยู่พบบน branch ที่ติดตามและยังไม่ได้แก้
แก้ไขแล้วการสแกน branch ที่ติดตามที่ทำสำเร็จครบ และครอบคลุมประเภทนี้ ไม่พบปัญหานี้อีก การสแกนที่ล้มเหลวหรือไม่ครบจะไม่ปิดปัญหา
เปิดซ้ำพบอีกครั้งหลังจากแก้ไขแล้ว
ไม่ใช่ปัญหาจริงมีคนตัดสินว่าไม่ใช่ปัญหาจริง
ยอมรับความเสี่ยงมีคนยอมรับความเสี่ยงไว้จนถึงวันที่กำหนด (ไม่เกิน 365 วัน) เมื่อถึงวันนั้น ปัญหาจะกลับมาเปิดอีกครั้ง

Loha ปิดให้อัตโนมัติเฉพาะปัญหาที่เปิดอยู่หรือเปิดซ้ำเท่านั้น การตัดสินใจของคน (ไม่ใช่ปัญหาจริง หรือยอมรับความเสี่ยง) จะคงอยู่จนกว่าจะมีคนเปิดปัญหาอีกครั้งหรือถึงวันที่ยอมรับความเสี่ยง

ปัญหาใน image ติดตามแยกตาม repository ของ image ดังนั้นการสแกน image หนึ่งจะไม่ปิดปัญหาของ image อื่น ปัญหาจากบิลด์ที่ไม่มี repository จะติดตามแยกตาม project ในทุกบิลด์ และปัญหาใน image ของบิลด์เหล่านั้นจะถูกปิดแยกตาม image ในแบบเดียวกัน

กำหนดแก้ไข (SLA)​

ค่าเริ่มต้นคือ CRITICAL 7 วัน, HIGH 30 วัน, MEDIUM 90 วัน ส่วน LOW และ UNKNOWN ไม่มีกำหนด นับเวลาตั้งแต่ปัญหาเปิด และเริ่มนับใหม่เมื่อเปิดซ้ำ ตอนนี้ยังไม่มีหน้าตั้งค่ากำหนดแก้ไข ผู้ดูแลตั้งค่าผ่าน API ในฟิลด์ issueSla ของนโยบาย Build Security การบันทึกนโยบายจาก Settings → Code security จะคงกำหนดที่มีอยู่ไว้ ปัญหาที่เปิดอยู่แล้วจะใช้กำหนดใหม่ตาม ในโหมด Enforce การยืดกำหนดให้นานขึ้น (หรือยกเลิกกำหนด) ต้องให้ผู้ดูแลอีกคนอนุมัติ

การคัดกรอง​

  • สมาชิกทุกคน เสนอ "ไม่ใช่ปัญหาจริง" หรือ "ยอมรับความเสี่ยง" ได้ โดยใส่เหตุผลอย่างน้อย 10 ตัวอักษร
  • ผู้ดูแล บันทึกหรืออนุมัติ หลังยืนยันรหัสผ่านอีกครั้ง (step-up)
  • การยอมรับความเสี่ยงของปัญหา CRITICAL หรือการคัดกรอง secret ใดๆ ต้องให้ผู้ดูแล คนละคน กับผู้เสนอเป็นผู้อนุมัติ
  • เฉพาะผู้ดูแลเท่านั้นที่เปิดปัญหาที่คัดกรองแล้วให้กลับมาเปิดได้
  • ผู้ดูแลมอบหมายปัญหาให้ผู้รับผิดชอบได้ โดยต้องเป็นสมาชิกใน workspace ที่มีบทบาท member ขึ้นไป (ไม่ใช่ guest) สมาชิกแนบลิงก์ไปยัง ticket ใน tracker ของคุณได้ (เฉพาะ https)
  • ทุกการเปลี่ยนแปลงถูกเก็บไว้ในประวัติของปัญหา API key และ MCP คัดกรองไม่ได้ ต้องเป็นคนทำเท่านั้น

การคัดกรองไม่เปลี่ยนสิ่งที่ด่านบล็อก หากต้องการให้บิลด์ผ่าน ดู ข้อยกเว้นด้านความปลอดภัย

การแจ้งเตือน​

Loha ส่งข้อความหนึ่งครั้งเมื่อการสแกนพบปัญหา CRITICAL ที่เป็นปัญหาใหม่ ถูกเปิดซ้ำ หรือเพิ่งถูกยกระดับเป็น CRITICAL และหนึ่งครั้งเมื่อมีปัญหาเลยกำหนดแก้ไข แต่ละข้อความแสดงปัญหาไม่เกิน 20 รายการพร้อมจำนวนทั้งหมด ปัญหาหนึ่งจะถูกแจ้งว่าเลยกำหนดครั้งเดียวต่อหนึ่งกำหนด การเปิดปัญหาซ้ำ การยกเลิกผลคัดกรอง หรือการยอมรับความเสี่ยงหมดอายุ จะเริ่มกำหนดใหม่ ซึ่งอาจถูกแจ้งอีกครั้ง อีเมลส่งถึงผู้รับผิดชอบปัญหา หรือส่งถึงผู้ดูแล workspace เมื่อยังไม่มีผู้รับผิดชอบ หากต้องการโพสต์ไปยัง Microsoft Teams ให้เพิ่ม notification channel สำหรับ event ของปัญหาความปลอดภัยที่ Settings → Webhooks (หน้านี้แสดง event เหล่านี้เมื่อเปิดใช้ปัญหาความปลอดภัยแล้ว) โดย event คือ com.loha.security.issue.new_critical.v1 และ com.loha.security.issue.sla_breached.v1 (ดู Outbound webhooks) secret ใหม่หรือที่เปิดใหม่จากการสแกนตอน push จะแจ้งด้วย com.loha.security.issue.secret_detected.v1 แทน ทุกระดับความรุนแรง หนึ่งข้อความต่อหนึ่ง push ข้อความระบุ CVE หรือ rule แพ็กเกจ และความรุนแรง โดยไม่มีเนื้อหาไฟล์หรือค่า secret

การเก็บรักษาข้อมูล​

ปัญหาและรายการบิลด์ที่พบจะยังอยู่หลังจากรายงานการสแกนหมดอายุ และจะถูกลบเมื่อลบ workspace

CLI และ API​

loha security issues แสดงรายการปัญหา และ loha security issue <id> แสดงปัญหาเดียว ข้อมูลเดียวกันอยู่ที่ GET /api/v1/security/issues สำหรับ key ที่มี scope security:read และเอเจนต์ AI อ่านได้ผ่านเครื่องมือ MCP แบบอ่านอย่างเดียว list_security_issues และ get_security_issue การอ่านต้องมีบทบาทสมาชิกขึ้นไป รายการใน API กรองได้ด้วย status, severity, category, repositoryId, owner และ slaBreached โดย slaBreached รับเฉพาะ true ซึ่งแสดงปัญหาที่เลยกำหนดแก้ไข ไม่มีรูปแบบ "ยังไม่เลยกำหนด" ปัญหาแต่ละรายการมี repositoryName (ชื่อ owner/name ของ repository หรือ null) และ imageRepository (สำหรับปัญหาใน image หรือ null)

ดูเพิ่มเติม: Pull request แก้ไขช่องโหว่ — ให้ Loha เปิด pull request ที่แก้ issue ช่องโหว่