HTTP Parameter Contamination คืออะไร และทำไมจึงเป็นความเสี่ยงที่แท้จริง?

การปรับปรุงครั้งล่าสุด: 19/04/2026
ผู้แต่ง: ไอแซก
  • ช่องโหว่ HTTP Parameter Pollution ใช้ประโยชน์จากพารามิเตอร์ที่ซ้ำกันเพื่อเปลี่ยนแปลงตรรกะของเว็บแอปพลิเคชันโดยอาศัยลำดับความสำคัญของค่า
  • ผลกระทบของมันมีตั้งแต่ความผิดพลาดเล็กน้อยไปจนถึงการข้ามขั้นตอนการตรวจสอบสิทธิ์และการหลบเลี่ยง WAF ซึ่งอาจส่งผลกระทบถึงผู้ให้บริการรายใหญ่ได้ด้วย
  • การตรวจจับอัตโนมัติมีข้อจำกัด ดังนั้นจึงจำเป็นต้องใช้เครื่องมือเฉพาะ การทดสอบด้วยตนเอง และแนวทางการพัฒนาที่ปลอดภัยที่ดีควบคู่กันไป
  • การทำความเข้าใจว่าแต่ละสแต็กจัดการกับพารามิเตอร์ที่ซ้ำกันอย่างไรเป็นกุญแจสำคัญในการลดปัญหา HPP และหลีกเลี่ยงความไม่สอดคล้องกันระหว่างการตรวจสอบและการใช้งานจริง

ความปลอดภัยบนเว็บและการปนเปื้อนของพารามิเตอร์ HTTP

เมื่อพูดถึงความปลอดภัยของเว็บแอปพลิเคชัน หลายคนมักนึกถึงแต่เรื่องนี้ การโจมตีแบบ SQL Injection, XSS หรือความล้มเหลวในการตรวจสอบสิทธิ์อย่างไรก็ตาม เป็นเวลาหลายปีแล้วที่มีเทคนิคเงียบๆ อย่างหนึ่งที่ยังคงไม่ถูกสังเกตเห็นในการตรวจสอบหลายๆ ครั้ง นั่นคือ การปนเปื้อนหรือการปนเปื้อนของพารามิเตอร์ HTTP ซึ่งรู้จักกันในชื่อ... การปนเปื้อนของพารามิเตอร์ HTTP (HPP) o การปนเปื้อนของพารามิเตอร์ HTTP

ช่องโหว่ประเภทนี้ใช้ประโยชน์จากวิธีการจัดการที่แตกต่างกันของเทคโนโลยีเซิร์ฟเวอร์และเฟรมเวิร์กต่างๆ พารามิเตอร์ซ้ำกันในคำขอ HTTP เดียวกันหากแอปพลิเคชันไม่ได้เตรียมพร้อมรับมือ ผู้โจมตีสามารถเปลี่ยนแปลงตรรกะภายใน ข้ามการตรวจสอบความถูกต้อง หลอกลวงไฟร์วอลล์แอปพลิเคชันเว็บ (WAF) และแม้กระทั่งควบคุมฟังก์ชันการทำงานที่สำคัญ เช่น การตรวจสอบสิทธิ์หรือการจัดการสิทธิ์ได้

แนวคิดเกี่ยวกับพารามิเตอร์และลำดับความสำคัญของ HTTP

พารามิเตอร์ HTTP ในเว็บแอปพลิเคชัน

ในเว็บไซต์สมัยใหม่แทบทุกแห่ง ผู้ใช้ส่งข้อมูลผ่านทาง พารามิเตอร์ HTTP ใน URL หรือในเนื้อหาคำขอพารามิเตอร์เหล่านี้ช่วยให้เบราว์เซอร์สามารถส่งข้อมูลไปยังแอปพลิเคชันได้ เช่น การค้นหา ข้อมูลจากแบบฟอร์ม ตัวเลือกในแบบสำรวจ ความคิดเห็น ข้อมูลการเข้าสู่ระบบ เป็นต้น

ในการร้องขอแบบ GET ทั่วไป ข้อมูลจะถูกส่งผ่านทาง สตริงคำค้นหา (ทุกอย่างที่อยู่หลังเครื่องหมาย ? ใน URL)คู่คีย์/ค่าจะคั่นด้วยสัญลักษณ์แอมเปอร์แซนด์ (&) ในคำขอ POST นั้น สามารถอยู่ในส่วนเนื้อหาได้ แต่โดยปกติแล้วตรรกะของแอปพลิเคชันบนเซิร์ฟเวอร์จะจัดการในลักษณะที่คล้ายคลึงกันมาก: คีย์ที่มีค่าที่เกี่ยวข้องอย่างน้อยหนึ่งค่า.

