ผลกระทบ
ส่วนหัวการรักษาความปลอดภัยที่หายไปสามารถถูกนำไปใช้เพื่อทำการคลิกแจ็ค การเขียนสคริปต์ข้ามไซต์ (XSS) หรือรวบรวมข้อมูลเกี่ยวกับสภาพแวดล้อมของเซิร์ฟเวอร์ [S2] เมื่อส่วนหัว เช่น Content-Security-Policy (CSP) หรือ X-Frame-Options ถูกนำไปใช้อย่างไม่สอดคล้องกันในเส้นทางต่างๆ ผู้โจมตีสามารถกำหนดเป้าหมายเส้นทางเฉพาะที่ไม่ได้รับการป้องกัน เพื่อเลี่ยงผ่านการควบคุมความปลอดภัยทั่วทั้งไซต์ [S2]
ต้นเหตุ
Next.js ช่วยให้นักพัฒนากำหนดค่าส่วนหัวการตอบสนองใน next.config.js โดยใช้คุณสมบัติ headers ZXCVFIXVIBTOKEN2ZXCV การกำหนดค่านี้ใช้การจับคู่เส้นทางที่รองรับไวด์การ์ดและนิพจน์ทั่วไป [S2] ช่องโหว่ด้านความปลอดภัยมักเกิดจาก:
- การครอบคลุมเส้นทางที่ไม่สมบูรณ์: รูปแบบไวด์การ์ด (เช่น
/path*) อาจไม่ครอบคลุมเส้นทางย่อยที่ต้องการทั้งหมด โดยปล่อยให้หน้าที่ซ้อนกันโดยไม่มีส่วนหัวการรักษาความปลอดภัย ZXCVFIXVIBTOKEN1ZXCV - การเปิดเผยข้อมูล: ตามค่าเริ่มต้น Next.js อาจมีส่วนหัว
X-Powered-Byซึ่งเปิดเผยเวอร์ชันเฟรมเวิร์ก เว้นแต่จะปิดใช้งานอย่างชัดเจนผ่านการกำหนดค่าpoweredByHeader[S2] - CORS การกำหนดค่าไม่ถูกต้อง: ส่วนหัว
Access-Control-Allow-Originที่กำหนดไว้อย่างไม่เหมาะสมภายในอาร์เรย์headersสามารถอนุญาตให้มีการเข้าถึงข้ามต้นทางไปยังข้อมูลที่ละเอียดอ่อน [S2]
การแก้ไขคอนกรีต
- รูปแบบเส้นทางการตรวจสอบ: ตรวจสอบให้แน่ใจว่ารูปแบบ
sourceทั้งหมดในnext.config.jsใช้ไวด์การ์ดที่เหมาะสม (เช่น ZXCVFIXVIBTOKEN2ZXCV) เพื่อใช้ส่วนหัวทั่วโลกเมื่อจำเป็น [S2] - ปิดการใช้งานลายนิ้วมือ: ตั้งค่า
poweredByHeader: falseในnext.config.jsเพื่อป้องกันไม่ให้ส่วนหัวX-Powered-Byถูกส่ง [S2] - จำกัด CORS: ตั้งค่า
Access-Control-Allow-Originให้เป็นโดเมนที่เชื่อถือได้เฉพาะ แทนที่จะเป็นไวด์การ์ดในการกำหนดค่าheaders[S2]
วิธีทดสอบ FixVibe
FixVibe สามารถทำการสอบสวนที่มีรั้วรอบขอบชิดที่ใช้งานอยู่ได้โดยการรวบรวมข้อมูลแอปพลิเคชันและเปรียบเทียบส่วนหัวความปลอดภัยของเส้นทางต่างๆ ด้วยการวิเคราะห์ส่วนหัว X-Powered-By และความสอดคล้องของ Content-Security-Policy ข้ามความลึกของเส้นทางที่แตกต่างกัน ZXCVFIXVIBTOKEN4ZXCV จึงสามารถระบุช่องว่างของการกำหนดค่าใน next.config.js
