การโจมตี CPDoS เพื่อทำให้เพจที่แสดงผ่าน CDN ไม่สามารถใช้งานได้

นักวิจัยจากมหาวิทยาลัยฮัมบูร์กและโคโลญจน์
ที่พัฒนา เทคนิคการโจมตีใหม่บนเครือข่ายการส่งเนื้อหาและพร็อกซีแคช - ซีพีดอส (การปฏิเสธการให้บริการที่เป็นพิษจากแคช) การโจมตีช่วยให้สามารถเข้าถึงเพจที่ถูกปฏิเสธจากการวางยาพิษในแคช

ปัญหาเกิดจากการที่แคช CDN ไม่เพียงแต่ทำตามคำขอให้สำเร็จเท่านั้น แต่ยังรวมถึงสถานการณ์ที่เซิร์ฟเวอร์ http ส่งกลับข้อผิดพลาดอีกด้วย ตามกฎแล้ว หากมีปัญหาในการสร้างคำขอ เซิร์ฟเวอร์จะแสดงข้อผิดพลาด 400 (คำขอไม่ถูกต้อง) ข้อยกเว้นเดียวคือ IIS ซึ่งแสดงข้อผิดพลาด 404 (ไม่พบ) สำหรับส่วนหัวที่ใหญ่เกินไป มาตรฐานอนุญาตให้แคชเฉพาะข้อผิดพลาดที่มีรหัส 404 (ไม่พบ), 405 (ไม่อนุญาตวิธีการ), 410 (หายไป) และ 501 (ไม่ได้ใช้งาน) แต่ CDN บางตัวยังแคชการตอบสนองด้วยรหัส 400 (คำขอไม่ถูกต้อง) ซึ่งขึ้นอยู่กับ ตามคำขอที่ส่งไป

ผู้โจมตีอาจทำให้ทรัพยากรดั้งเดิมส่งคืนข้อผิดพลาด “400 คำขอที่ไม่ถูกต้อง” โดยการส่งคำขอที่มีส่วนหัว HTTP ที่จัดรูปแบบในลักษณะใดลักษณะหนึ่ง CDN จะไม่คำนึงถึงส่วนหัวเหล่านี้ ดังนั้นข้อมูลเกี่ยวกับการไม่สามารถเข้าถึงเพจจะถูกแคช และคำขอของผู้ใช้ที่ถูกต้องอื่นๆ ทั้งหมดก่อนที่จะหมดเวลาอาจส่งผลให้เกิดข้อผิดพลาด แม้ว่าไซต์ดั้งเดิมจะให้บริการเนื้อหาก็ตาม โดยไม่มีปัญหาใดๆ

มีการเสนอตัวเลือกการโจมตีสามตัวเลือกเพื่อบังคับให้เซิร์ฟเวอร์ HTTP ส่งกลับข้อผิดพลาด:

  • HMO (การแทนที่วิธี HTTP) - ผู้โจมตีสามารถแทนที่วิธีการร้องขอดั้งเดิมผ่านส่วนหัว "X-HTTP-Method-Override", "X-HTTP-Method" หรือ "X-Method-Override" ซึ่งรองรับโดยบางเซิร์ฟเวอร์ แต่ ไม่ได้นำมาพิจารณาใน CDN ตัวอย่างเช่น คุณสามารถเปลี่ยนวิธี "GET" ดั้งเดิมเป็นวิธี "DELETE" ซึ่งไม่ได้รับอนุญาตบนเซิร์ฟเวอร์ หรือวิธี "POST" ซึ่งใช้ไม่ได้กับสถิติ

    การโจมตี CPDoS เพื่อทำให้เพจที่แสดงผ่าน CDN ไม่สามารถใช้งานได้

  • HHO (HTTP Header Oversize) - ผู้โจมตีสามารถเลือกขนาดส่วนหัวเพื่อให้เกินขีดจำกัดของเซิร์ฟเวอร์ต้นทางได้ แต่ไม่อยู่ภายใต้ข้อจำกัด CDN ตัวอย่างเช่น Apache httpd จำกัดขนาดส่วนหัวไว้ที่ 8 KB และ Amazon Cloudfront CDN อนุญาตส่วนหัวสูงสุด 20 KB
    การโจมตี CPDoS เพื่อทำให้เพจที่แสดงผ่าน CDN ไม่สามารถใช้งานได้

  • HMC (อักขระ HTTP Meta) - ผู้โจมตีสามารถแทรกอักขระพิเศษลงในคำขอ (\n, \r, \a) ซึ่งถือว่าไม่ถูกต้องบนเซิร์ฟเวอร์ต้นทาง แต่จะถูกละเว้นใน CDN

    การโจมตี CPDoS เพื่อทำให้เพจที่แสดงผ่าน CDN ไม่สามารถใช้งานได้

ช่องทางที่เสี่ยงต่อการโจมตีมากที่สุดคือ CloudFront CDN ที่ใช้โดย Amazon Web Services (AWS) ขณะนี้ Amazon ได้แก้ไขปัญหาด้วยการปิดใช้งานการแคชข้อผิดพลาด แต่นักวิจัยต้องใช้เวลามากกว่าสามเดือนในการเพิ่มการป้องกัน ปัญหายังส่งผลต่อ Cloudflare, Varnish, Akamai, CDN77 และ
อย่างรวดเร็ว แต่การโจมตีผ่านพวกมันนั้นจำกัดอยู่เฉพาะเซิร์ฟเวอร์เป้าหมายที่ใช้ IIS, ASP.NET, ขวด и เล่น 1. มีข้อสังเกต11% ของโดเมนกระทรวงกลาโหมสหรัฐฯ, 16% ของ URL จากฐานข้อมูล HTTP Archive และประมาณ 30% ของเว็บไซต์ 500 อันดับแรกที่จัดอันดับโดย Alexa อาจถูกโจมตีได้

วิธีแก้ปัญหาชั่วคราวเพื่อป้องกันการโจมตีทางฝั่งไซต์ คุณสามารถใช้ส่วนหัว “Cache-Control: no-store” ซึ่งห้ามการแคชการตอบสนอง ใน CDN บางแห่ง เช่น
CloudFront และ Akamai คุณสามารถปิดใช้งานการแคชข้อผิดพลาดได้ที่ระดับการตั้งค่าโปรไฟล์ เพื่อการป้องกัน คุณยังสามารถใช้ไฟร์วอลล์เว็บแอปพลิเคชัน (WAF, ไฟร์วอลล์แอปพลิเคชันเว็บ) ได้ แต่จะต้องใช้งานบนฝั่ง CDN ที่ด้านหน้าโฮสต์แคช

ที่มา: opennet.ru

เพิ่มความคิดเห็น