ภาษาโปรแกรมและเฟรมเวิร์กจำนวนมากมีวิธีการในการได้มาซึ่งทั้งสองอย่าง ค่าเดียวของพารามิเตอร์ เช่น รายการค่าทั้งหมดหากพารามิเตอร์นั้นปรากฏซ้ำๆ ซึ่งเป็นเรื่องปกติ ตัวอย่างเช่น กับ ช่องทำเครื่องหมายที่อนุญาตให้เลือกหลายรายการโดยที่ชื่อพารามิเตอร์เดียวกันปรากฏหลายครั้ง

ปัญหาเกิดขึ้นเมื่อนักพัฒนาตั้งสมมติฐานว่า แต่ละพารามิเตอร์จะมีค่าเพียงค่าเดียวเท่านั้น และใช้ฟังก์ชันที่ส่งคืนค่าเดียว ในขณะที่เบราว์เซอร์ (หรือผู้โจมตี) ส่งค่าหลายค่าที่มีชื่อเดียวกัน ณ จุดนี้ แนวคิดสำคัญประการหนึ่งจึงเข้ามามีบทบาท: ลำดับความสำคัญของค่านิยม.

ขึ้นอยู่กับภาษา เฟรมเวิร์ก และเว็บเซิร์ฟเวอร์ การปรากฏหลายครั้งของพารามิเตอร์เดียวกันอาจส่งผลให้เกิดพฤติกรรมหลายอย่าง เช่น ค่าแรกที่ได้รับที่เขารับ ค่าสุดท้าย หรือที่ถูกสร้างขึ้น การรวมกันของทุกอย่าง (ตัวอย่างเช่น การต่อกันด้วยเครื่องหมายจุลภาค)ไม่มีมาตรฐานเดียว ดังนั้นเทคโนโลยีแต่ละชุดจึงอาจทำงานแตกต่างกัน ซึ่งอาจนำไปสู่สถานการณ์ที่อันตรายอย่างยิ่ง

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

HTTP Parameter Pollution (HPP) คืออะไร?

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

กล่าวอีกนัยหนึ่ง HPP ใช้ประโยชน์จากวิธีการที่แอปพลิเคชันทำงาน โปรแกรมนี้สามารถสร้าง URL ขึ้นใหม่ ประมวลผลแบบฟอร์ม และจัดการกับพารามิเตอร์ที่ซ้ำกันได้หากข้อมูลที่ป้อนเข้ามาไม่ได้รับการตรวจสอบอย่างถูกต้อง ผู้โจมตีสามารถบังคับให้แอปพลิเคชันตีความค่าอื่นนอกเหนือจากที่คาดหวัง หรือรวมพารามิเตอร์เพิ่มเติมในลิงก์ แบบฟอร์ม และการเปลี่ยนเส้นทางได้

เทคนิค HPP ได้รับการเปิดเผยต่อสาธารณะโดย สเตฟาโน ดิ เปาลา และลูก้า คาเรตโตนี่ ในการประชุม OWASP AppSec 2009 และตั้งแต่นั้นมาก็มีการบันทึกข้อมูลเหล่านี้ไว้ สถานการณ์การโจมตีหลายรูปแบบแต่แม้กระทั่งในปัจจุบัน ช่องโหว่เหล่านี้ก็ยังไม่เป็นที่รู้จักมากเท่ากับช่องโหว่อื่นๆ ที่เป็นที่รู้จักกันดีกว่า และเครื่องมืออัตโนมัติบางชนิดก็ยังไม่ครอบคลุมช่องโหว่เหล่านี้อย่างครบถ้วน

ผลกระทบของการโจมตี HTTP Parameter Pollution นั้นขึ้นอยู่กับหลายปัจจัยเป็นอย่างมาก ตรรกะเฉพาะของแอปพลิเคชันของเฟรมเวิร์กและเว็บเซิร์ฟเวอร์ ในบางกรณี ผลที่ตามมาอาจเล็กน้อย (เช่น ข้อผิดพลาดในการแสดงผล การพิมพ์ฉลากล้มเหลว เป็นต้น) แต่ในบางกรณีอาจหมายถึง... การข้ามขั้นตอนการตรวจสอบสิทธิ์ การเปลี่ยนแปลงสิทธิ์ หรือการบิดเบือนการทำงานที่สำคัญ.

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

เซิร์ฟเวอร์จัดการกับพารามิเตอร์ที่ซ้ำกันอย่างไร

