🧪 เปลี่ยนข้อตรวจพบแต่ละรายการให้เป็นหลักฐานที่รันได้และใช้เพื่อการป้องกันเท่านั้น สำหรับการเปิดเผยช่องโหว่อย่างรับผิดชอบ
สำหรับข้อตรวจพบทุกรายการในแผนผังจาก detect คำสั่งนี้จะเขียนประกาศแจ้งเตือนด้านความปลอดภัยที่อ่านจบในตัว และการทดสอบที่ยืนยัน เส้นทางที่ปลอดภัย การทดสอบจึงล้มเหลวตราบที่ปัญหายังอยู่ และผ่านเมื่อแก้โค้ดแล้ว
การทดสอบของ Lagune แยกอยู่ใน .lagune/ ต่างหากจากชุดการทดสอบของคุณเอง
วิธีใช้
- ข้อตรวจพบทุกรายการ
- ข้อตรวจพบที่ระบุชื่อ
/lagune-prove
ดูชื่อข้อตรวจพบที่ติดตามอยู่แล้ว:
npx lagune read list --findings
# Findings
# ...
# • SQL injection ในการค้นหาผู้ใช้
# ...
# จากนั้นพิสูจน์หนึ่งในนั้น
/lagune-prove SQL injection ในการค้นหาผู้ใช้
หลักการทำงาน
คำสั่งนี้อ่านซอร์สโค้ดที่ข้อตรวจพบแต่ละรายการชี้ไป แล้วเขียนไดเรกทอรีหนึ่งไดเรกทอรีต่อข้อตรวจพบที่พิสูจน์ได้ไว้ใต้ .lagune/proofs/ โดยแต่ละไดเรกทอรีมีไฟล์ 2 ไฟล์พอดี:
| ไฟล์ | คืออะไร |
|---|---|
report.test.mjs (หรือ .cjs) | ตัวการทดสอบ รันบน Poku ถ้าโปรเจกต์ของคุณใช้อยู่แล้ว ถ้าไม่ใช้ก็รันบนตัวรันการทดสอบที่มากับ Node.js จึงไม่ต้องติดตั้งอะไรเพิ่ม |
report.md | ประกาศแจ้งเตือนด้านความปลอดภัยที่อ่านจบในตัว: ระดับความรุนแรง ผลกระทบ วิธีทำให้ปัญหาเกิดซ้ำ และคำสั่งสำหรับรัน |
การพิสูจน์เขียนด้วย JavaScript เสมอ จึงนำไปใช้ได้ทุกที่ไม่ว่าโปรเจกต์ของคุณจะเขียนด้วยภาษาใด ไฟล์ดัชนี README.md ลิงก์ไปยังการพิสูจน์ทุกรายการ และให้คำสั่งเดียวสำหรับรันทั้งหมด
- คำสั่งนี้ ไม่บังคับและทำงานแยกเป็นอิสระ: ไม่ได้เป็นหนึ่งใน 5 เฟส และไม่ได้เป็นส่วนหนึ่งของห่วงโซ่การติดตาม
- คำสั่งนี้เขียนลงใน
.lagune/proofs/เท่านั้น และไม่แตะต้องอาร์ติแฟกต์ของเฟสหรือโค้ดของคุณ ซึ่งคำสั่งนี้อ่านอย่างเดียว - ข้อตรวจพบที่การทดสอบทำให้ปัญหาเกิดซ้ำไม่ได้จะไม่ได้รับการพิสูจน์ และคำสั่งนี้จะบอกให้คุณรัน
/lagune-detectกับจุดนั้นเพื่อปรับให้ตรงกับสภาพปัจจุบัน - รันซ้ำเพื่อปรับการพิสูจน์ให้ตรงกับสภาพปัจจุบัน: คำสั่งนี้จะลบไดเรกทอรีของข้อตรวจพบที่หายไปแล้วหรือทำให้เกิดซ้ำไม่ได้อีก
คำสั่งนี้รันเฉพาะเมื่อคุณเรียกใช้เท่านั้น: เอเจนต์ไม่เริ่มรันเอง
prove อ่านแผนผังจาก /lagune-detect จึงต้องรัน detect ก่อน
เพื่อการป้องกันเท่านั้น และต้องได้รับอนุญาต
ก่อนสร้างอะไรก็ตาม คำสั่งนี้จะยืนยันว่าคุณได้รับอนุญาตให้ทดสอบเป้าหมายนั้น และปฏิเสธทุกคำขอที่ต้องการ exploit ที่ใช้งานได้จริง payload สำหรับโจมตี หรือการหลบเลี่ยงการตรวจจับ การพิสูจน์แสดงพฤติกรรมที่ปลอดภัย และไม่สร้างอินพุตสำหรับโจมตีเลย
จากการพิสูจน์สู่การเปิดเผยช่องโหว่
ไฟล์ทั้ง 2 ไฟล์ของข้อตรวจพบที่พิสูจน์ได้แต่ละรายการควรอยู่ด้วยกันใน GitHub Gist แบบส่วนตัว เพื่อรายงานช่องโหว่ ไฟล์เหล่านี้เป็นหลักฐานของปัญหาที่ยังมีอยู่และยังไม่เปิดเผย .gitignore ใน .lagune/proofs/ จึงกันไฟล์เหล่านี้ไว้นอกทุก commit: แชร์ผ่าน Gist นั้นเท่านั้นจนกว่าผู้ดูแลจะแก้ปัญหาเสร็จ
การปิดข้อตรวจพบในห่วงโซ่ของ Lagune ยังเป็นหน้าที่ของ /lagune-harden และ /lagune-verify: prove สร้างหลักฐาน แต่ไม่ได้ปิดอะไร
คำถามที่พบบ่อย
ไม่ /lagune-prove เขียนหลักฐานเพื่อการป้องกันเท่านั้น: การทดสอบที่ยืนยันเส้นทางที่ปลอดภัย ซึ่งล้มเหลวตราบที่ปัญหายังอยู่และผ่านเมื่อแก้โค้ดแล้ว พร้อมประกาศแจ้งเตือนด้านความปลอดภัยสำหรับการเปิดเผยช่องโหว่อย่างรับผิดชอบ
ไฟล์ 2 ไฟล์ต่อข้อตรวจพบหนึ่งรายการ: การทดสอบ (report.test.mjs หรือ .cjs) และประกาศแจ้งเตือนด้านความปลอดภัย (report.md)
prove เขียนประกาศแจ้งเตือนด้านความปลอดภัยที่อ่านจบในตัว ซึ่งคุณแชร์ผ่านช่องทางส่วนตัวได้ เช่น GitHub Gist แบบส่วนตัว ตามแนวทางการเปิดเผยช่องโหว่อย่างรับผิดชอบ