องค์ประกอบทางเทคนิคที่สำคัญที่ทำให้ HPP เป็นไปได้นั้นอยู่ที่พฤติกรรมที่ไม่เท่ากันของสารต่าง ๆ เว็บเซิร์ฟเวอร์และภาษาแบ็กเอนด์ เมื่อประมวลผลพารามิเตอร์ที่ซ้ำกัน ไม่ใช่ทุกคนที่จะทำสิ่งเดียวกัน และความหลากหลายนั้นเองที่ทำให้ผู้โจมตีสามารถค้นหาช่องโหว่ได้

ในบางสภาพแวดล้อม หากเราส่ง URL ในรูปแบบดังกล่าว ตัวแปร1=ค่า1&ตัวแปร1=ค่า2เซิร์ฟเวอร์จะเก็บเฉพาะข้อมูลเท่านั้น ค่าแรก (val1) ในกรณีอื่นๆ จะใช้เวลา ค่าสุดท้ายที่ได้รับ (val2) และในบางกรณี เช่นที่เกิดขึ้นกับการกำหนดค่าบางอย่างของ IISค่าทั้งสองคือ รวมเข้าด้วยกันภายในเป็นรายการตัวอย่างเช่น คั่นด้วยเครื่องหมายจุลภาค ซึ่งแอปพลิเคชันจะต้องตีความต่อไป

  Moltbot (เดิมชื่อ Clawdbot) คืออะไร ทำงานอย่างไร และมีความเสี่ยงอะไรบ้างในการใช้งาน?

ตัวอย่างที่มักถูกยกมากล่าวอ้างคือ อาปาเช่ โดยปกติแล้ว พฤติกรรมพื้นฐานจะเก็บค่าแรกของพารามิเตอร์ไว้และละทิ้งค่าถัดไป ในขณะที่เทคโนโลยีอื่นๆ จะสร้างค่าที่แตกต่างออกไป รายการ CSV (ค่าที่คั่นด้วยเครื่องหมายจุลภาค) โดยมีค่าทั้งหมดของพารามิเตอร์ที่ปนเปื้อนนั้น หากแอปพลิเคชันแบ็กเอนด์ได้รับการปรับให้เหมาะสมกับกรณีใดกรณีหนึ่งเท่านั้น สถานการณ์ที่ควบคุมไม่ได้อาจก่อให้เกิดผลกระทบที่ไม่คาดคิดได้

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

นอกจากนี้ HPP ยังสามารถนำมาใช้เพื่อใช้ประโยชน์จาก การเปลี่ยนแปลงลักษณะนิสัยภายใน ซึ่งเป็นสิ่งที่เซิร์ฟเวอร์ทำเอง มีการบันทึกไว้แล้วว่า เซิร์ฟเวอร์บางแห่งเปลี่ยนแปลงอักขระเฉพาะบางตัว (เช่น อักขระ "]" ถูกแทนที่ด้วย "_") ในระหว่างการประมวลผล ซึ่งสามารถนำมาใช้ได้ การหลีกเลี่ยงกฎการกรองหรือเฟิร์มแวร์ WAF ที่ใช้การแสดงออกเชิงนิพจน์ (Regular Expression).

ผลที่ตามมาและสถานการณ์การใช้ประโยชน์จากโรงไฟฟ้าพลังน้ำ

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

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

นอกจากนี้ HPP ยังช่วยให้เกิด... ได้อีกด้วย ซึ่งเป็นเรื่องปกติ การปรับเปลี่ยนพฤติกรรมที่คาดหวังของแอปพลิเคชันตัวอย่างเช่น โดยการเปลี่ยนตัวกรองในเครื่องมือค้นหาภายใน การแก้ไขตัวระบุทรัพยากร การจัดการการดำเนินการลงคะแนน หรือการเปลี่ยนแปลงพารามิเตอร์ที่ควบคุมตรรกะทางธุรกิจ (เช่น แฟล็กผู้ดูแลระบบ โหมดดีบัก หรือสถานะธุรกรรม)

ผลที่ตามมาที่สำคัญอีกประการหนึ่งคือ การหลีกเลี่ยงการตรวจสอบความถูกต้องของข้อมูลป้อนเข้าหากรหัสตรวจสอบความปลอดภัยตรวจสอบการปรากฏครั้งแรกของพารามิเตอร์ แต่การดำเนินการจริงเกิดขึ้นกับการปรากฏครั้งถัดไป ผู้โจมตีสามารถหลีกเลี่ยงการควบคุมความปลอดภัยที่ดูเหมือนจะได้รับการวางระบบอย่างดีได้ กรณีเช่นนี้เคยเกิดขึ้นมาแล้วในหลายกรณี การข้ามการตรวจสอบสิทธิ์และการควบคุมการเข้าถึง.

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

ในแง่ของผลกระทบ พบว่ามีการโจมตีจากทั้งสองฝ่าย ฝั่งเซิร์ฟเวอร์ (การหลีกเลี่ยง WAF, การเปลี่ยนแปลงการเขียน URL ใหม่, การบังคับใช้เส้นทางภายในที่แตกต่างกัน) ณ ปัจจุบัน ฝั่งไคลเอนต์ (การแทรกพารามิเตอร์เข้าไปในลิงก์และแบบฟอร์มเพื่อหลอกลวงเหยื่อผ่าน URL ที่ถูกดัดแปลงเป็นพิเศษ)

ตัวอย่างคลาสสิกของการใช้ HPP ในแอปพลิเคชันการลงคะแนนเสียง

เพื่อให้เข้าใจวิธีการทำงานของการโจมตี HTTP Parameter Pollution ได้ดียิ่งขึ้น ลองพิจารณาตัวอย่างของ... แอปพลิเคชันเว็บสำหรับการลงคะแนนเสียงที่เขียนด้วย JSPโดยผู้ใช้สามารถลงคะแนนเสียงให้กับผู้สมัครที่ตนชื่นชอบในการเลือกตั้งต่างๆ ได้

แอปพลิเคชันจะรับข้อมูลผ่านพารามิเตอร์ที่เรียกว่า รหัสการเลือกตั้ง ตัวระบุการเลือกตั้งปัจจุบัน ด้วยค่านี้ เซิร์ฟเวอร์จะสร้างหน้าเว็บที่แสดงรายชื่อผู้สมัครที่มีอยู่ โดยแต่ละคนจะมีลิงก์สำหรับลงคะแนน วิธีการนี้ ร้องขอพารามิเตอร์("คู่") ใน JSP เมื่อมีค่าหลายค่าสำหรับพารามิเตอร์เดียวกัน ระบบจะส่งคืนค่าเดียวเสมอ ค่าแรก.

ลองนึกภาพ URL แบบนี้ดู: http://servidor/eleccion.jsp?eleccion_id=4568หน้าเว็บที่แสดงผลลัพธ์จะมีลิงก์สำหรับลงคะแนนให้ผู้สมัครแต่ละคน ตัวอย่างเช่น:

ลิงก์ 1ฉันลงคะแนนให้คุณไวท์
ลิงก์ 2ฉันขอลงคะแนนให้คุณนายกรีน

สมมติว่าผู้ใช้งานที่ไม่ประสงค์ดีซึ่งสนับสนุนผู้สมัครคนใดคนหนึ่ง พบว่าแอปพลิเคชันนั้นไม่ตรงตามข้อกำหนด ตรวจสอบความถูกต้องของพารามิเตอร์ choice_id ได้สำเร็จโดยอาศัยช่องโหว่ของ HPP ระบบจึงตัดสินใจแทรกพารามิเตอร์เข้าไป ผู้สมัคร ภายใน choice_id นั้น จะมีการเข้ารหัสตัวคั่นสตริงคำค้นหา

URL ที่สร้างขึ้นอาจมีลักษณะดังนี้: http://servidor/eleccion.jsp?eleccion_id=4568%26candidato%3Dgreenโปรดทราบว่าผู้โจมตีได้เข้ารหัสสัญลักษณ์ & เป็น %26 และเครื่องหมาย = เป็น %3D ดังนั้นหลังจากถอดรหัสแล้ว สัญลักษณ์เหล่านี้จะกลายเป็นพารามิเตอร์ใหม่ที่ฝังอยู่ภายในค่า election_id

เมื่อเหยื่อคลิกที่ URL ที่ถูกดัดแปลงนั้น พวกเขาจะเข้าถึงการเลือกตั้งที่ถูกต้องได้ อย่างไรก็ตาม เนื่องจากแอปพลิเคชันใช้ค่า election_id ในการสร้างลิงก์การลงคะแนน การถอดรหัสค่าที่ถูกแทรกเข้าไป... สุดท้ายแล้วจะมีผู้สมัครเพิ่มเติมอีกคนรวมอยู่ในสตริงคำค้นหาที่ได้มา.

ผลลัพธ์ที่ได้คือ ลิงก์ที่สร้างขึ้นภายในระบบจะมีลักษณะดังนี้:

ลิงก์ 1ฉันลงคะแนนให้คุณไวท์
ลิงก์ 2ฉันขอลงคะแนนให้คุณนายกรีน

ไม่ว่าเหยื่อจะคลิกลิงก์ใดในสองลิงก์นั้นก็ไม่สำคัญ: สคริปต์ voting.jsp จะได้รับพารามิเตอร์ candidate สองครั้งเสมอโดยค่าแรกจะเป็นสีเขียว เนื่องจากนักพัฒนาใช้ฟังก์ชันมาตรฐานของ Java ในการรับค่าเพียงค่าเดียว พวกเขาจึงได้รับเพียงค่าแรกของพารามิเตอร์ผู้สมัครและละทิ้งค่าที่สอง ซึ่งจะเป็นค่าโหวตจริงของผู้ใช้

ด้วยพฤติกรรมนี้ ช่องโหว่ HPP จึงเปิดโอกาสให้ผู้โจมตีสามารถใช้ประโยชน์ได้ บังคับให้คะแนนเสียงทั้งหมดที่ลงในหน้านั้นตกเป็นของผู้สมัครของพวกเขาโดยไม่คำนึงถึงตัวเลือกของเหยื่อในอินเทอร์เฟซ นี่เป็นตัวอย่างที่ชัดเจนมากว่าการจัดการพารามิเตอร์ที่ดูเหมือน "ง่าย" นั้นสามารถส่งผลกระทบโดยตรงต่อ... ความสมบูรณ์ของข้อมูลและตรรกะทางธุรกิจ.

  ComboFix คืออะไร การใช้งาน คุณลักษณะ ความคิดเห็น ราคา

การข้ามขั้นตอนการตรวจสอบสิทธิ์: กรณีของ Blogger

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

คำขอที่มีปัญหามีลักษณะประมาณนี้ (โดยตัดทอนไวยากรณ์ให้ง่ายขึ้น):

POST /add-authors.do HTTP/1.1
security_token=attackertoken&blogID=attackerblogidvalue&blogID=victimblogidvalue&authorsList=attackermail%40gmail.com&ok=เชิญ

ปัญหาอยู่ที่ข้อเท็จจริงที่ว่า กลไกการตรวจสอบสิทธิ์และความปลอดภัย ฉันกำลังดูอยู่ พารามิเตอร์แรก blogID ซึ่งมาถึงในคำขอเพื่อตรวจสอบว่าผู้ใช้มีสิทธิ์เข้าถึงบล็อกนั้นหรือไม่ อย่างไรก็ตาม การดำเนินการจริงที่ผู้เขียนรับเชิญเพิ่มเข้ามานั้นดำเนินการโดยใช้ การปรากฏครั้งที่สองของ blogIDซึ่งตรงกับบล็อกของเหยื่อ

เนื่องจากความขัดแย้งภายในนี้ วิธีการที่เซิร์ฟเวอร์จัดการจึงแตกต่างออกไป พารามิเตอร์ซ้ำกันผู้โจมตีสามารถผ่านการตรวจสอบความปลอดภัยของบล็อกของตนเองได้ แต่กลับดำเนินการโจมตีบนบล็อกอื่น ผลที่ได้คือ... การข้ามการตรวจสอบสิทธิ์โดยสมบูรณ์ ด้วยคำขอที่เรียบเรียงอย่างดีเพียงข้อเดียว

กรณีนี้แสดงให้เห็นอย่างชัดเจนว่า HPP ไม่ใช่เพียงแค่ "ความแปลกใหม่ทางเทคนิค" แต่เป็นเทคนิคที่มี... ผลกระทบที่แท้จริงต่อระบบของผู้ให้บริการรายใหญ่นอกจากนี้ ยังเน้นย้ำถึงความสำคัญของการตรวจสอบความปลอดภัยและการดำเนินการโดยใช้ค่าพารามิเตอร์ที่เหมือนกันทุกประการ โดยไม่ขึ้นอยู่กับลำดับความสำคัญที่ไม่สามารถควบคุมได้

HPP และ Web Application Firewall (WAF)

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

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

เมื่อคำขอเหล่านั้นไปถึงเว็บเซิร์ฟเวอร์ เอ็นจิ้นแอปพลิเคชัน หรือตัวเซิร์ฟเวอร์เองแล้ว จัดเรียงค่าต่างๆ ใหม่ตามตรรกะภายในของมัน (ตัวอย่างเช่น โดยการเชื่อมต่อด้วยเครื่องหมายจุลภาค หรือการนำตัวสุดท้ายมาใช้) ส่งผลให้ได้สตริงที่โดยรวมแล้วถือเป็นการโจมตี ในลักษณะนี้ เทคนิคการปนเปื้อนพารามิเตอร์แบบเดียวกันนี้จึงช่วยให้ ข้าม WAF ที่ไม่ได้ติดตั้งอุปกรณ์สำหรับวิเคราะห์ชุดค่าที่เชื่อมต่อกัน.

นอกจากนี้ WAF บางตัวที่ไม่ทำงานตามที่กำหนด พร็อกซีย้อนกลับ และระบบที่ไม่มีมุมมองที่สมบูรณ์เกี่ยวกับกระแสข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ แต่ทำหน้าที่เป็นเพียงตัวกรองเฉพาะจุด อาจมีความเสี่ยงเป็นพิเศษต่อการถูกเจาะระบบ HPP เหล่านี้ ระบบที่ใช้เทคโนโลยีต่างๆ เช่น Apache พร้อมระบบให้คะแนนพารามิเตอร์และวิเคราะห์ทางสถิติ พวกมันมักจะมีพฤติกรรมที่ดีขึ้นเมื่อเผชิญกับเทคนิคประเภทนี้

โดยสรุปแล้ว HPP แสดงให้เห็นว่าแม้จะมีการตั้งค่า WAF อย่างถูกต้องแล้วก็ตาม ความปลอดภัยไม่ได้รับการรับประกัน หากแอปพลิเคชันและตรรกะของเซิร์ฟเวอร์จัดการพารามิเตอร์ที่ซ้ำกันอย่างไม่ถูกต้อง การป้องกันจะต้องครอบคลุมและคำนึงถึงวิธีการประมวลผลคำขอในทุกระดับ

กรณีศึกษาจริง เครื่องมือ และความชุกของ HPP

งานวิจัยทางวิชาการและผลงานของผู้เชี่ยวชาญด้านความปลอดภัยแสดงให้เห็นว่า HTTP Parameter Pollution นั้นไม่ใช่เรื่องหายาก โครงการต่างๆ เช่น PAPAS (ระบบวิเคราะห์มลพิษพารามิเตอร์)ซึ่งขับเคลื่อนโดยนักวิจัยอย่างเช่น คาร์เมน ตอร์ราโน ได้รับการออกแบบมาอย่างแม่นยำเพื่อ ตรวจจับช่องโหว่ HPP โดยอัตโนมัติ ในแอปพลิเคชันเว็บขนาดใหญ่

ในการทดลองที่ดำเนินการกับผู้เข้าร่วมมากกว่า เว็บไซต์ยอดนิยม 5000 แห่ง (ตามการจัดอันดับเช่น Alexa) พบว่าเกือบทั้งหมด 30% ของสถานที่ที่ได้รับการวิเคราะห์ เว็บไซต์เหล่านั้นมีอย่างน้อยหนึ่งหน้าที่เสี่ยงต่อช่องโหว่ HPP กล่าวคือ สามารถแทรกพารามิเตอร์ที่เข้ารหัสเข้าไปในพารามิเตอร์ที่มีอยู่แล้ว และตรวจสอบว่าพารามิเตอร์นั้นปรากฏในรูปแบบที่ถอดรหัสแล้วใน URL หรือแบบฟอร์มที่ได้

สิ่งที่น่าประหลาดใจยิ่งกว่าคือบริเวณใกล้เคียงกับ... พบช่องโหว่ 47% (ซึ่งคิดเป็นประมาณ 14% ของจำนวนไซต์ทั้งหมด) นั้นเป็นเรื่องจริง สามารถใช้ประโยชน์ได้ทำให้เกิดการโจมตีที่นอกเหนือไปจากข้อบกพร่องด้านการแสดงผลแบบธรรมดา เว็บไซต์ที่ได้รับผลกระทบ ได้แก่ บริษัทใหญ่ๆ อย่างเช่น ไมโครซอฟต์ หรือ กูเกิลสิ่งนี้แสดงให้เห็นอย่างชัดเจนว่าแม้แต่บริษัทยักษ์ใหญ่ด้านเทคโนโลยีก็ไม่พ้นจากปัญหาเหล่านี้

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

นอกจากโซลูชันเฉพาะอย่างเช่น POTATOES แล้ว ยังมีส่วนขยายอื่นๆ อีกด้วย HPP Finder สำหรับ Google Chromeเครื่องมือเหล่านี้ได้รับการออกแบบมาเพื่อตรวจจับช่องทางการโจมตี HPP ที่อาจเกิดขึ้นใน URL และแบบฟอร์ม HTML แม้ว่าเครื่องมือเหล่านี้จะช่วยระบุจุดที่น่าสงสัยได้ (เช่น แบบฟอร์มที่ใช้พารามิเตอร์ซ้ำโดยไม่มีการตรวจสอบความถูกต้องอย่างเหมาะสม) แต่ก็ไม่ได้หมายความว่าจะเป็นเครื่องมือที่ครอบคลุมทุกการโจมตี นี่ไม่ใช่ทางออกที่สมบูรณ์และไม่สามารถใช้ทดแทนการตรวจสอบความปลอดภัยเชิงลึกได้.

อีกหนึ่งเครื่องมือที่ใช้กันอย่างแพร่หลายในระบบนิเวศการทดสอบความปลอดภัยคือ OWASP แซ็ปซึ่งรวมถึงส่วนขยายและสคริปต์สำหรับการทดสอบเวกเตอร์ต่างๆ รวมถึงเวกเตอร์ที่เกี่ยวข้องกับพารามิเตอร์ในสตริงคำค้นหา อย่างไรก็ตาม ในกรณีเฉพาะของ HPP ยังคงจำเป็นต้องผสานรวมเครื่องมืออัตโนมัติเข้ากับ... การวิเคราะห์ด้วยตนเองและการทำความเข้าใจขั้นตอนการทำงานของแอปพลิเคชัน.

  ตั้งค่าการแจ้งเตือนแบบกำหนดเองสำหรับการเปลี่ยนแปลงเครือข่ายหรืออุปกรณ์ใหม่ด้วย GlassWire

HPP ในเครื่องมือค้นหาภายใน และตัวอย่างเช่น Apple.com

HPP ไม่เพียงแต่พบเห็นได้ในระบบจัดการบล็อกหรือแผงควบคุมการดูแลระบบเท่านั้น แต่ยังปรากฏในที่อื่นๆ อีกด้วย ฟังก์ชันที่ดูเหมือนไม่มีพิษภัย เช่น เครื่องมือค้นหาแท็ก ในฟอรัมและชุมชนออนไลน์ ตัวอย่างที่โดดเด่นพบได้ใน... ฟอรัมของ Appleซึ่งการจัดการฉลากและพารามิเตอร์ที่ปนเปื้อนแสดงให้เห็นพฤติกรรมที่น่าสนใจ

ในฟอรัมเหล่านี้ การเลือกแท็กในอินเทอร์เฟซจะเพิ่มพารามิเตอร์เข้าไป แท็ก ค่าของแท็กที่เลือกจะถูกส่งผ่านไปยังสตริงคำค้นหาใน URL แอปพลิเคชันแบ็กเอนด์จะดึงค่านี้มาค้นหาหัวข้อที่มีแท็กนั้น และแสดงผลลัพธ์ให้ผู้ใช้เห็น หากเลือกหลายแท็ก ระบบจะเพิ่มแท็กทั้งหมดเข้าไป ในพารามิเตอร์แท็กเดียวกัน โดยคั่นด้วยตัวดำเนินการบวก (+)ดังนั้นระบบแบ็กเอนด์จึงพร้อมที่จะประมวลผลรายการนั้นแล้ว

เมื่อพารามิเตอร์ tags มีค่าซ้ำกันหลายค่า พบว่าเทคโนโลยีแบ็กเอนด์สร้างข้อผิดพลาดขึ้น รายการที่คั่นด้วยเครื่องหมายจุลภาค ไฟล์ CSV ที่มีค่าพารามิเตอร์ปนเปื้อนทั้งหมด แอปพลิเคชันสามารถประมวลผลรายการนั้นได้บางส่วน (ค้นหาแท็กต่างๆ) แต่ เครื่องพิมพ์ฉลากไม่ทำงานอย่างถูกต้อง ในช่องข้อความของเครื่องมือค้นหา

ในบริบทเฉพาะนี้ ดูเหมือนจะไม่มีช่องโหว่ด้านความปลอดภัยที่สามารถใช้ประโยชน์ได้ แต่ก็ชัดเจนว่า มีสถานการณ์บางอย่างที่ผู้พัฒนาไม่ได้พิจารณาไว้ในแอปพลิเคชันอื่นๆ ที่ไม่บริสุทธิ์ใจนัก พฤติกรรมที่คล้ายคลึงกันอาจนำไปสู่... ความไม่สอดคล้องกันระหว่างสิ่งที่ได้รับการตรวจสอบ สิ่งที่นำไปใช้ และสิ่งที่แสดงให้ผู้ใช้เห็นซึ่งจะส่งผลร้ายแรงยิ่งกว่าเดิม

การวิเคราะห์เทคโนโลยีพื้นฐานในฟอรัมต่างๆ เช่น ฟอรัมของแอปเปิล (ตัวอย่างเช่น Apache ที่ใช้ J2EE ในส่วนแบ็กเอนด์(แสดงให้เห็นว่าสแต็กสมัยใหม่จำนวนมากทำงานคล้ายกับเซิร์ฟเวอร์เช่น IIS หรือชุดค่าผสมเช่น Apache กับ Python เมื่อจัดการกับพารามิเตอร์ที่ปนเปื้อน โดยจะสร้างรายการที่คั่นด้วยเครื่องหมายจุลภาค และมอบหมายการประมวลผลขั้นสุดท้ายของค่าเหล่านั้นให้กับตรรกะของแอปพลิเคชัน)

ตัวอย่างเหล่านี้ช่วยย้ำเตือนว่า การที่มัน "ดูเหมือนจะใช้งานได้" ในกรณีปกติยังไม่เพียงพอคุณต้องทดสอบอย่างเป็นระบบว่าแอปพลิเคชันตอบสนองอย่างไรเมื่อได้รับพารามิเตอร์ซ้ำ ค่าที่เข้ารหัสแปลกๆ การรวมกันที่ผิดปกติ ฯลฯ เพราะนั่นคือจุดเด่นของ HPP

การตรวจจับและการลดผลกระทบของมลภาวะจากพารามิเตอร์ HTTP

การตรวจจับและลดผลกระทบของ HPP จำเป็นต้องใช้วิธีการแบบผสมผสานที่รวมเอาหลายแง่มุมเข้าด้วยกัน แนวทางการพัฒนาซอฟต์แวร์ที่ปลอดภัยและมีประสิทธิภาพ การกำหนดค่าเซิร์ฟเวอร์ที่เหมาะสม และการใช้เครื่องมือเฉพาะการพึ่งพา WAF เพียงอย่างเดียวในการแก้ไขปัญหาทุกอย่างนั้นไม่เพียงพอ เพราะอย่างที่เราได้เห็นกันหลายครั้งแล้ว ที่ชั้น WAF นี่แหละที่อาจถูกหลอกได้

จากมุมมองด้านการพัฒนา โปรแกรมเมอร์จำเป็นอย่างยิ่งที่จะต้องมีความรู้ความสามารถ โปรดทราบว่าพารามิเตอร์หนึ่งตัวสามารถมีได้หลายค่า และพวกเขาต้องตัดสินใจอย่างชัดเจนว่าจะจัดการกับกรณีนั้นอย่างไร พวกเขาไม่ควรพึ่งพาพฤติกรรมเริ่มต้นของภาษาหรือเฟรมเวิร์กโดยปราศจากความเข้าใจอย่างถ่องแท้ว่าลำดับความสำคัญของค่าทำงานอย่างไร

นอกจากนี้ ยังแนะนำว่า ในจุดสำคัญต่างๆ เช่น การตรวจสอบสิทธิ์ การอนุญาต การดำเนินการที่ละเอียดอ่อน หรือการเปลี่ยนแปลงสถานะที่สำคัญมีการตรวจสอบอย่างเข้มงวดว่าพารามิเตอร์ต้องปรากฏเพียงครั้งเดียวเท่านั้น โดยจะปฏิเสธคำขอที่มีพารามิเตอร์ซ้ำ หรืออย่างน้อยก็บันทึกไว้เพื่อวิเคราะห์

ในส่วนของโครงสร้างพื้นฐาน ขอแนะนำให้ตรวจสอบ... การกำหนดค่าเว็บเซิร์ฟเวอร์และเฟรมเวิร์ก เพื่อให้เข้าใจอย่างถ่องแท้ว่าเกิดอะไรขึ้นเมื่อได้รับพารามิเตอร์ที่ซ้ำกัน ไม่ว่าจะเป็นพารามิเตอร์ตัวแรก ตัวสุดท้าย หรือทั้งหมดที่นำมาต่อกัน จะถูกเก็บไว้ จากนั้นจึงสามารถปรับตรรกะของแอปพลิเคชันเพื่อหลีกเลี่ยงความคลาดเคลื่อนระหว่างการตรวจสอบความถูกต้องและการใช้งานค่าจริงได้

ในแง่ของเครื่องมือ นอกเหนือจากเครื่องสแกนช่องโหว่ทั่วไปแล้ว การใช้โซลูชันเฉพาะทางก็มีประโยชน์เช่นกัน เช่น ปาปาส หรือประเภทส่วนขยาย HPP Finder ในขั้นตอนการทดสอบ หากใช้ OWASP ZAP หรือเครื่องมือเจาะระบบอื่นๆ ควรออกแบบสคริปต์เฉพาะที่สร้างผลลัพธ์ต่างๆ คำขอที่มีพารามิเตอร์ซ้ำกันและค่าที่เข้ารหัสในรูปแบบที่แตกต่างกัน เพื่อสังเกตปฏิกิริยาของแอปพลิเคชัน

สุดท้ายนี้ สิ่งสำคัญคือต้องยอมรับว่า HPP เป็นปัญหา แพร่หลายมากกว่าที่คิดกันโดยทั่วไปโดยเฉพาะอย่างยิ่งในแอปพลิเคชันขนาดใหญ่ที่มีการพัฒนามาหลายปี การผสมผสานการฝึกอบรม การตรวจสอบโค้ด การทดสอบอัตโนมัติ และการทดสอบด้วยตนเองที่ออกแบบมาอย่างดี คือวิธีที่ดีที่สุดในการควบคุมข้อผิดพลาดเหล่านี้

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