สวน HTTP
HTTP Garden คือชุดของเซิร์ฟเวอร์ HTTP และพรอกซีที่กำหนดค่าให้สามารถประกอบได้ พร้อมด้วยสคริปต์เพื่อโต้ตอบกับพวกเขาในลักษณะที่ทำให้การค้นหาช่องโหว่ง่ายขึ้นมาก หากต้องการสาธิตช่องโหว่เจ๋งๆ ที่คุณสามารถพบได้ด้วย HTTP Garden โปรดดูการพูดคุยเรื่อง ShmooCon 2024 ของเรา
รับทราบ
เราขอขอบคุณเพื่อนๆ ของเราที่ Galois, Trail of Bits, Narf Industries และ Dartmouth College ที่ทำให้โครงการนี้เป็นไปได้
เนื้อหานี้อ้างอิงจากงานที่ได้รับการสนับสนุนจากสำนักงานโครงการวิจัยขั้นสูงด้านกลาโหม (DARPA) ภายใต้สัญญาหมายเลข HR0011-19-C-0076
เริ่มต้นใช้งาน
การพึ่งพาอาศัยกัน
- HTTP Garden ทำงานบน x86_64 Linux และยังไม่ผ่านการทดสอบบนแพลตฟอร์มอื่นๆ
- เซิร์ฟเวอร์เป้าหมายถูกสร้างขึ้นและทำงานในคอนเทนเนอร์ Docker ดังนั้นคุณจะต้องมี Docker
- คุณจะต้องมีแพ็คเกจ Python ต่อไปนี้ซึ่งคุณสามารถรับได้จาก PyPI (เช่นด้วย
pip ) หรือจากตัวจัดการแพ็คเกจระบบของคุณ:
-
docker- สำหรับการโต้ตอบกับนักเทียบท่า
-
pyyaml- สำหรับการแยกวิเคราะห์ yaml
-
tqdm
หากคุณกำลังติดตั้งแพ็คเกจ Python ด้วยตัวจัดการแพ็คเกจระบบของคุณ โปรดทราบว่าชื่อแพ็คเกจอาจต้องขึ้นต้นด้วย py3- , python3- หรือ python- ขึ้นอยู่กับระบบ
- ฉันขอแนะนำอย่างยิ่งให้ติดตั้ง rlwrap จากตัวจัดการแพ็คเกจของคุณ เพราะมันทำให้ Garden repl สนุกยิ่งขึ้นมาก
อาคาร
docker build ./images/http-garden-soil -t http-garden-soil
รูปภาพนี้มียูทิลิตี้พื้นฐานบางอย่าง รวมถึง AFL++ แบบแยกที่อำนวยความสะดวกในการรวบรวมความครอบคลุมจากกระบวนการโดยไม่ทำลายกระบวนการเหล่านั้น
- สร้างเซิร์ฟเวอร์ HTTP และพร็อกซีบางส่วน:
docker compose build gunicorn hyper nginx haproxy nginx_proxy
แน่นอนว่ามีเป้าหมายในสวน HTTP มากกว่าเป้าหมายที่เราเพิ่งสร้างขึ้น เพียงแต่ว่าการสร้างพวกมันทั้งหมดใช้เวลานาน แม้แต่การสร้างสิ่งเล็กๆ น้อยๆ เหล่านี้ก็ยังใช้เวลาไม่กี่นาที!
วิ่ง
- เริ่มต้นเซิร์ฟเวอร์และพรอกซีบางตัว:
docker compose up gunicorn hyper nginx haproxy nginx_proxy
rlwrap python3 tools/repl.py
- กรองคำขอ GET พื้นฐานผ่าน HAProxy จากนั้นผ่านพร็อกซีย้อนกลับ Nginx จากนั้นส่งผลลัพธ์ไปยังเซิร์ฟเวอร์ต้นทาง Gunicorn, Hyper และ Nginx และแสดงว่าการตีความตรงกันหรือไม่:
garden> payload 'GET / HTTP/1.1rnHost: whateverrnrn' # Set the payload
garden> transduce haproxy nginx_proxy # Run the payload through the reverse proxies
[1]: 'GET / HTTP/1.1rnHost: whateverrnrn'
haproxy
[2]: 'GET / HTTP/1.1rnhost: whateverrnrn'
nginx_proxy
[3]: 'GET / HTTP/1.1rnHost: echornConnection: closernrn'
garden> servers gunicorn hyper nginx # Select the servers
garden> grid # Show their interpretations
g
u
n
i h n
c y g
o p i
r e n
n r x
+-----
gunicorn|✓ ✓ ✓
hyper | ✓ ✓
nginx | ✓
ดูเหมือนทุกคนจะเห็นด้วย ลองใช้เพย์โหลดที่น่าสนใจกว่านี้:
garden> payload 'POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0nrn'
garden> grid
g
u
n
i h n
c y g
o p i
r e n
n r x
+-----
gunicorn|✓ ✓ X
hyper | ✓ X
nginx | ✓
มีความคลาดเคลื่อน! นี่เป็นเพราะว่า Nginx รองรับ n เป็นบรรทัดที่ลงท้ายด้วยบรรทัดย่อย แต่ Hyper และ Gunicorn ไม่รองรับ Nginx กำลังละเมิด RFC 9112 ในทางเทคนิคที่นี่ แต่ผลกระทบน่าจะน้อยมาก
เค้าโครงไดเร็กทอรี
images
ไดเร็กทอรี images ประกอบด้วยไดเร็กทอรีย่อยสำหรับเซิร์ฟเวอร์ HTTP และทรานสดิวเซอร์แต่ละตัวใน Garden แต่ละเป้าหมายจะได้รับอิมเมจ Docker ของตัวเอง โปรแกรมทั้งหมดถูกสร้างขึ้นจากแหล่งที่มาเมื่อเป็นไปได้ เพื่อให้เราสามารถสร้างแต่ละเป้าหมายได้หลายเวอร์ชันอย่างง่ายดาย เป้าหมายทั้งหมดจะถูกกำหนดขนาดด้วย URL ที่เก็บ ( APP_REPO ) ชื่อสาขา ( APP_BRANCH ) และคอมมิตแฮช ( APP_VERSION )
tools
ไดเร็กทอรี tools ประกอบด้วยสคริปต์ที่ใช้โต้ตอบกับเซิร์ฟเวอร์ ข้างในนั้นคุณจะพบกับ
-
diagnose_anomalies.py : สคริปต์สำหรับระบุลักษณะเฉพาะของการแยกวิเคราะห์ HTTP ที่ไม่เป็นพิษเป็นภัยในระบบที่อยู่ภายใต้การทดสอบที่จะถูกละเว้นในระหว่างการคลุมเครือ -
repl.py : ส่วนต่อประสานผู้ใช้หลักกับ HTTP Garden -
update.py : สคริปต์ที่อัพเดตคอมมิตแฮชใน docker-compose.yml - ...และสคริปต์อีกสองสามตัวที่ไม่ปรากฏต่อผู้ใช้
เป้าหมาย
เซิร์ฟเวอร์ HTTP
| ชื่อ | ทำงานในพื้นที่หรือไม่? | รวบรวมความคุ้มครองแล้ว? |
|---|
| aiohttp | ใช่ | ใช่ |
| apache_httpd | ใช่ | ใช่ |
| apache_tomcat | ใช่ | เลขที่ |
| เชรูต | ใช่ | ใช่ |
| cpp_httplib | ใช่ | เลขที่ |
| dart_stdlib | ใช่ | เลขที่ |
| eclipse_grizzly | ใช่ | เลขที่ |
| eclipse_jetty | ใช่ | เลขที่ |
| รวดเร็วhttp | ใช่ | เลขที่ |
| go_stdlib | ใช่ | เลขที่ |
| กุนิคอร์น | ใช่ | ใช่ |
| น้ำ | ใช่ | ใช่ |
| haproxy_fcgi | ใช่ | เลขที่ |
| ไฮเปอร์ | ใช่ | เลขที่ |
| ไฮเปอร์คอร์น | ใช่ | ใช่ |
| เคทอร์ | ใช่ | เลขที่ |
| เชื่อถือ | ใช่ | เลขที่ |
| libmicrohttpd | ใช่ | เลขที่ |
| ลิบซุป | ใช่ | เลขที่ |
| lighttpd | ใช่ | ใช่ |
| พังพอน | ใช่ | ใช่ |
| เน็ตตี้ | ใช่ | เลขที่ |
| nginx | ใช่ | ใช่ |
| node_stdlib | ใช่ | เลขที่ |
| openlitespeed | ใช่ | เลขที่ |
| openwrt_uhttpd | ใช่ | ใช่ |
| php_stdlib.php | ใช่ | เลขที่ |
| phusion_passenger | ใช่ | เลขที่ |
| protocol_http1 | ใช่ | เลขที่ |
| เสือพูมา | ใช่ | เลขที่ |
| บริการพูดคุย | ใช่ | เลขที่ |
| พายุทอร์นาโด | ใช่ | เลขที่ |
| บิดเบี้ยว | ใช่ | เลขที่ |
| ยูนิคอร์น | ใช่ | เลขที่ |
| ยูวิคอร์น | ใช่ | ใช่ |
| พนักงานเสิร์ฟ | ใช่ | ใช่ |
| เว็บบริค | ใช่ | เลขที่ |
| ฉันคือ | เลขที่ | เลขที่ |
| openbsd_httpd | เลขที่ | เลขที่ |
ทรานสดิวเซอร์ HTTP
| ชื่อ | ทำงานในพื้นที่หรือไม่? |
|---|
| apache_httpd_proxy.apache_httpd_proxy | ใช่ |
| apache_traffic_server | ใช่ |
| go_stdlib_proxy | ใช่ |
| h2o_proxy | ใช่ |
| haproxy | ใช่ |
| haproxy_invalid | ใช่ |
| lighttpd_proxy | ใช่ |
| nghttpx | ใช่ |
| nginx_proxy | ใช่ |
| openlitespeed_proxy | ใช่ |
| ปิงกอร่า | ใช่ |
| ปอนด์ | ใช่ |
| ปลาหมึก | ใช่ |
| วานิช | ใช่ |
| อาคาไม | เลขที่ |
| awselb_classic | เลขที่ |
| awselb_application | เลขที่ |
| aws_cloudfront | เลขที่ |
| คลาวด์แฟลร์ | เลขที่ |
| อย่างรวดเร็ว | เลขที่ |
| google_classic | เลขที่ |
| google_global | เลขที่ |
| iis_proxy | เลขที่ |
| openbsd_relayd | เลขที่ |
แมลง
นี่คือข้อบกพร่องที่เราพบเมื่อใช้ HTTP Garden หากคุณพบบางส่วนของคุณเอง โปรดส่ง PR เพื่อเพิ่มลงในรายการนี้! ข้อบกพร่องแต่ละข้อมีการอธิบายไว้ในฟิลด์ต่อไปนี้:
- กรณีการใช้งาน: ประเภทของการโจมตีที่ผู้โจมตีสามารถทำได้พร้อมกับจุดบกพร่องนี้
- ข้อกำหนด: ตัวเลือกการกำหนดค่าที่จำเป็นหรือเซิร์ฟเวอร์อื่นๆ เพื่อให้สามารถใช้ประโยชน์จากจุดบกพร่องนี้ได้
- ความเสี่ยง: ไม่มี|ต่ำ|ปานกลาง|สูง ตามด้วยคำอธิบายสั้นๆ
- ไม่มี: ข้อบกพร่องนี้ไม่น่าจะสามารถนำไปใช้ประโยชน์ได้
- ต่ำ: จุดบกพร่องอาจสามารถหาประโยชน์ได้ แต่ต้องมีการกำหนดค่าที่แปลกมาก หรืออาจอาศัยพร็อกซีที่ทำงานในลักษณะที่ฉันไม่เคยเห็นมาก่อน
- ปานกลาง: ข้อบกพร่องนี้น่าจะสามารถหาประโยชน์ได้ แต่มีผลกระทบปานกลางเท่านั้น หรือต้องใช้เซิร์ฟเวอร์/ตัวแปลงสัญญาณที่ไม่น่าเป็นไปได้
- สูง: จุดบกพร่องนี้สามารถหาประโยชน์ได้ในการกำหนดค่าทั่วไปและการรวมเซิร์ฟเวอร์/ทรานสดิวเซอร์
- เพย์โหลด: เพย์โหลดตัวอย่างที่ทำให้เกิดจุดบกพร่อง
- โปรแกรมที่ได้รับผลกระทบ: รายชื่อเซิร์ฟเวอร์ที่มีจุดบกพร่องนี้ พร้อมด้วยรายงานและไทม์ไลน์การแก้ไข เนื่องจากข้อบกพร่องในการใช้งานบางอย่างเป็นเรื่องปกติ และทำให้รายการไม่เกะกะ :)
ข้อบกพร่องของเซิร์ฟเวอร์
สิ่งเหล่านี้คือข้อบกพร่องในวิธีที่เซิร์ฟเวอร์ยอมรับและตีความคำขอ
- Python
int Constructor ใช้เพื่อแยกวิเคราะห์ขนาดก้อน ดังนั้น 0x , _ , + และ - จึงถูกตีความผิด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ตีความขนาดก้อนเป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด แต่ส่งต่อตามที่เป็นอยู่
- ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 7
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0_2ernrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 1 สิงหาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 7 ตุลาคม 2023: แก้ไขในรุ่น 3.8.6
- กูนิคอร์น:
- 1 สิงหาคม 2023: รายงานผ่านฉบับ GH
- 25 ธันวาคม 2023: แก้ไขในการคอมมิต
- พายุทอร์นาโด:
- 2 สิงหาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 10 สิงหาคม 2023: แก้ไขในการคอมมิต
-
x00 , r หรือ n ได้รับอนุญาตอย่างไม่ถูกต้องในค่าส่วนหัว
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อไบต์เหล่านี้ในค่าส่วนหัว หรือยอมรับและส่งต่อ
n เป็นตัวสิ้นสุดบรรทัดส่วนหัว - ความเสี่ยง: สูง ดูข้อบกพร่องของทรานสดิวเซอร์ 10, 12 และ 16
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnHeader: vnx00raluernrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 1 สิงหาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 7 ตุลาคม 2023: แก้ไขในรุ่น 3.8.6
- กูนิคอร์น:
- 31 มกราคม 2024: รายงานผ่านปัญหา GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข
- พายุทอร์นาโด:
- 11 สิงหาคม 2023: รายงานผ่านปัญหา GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข
- ช่องว่างถูกถอดออกจากส่วนท้ายของชื่อส่วนหัวอย่างไม่ถูกต้อง
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ถือว่าช่องว่างก่อน
: เป็นส่วนหนึ่งของชื่อส่วนหัว - ความเสี่ยง: ต่ำ ฉันไม่รู้จักทรานสดิวเซอร์ที่มีช่องโหว่ใดๆ แต่ James Kettle บอกว่ามีอยู่อย่างน้อยหนึ่งตัว
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnContent-Length : 34rnrnGET / HTTP/1.1rnHost: whateverrnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 2 สิงหาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 7 ตุลาคม 2023: แก้ไขในรุ่น 3.8.6
- เชรูท:
- 4 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 4 กุมภาพันธ์ 2024: ยังไม่มีการแก้ไข
- OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- 14 สิงหาคม 2023: มอบหมาย CVE-2023-40518
- ช่องว่างถูกถอดออกจากจุดเริ่มต้นของชื่อส่วนหัวแรกอย่างไม่ถูกต้อง
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ถือว่าช่องว่างที่จุดเริ่มต้นของชื่อส่วนหัวแรกเป็นส่วนหนึ่งของชื่อส่วนหัว
- ความเสี่ยง: ต่ำ ฉันไม่ทราบว่ามีทรานสดิวเซอร์ที่มีช่องโหว่ใดๆ
- เพย์โหลด:
GET / HTTP/1.1rntContent-Length: 1rnrnX - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 20 สิงหาคม 2023: รายงานผ่านความคิดเห็นที่ปรึกษาด้านความปลอดภัยของ GH
- 7 ตุลาคม 2023: แก้ไขในรุ่น 3.8.6
- เวอร์ชัน HTTP จะถูกตีความว่าเป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET /test HTTP/1.32rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 14 ตุลาคม 2023: รายงานผ่านฉบับ GH และ PR
- 15 ตุลาคม 2023: แก้ไขในการคอมมิต
- วิธีการ HTTP ถูกตีความว่าเป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด
- กรณีการใช้งาน: บายพาส ACL
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อชื่อวิธีการที่ไม่ถูกต้องตามที่เป็นอยู่
- ความเสี่ยง: ปานกลาง ละเว้นคำอธิบายเนื่องจากยังไม่มีการรายงานข้อบกพร่องที่เกี่ยวข้อง
- เพย์โหลด:
G=":<>(e),[T];?" /get HTTP/1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 14 ตุลาคม 2023: รายงานผ่านฉบับ GH และ PR
- 15 ตุลาคม 2023: แก้ไขในการคอมมิต
- URI ไม่ได้รับการตรวจสอบความถูกต้องใดๆ
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET ! HTTP/1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 16 ตุลาคม 2023: รายงานผ่านฉบับ GH
- 16 ตุลาคม 2023: แก้ไขใน PR
- ไบต์ที่ไม่ใช่ ASCII บางไบต์ได้รับอนุญาตอย่างไม่ถูกต้องในชื่อส่วนหัว
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET / HTTP/1.1rnxefoo: barrnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 17 ตุลาคม 2023: รายงานผ่าน PR.
- 18 ตุลาคม 2023: แก้ไขโดยการรวม PR ข้างต้น
- ดาฟเน่:
- 4 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 10 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
- พังพอน:
- 13 ตุลาคม 2023: รายงานผ่านฉบับ GH
- 5 ธันวาคม 2023: แก้ไขในการคอมมิต
-
n ได้รับอนุญาตให้แยกช่องว่างในบรรทัดคำขอ
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อคำขอ HTTP/0.9 ด้วย
n ตามที่เป็นอยู่ และใช้การเชื่อมต่อพื้นฐานซ้ำ - ความเสี่ยง: ต่ำ ฉันไม่ทราบว่ามีทรานสดิวเซอร์ที่มีช่องโหว่ใดๆ
- เพย์โหลด:
GET /nHTTP/1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 17 ตุลาคม 2023: รายงานผ่าน PR.
- 18 ตุลาคม 2023: แก้ไขด้วยการผสาน
- ตัวสร้าง Python
int ใช้เพื่อแยกวิเคราะห์ค่า Content-Length ดังนั้น _ , + และ - จึงถูกตีความผิด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ตีความค่า
Content-Length เป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด แต่ส่งต่อค่าตามที่เป็นอยู่ - ความเสี่ยง: ต่ำ ฉันไม่ทราบว่ามีทรานสดิวเซอร์ที่มีช่องโหว่ใดๆ แต่ Matt Grenfeldt บอกว่ามีอย่างน้อยหนึ่งอันที่มีอยู่
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnContent-Length: +1_0rnrn0123456789 - โปรแกรมที่ได้รับผลกระทบ:
- ไอโอเอชทีพี:
- 1 สิงหาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 7 ตุลาคม 2023: แก้ไขในรุ่น 3.8.6
- CPython http.เซิร์ฟเวอร์:
- 2 เมษายน 2023: รายงานผ่านปัญหา GH
- 2 เมษายน 2023: แก้ไขในการคอมมิต
- พายุทอร์นาโด:
- 2 สิงหาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 10 สิงหาคม 2023: แก้ไขในการคอมมิต
- งาน:
- 1 มิถุนายน 2023: รายงานผ่านฉบับ GH
- 7 มิถุนายน 2023: แก้ไขในคอมมิต 88c5c78
- คำขอที่มี
Transfer-Encoding: chunked ได้รับการยอมรับและถือว่าไม่มีเนื้อหาข้อความ
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อคำขอที่มีส่วนหัว
Transfer-Encoding หลายรายการ - ความเสี่ยง: สูง ดูข้อผิดพลาดของทรานสดิวเซอร์ 28
- เพย์โหลด:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnTransfer-Encoding: chunkedrnrn1rnZrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- พายุทอร์นาโด:
- 7 ตุลาคม 2023: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 6 มิถุนายน 2024: แก้ไขในการเผยแพร่คำแนะนำด้านความปลอดภัย
-
xa0 และ x85 ถูกแยกออกจากจุดเริ่มต้นและจุดสิ้นสุดของค่าส่วนหัว
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อค่า
Transfer-Encoding ที่ไม่รู้จัก และถือว่าค่าเหล่านั้นแตกต่างจาก chunked - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 18
- เพย์โหลด:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: xa0chunkedxa0rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- พายุทอร์นาโด:
- 4 กุมภาพันธ์ 2024: รายงานผ่านความคิดเห็นที่ปรึกษาด้านความปลอดภัยของ GH
- 4 กุมภาพันธ์ 2024: ยังไม่มีการแก้ไข
-
r ถือเป็นตัวสิ้นสุดบรรทัดในบรรทัดฟิลด์ส่วนหัว
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อ
r ในชื่อส่วนหัว - ความเสี่ยง: สูง ดูข้อผิดพลาดของทรานสดิวเซอร์ 10
- เพย์โหลด:
GET / HTTP/1.1rnVisible: :/rSmuggled: :)rnrn - โปรแกรมที่ได้รับผลกระทบ:
- CPython http.เซิร์ฟเวอร์:
- 31 มกราคม 2024: รายงานผ่านปัญหา GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข
- พังพอน:
- 7 กรกฎาคม 2023: รายงานผ่านปัญหา GH
- 9 กรกฎาคม 2023: แก้ไขในคอมมิต 6957c37
- อักขระ ASCII ที่ไม่ได้รับอนุญาตได้รับอนุญาตอย่างไม่ถูกต้องในชื่อส่วนหัว
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET / HTTP/1.1rnx00x01x02x03x04x05x06x07x08tx0bx0cx0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f "(),/;<=>?@[/]{}: whateverrnrn - โปรแกรมที่ได้รับผลกระทบ:
- ดาฟเน่:
- 4 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 10 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
- พังพอน:
- 13 ตุลาคม 2023: รายงานผ่านฉบับ GH
- 5 ธันวาคม 2023: แก้ไขในการคอมมิต
- พายุทอร์นาโด:
- 11 สิงหาคม 2023: รายงานผ่านปัญหา GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- เวอร์ชัน HTTP ไม่ได้รับการตรวจสอบ
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET / HTTP/rr1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- รวดเร็วHTTP:
- 4 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 11 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
- ค่า
Content-Length ที่ว่างเปล่าจะถือว่ามีค่าเท่ากับ 0
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ตีความค่า
Content-Length ที่ว่างเปล่าเป็นอย่างอื่นที่ไม่ใช่ 0 - ความเสี่ยง: ต่ำ ฉันไม่รู้จักตัวแปลงสัญญาณดังกล่าว
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnContent-Length: rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไปเน็ต/http:
- 31 กรกฎาคม 2023: รายงานผ่านปัญหา GH
- 11 สิงหาคม 2023: แก้ไขในการคอมมิต
- ไลท์ทีพีดี:
- 1 สิงหาคม 2023: รายงานผ่านเครื่องมือติดตามปัญหา
- 3 สิงหาคม 2023: แก้ไขในการคอมมิต
- OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- ขนาดก้อนที่ว่างเปล่าจะได้รับการปฏิบัติเหมือนเป็น
0
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อ
rn พิเศษระหว่างชิ้นส่วน - ความเสี่ยง: ต่ำ ฉันไม่รู้จักตัวแปลงสัญญาณดังกล่าว
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrnrnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไปเน็ต/http:
- 2 ธันวาคม 2023: รายงานผ่านฉบับ GH
- 4 มกราคม 2024: แก้ไขในการคอมมิต
- ไฮเปอร์:
- 1 ธันวาคม 2023: รายงานทางอีเมล
- 18 ธันวาคม 2023: แก้ไขในการคอมมิต
- พังพอน:
- 3 มกราคม 2024: รายงานผ่านปัญหา GH
- 3 มกราคม 2024: แก้ไขใน PR
- ชื่อส่วนหัวที่ว่างเปล่าได้รับการยอมรับอย่างผิดพลาด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อ
rn:rn และถือเป็นจุดสิ้นสุดของบล็อกส่วนหัว - ความเสี่ยง: ต่ำ ฉันไม่รู้จักตัวแปลงสัญญาณดังกล่าว
- เพย์โหลด:
GET / HTTP/1.1rn: ignoredrnHost: whateverrnrn - โปรแกรมที่ได้รับผลกระทบ:
- ไปเน็ต/http:
- 24 มกราคม 2024: รายงานผ่านปัญหา GH
- 30 มกราคม 2024: แก้ไขในการคอมมิต
- กูนิคอร์น:
- 4 ธันวาคม 2023: รายงานผ่านฉบับ GH
- 25 ธันวาคม 2023: แก้ไขในการคอมมิต
- โหนด js:
- 13 ตุลาคม 2023: รายงานผ่านฉบับ GH
- 17 ตุลาคม 2023: แก้ไขในการคอมมิต
- พายุทอร์นาโด:
- 13 ตุลาคม 2023: รายงานผ่านความคิดเห็นเกี่ยวกับปัญหา GH
- 15 ตุลาคม 2023: ยังไม่มีการแก้ไข
- ลำดับช่องว่างที่ไม่ใช่
rn ทั้งหมดจะถูกแยกออกจากจุดเริ่มต้นของค่าส่วนหัว (หลัง : )
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อ
n บรรทัดที่ลงท้ายในบรรทัดฟิลด์ - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 16
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnUseless:nnGET / HTTP/1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- กูนิคอร์น:
- 2 มิถุนายน 2023: รายงานทางอีเมล
- 31 มกราคม 2024: รายงานผ่านปัญหา GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข
-
xa0 และ x85 ไบต์จะถูกแยกออกจากส่วนท้ายของชื่อส่วนหัว ก่อนหน้า : .
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อ
xa0 หรือ x85 ในชื่อส่วนหัว - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 6
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnContent-Lengthx85: 10rnrn0123456789 - โปรแกรมที่ได้รับผลกระทบ:
- กูนิคอร์น:
- 27 มิถุนายน 2023: รายงานทางอีเมล
- 25 ธันวาคม 2023: แก้ไขในการคอมมิต
-
,chunked ถือเป็นการเข้ารหัสที่แตกต่างจาก chunked
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อค่า
Transfer-Encoding ,chunked ตามที่เป็น และตีความว่าเทียบเท่ากับ chunked - ความเสี่ยง: สูง ดูข้อผิดพลาดของทรานสดิวเซอร์ 9
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- กูนิคอร์น:
- 6 พฤศจิกายน 2023: รายงานผ่านปัญหา GH
- 25 ธันวาคม 2023: แก้ไขในการคอมมิต
- พังพอน:
- 6 พฤศจิกายน 2023: รายงานผ่านปัญหา GH
- 1 ธันวาคม 2023: แก้ไขในการคอมมิต
- ผู้โดยสาร:
- 6 พฤศจิกายน 2023: รายงานทางอีเมล
- 22 มกราคม 2024: แก้ไขแล้วในการเผยแพร่
- ขนาดชิ้นที่ไม่ถูกต้องจะถูกตีความว่าเป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อขนาดชิ้นที่มีคำนำหน้าไม่ถูกต้อง (เช่น มีคำนำหน้า
0x ) - ความเสี่ยง: สูง ดูข้อบกพร่องของทรานสดิวเซอร์ 2 และ 19
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0_2ernrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- น้ำ2O:
- 1 สิงหาคม 2023: รายงานทางอีเมล
- 12 ธันวาคม 2023: แก้ไขใน PR
- OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- เว็บบริค:
- 9 พฤศจิกายน 2023: รายงานผ่านปัญหา GH
- 3 กุมภาพันธ์ 2024: แก้ไขใน PR
- คำขอที่มีส่วนหัว
Content-Length ที่ขัดแย้งกันหลายรายการได้รับการยอมรับ โดยจัดลำดับความสำคัญของส่วนหัวแรก
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อคำขอด้วยส่วนหัว
Content-Length 2 รายการ โดยจัดลำดับความสำคัญส่วนสุดท้าย - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 22
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnContent-Length: 1rnContent-Length: 0rnrnZ - โปรแกรมที่ได้รับผลกระทบ:
- น้ำ2O:
- 30 พฤศจิกายน 2023: รายงานทางอีเมล
- 10 กรกฎาคม 2024: รายงานผ่านฉบับ GH
- 10 กรกฎาคม 2024: ยังไม่มีการแก้ไข
- OpenLiteความเร็ว:
- 26 มิถุนายน 2024: รายงานผ่านปัญหา GH
- 10 กรกฎาคม 2024: ยังไม่มีการแก้ไข
- จำนวนเต็ม 8 บิตล้นในหมายเลขเวอร์ชัน HTTP
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET / HTTP/4294967295.255rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ลิเบเวนต์:
- 17 มกราคม 2024: ส่งการประชาสัมพันธ์แล้ว
- 18 มกราคม 2024: แก้ไขการผสาน
- ขนาดก้อนจะถูกแยกวิเคราะห์โดยใช้
strtoll(,,16) ดังนั้นคำนำหน้า 0x , + และ - จึงได้รับการยอมรับอย่างผิดพลาด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ตีความขนาดก้อนเป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด แต่ส่งต่อตามที่เป็นอยู่
- ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 2
- เพย์โหลด:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrn - โปรแกรมที่ได้รับผลกระทบ:
- ลิเบเวนต์:
- 18 มกราคม 2024: ส่งการประชาสัมพันธ์แล้ว
- 18 กุมภาพันธ์ 2024: แก้ไขการผสาน
- OpenLiteความเร็ว:
- 2 สิงหาคม 2023: รายงานทางอีเมล
- 11 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- ส่วนหัว
Content-Length เชิงลบสามารถใช้เพื่อบังคับให้เซิร์ฟเวอร์เข้าสู่ลูปไม่ว่างที่ไม่มีที่สิ้นสุด
- กรณีการใช้งาน: DoS
- ข้อกำหนด: ไม่มี
- ความเสี่ยง: สูง จุดบกพร่องนี้เป็นเรื่องเล็กน้อยที่จะนำไปใช้ประโยชน์
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnContent-Length: -48rnrn - โปรแกรมที่ได้รับผลกระทบ:
- พังพอน:
- 27 เมษายน 2023: รายงานทางอีเมล
- 16-18 พฤษภาคม 2566: แก้ไขในคอมมิต 4663090, 926959a และ 2669991
- มอบหมาย CVE-2023-34188
- บล็อกส่วนหัว HTTP ถูกตัดทอนเมื่อได้รับส่วนหัวที่ไม่มีชื่อหรือค่า
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อชื่อส่วนหัวที่ว่างเปล่า
- ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดโบนัสโบนัส 2
- เพย์โหลด:
GET / HTTP/1.1rn:rnI: am chopped offrnrn - โปรแกรมที่ได้รับผลกระทบ:
- พังพอน:
- 26 มิถุนายน 2023: รายงานผ่านปัญหา GH
- 29 มิถุนายน 2023: แก้ไขในคอมมิต 415bbf2
- ชื่อส่วนหัวสามารถแยกออกจากค่าบนช่องว่างเพียงอย่างเดียวได้ ไม่
: จำเป็น
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อบรรทัดส่วนหัวที่ไม่มี
: . - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 14
- เพย์โหลด:
GET / HTTP/1.1rnContent-Length 10rnrn0123456789 - โปรแกรมที่ได้รับผลกระทบ:
- พังพอน:
- 7 กรกฎาคม 2023: รายงานผ่านปัญหา GH
- 7 กรกฎาคม 2023: แก้ไขในคอมมิต 5dff282
- ส่วนหัว
Content-Length ที่ไม่ถูกต้องจะถูกตีความว่าเทียบเท่ากับคำนำหน้าที่ถูกต้องที่ยาวที่สุด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อค่า
Content-Length ด้วยคำนำหน้าไม่ถูกต้อง (เช่น 0x หรือ + ) - ความเสี่ยง: สูง ดูข้อผิดพลาดของทรานสดิวเซอร์ 1
- เพย์โหลด:
GET / HTTP/1.1rnContent-Length: 1ZrnrnZ - โปรแกรมที่ได้รับผลกระทบ:
- พังพอน:
- 31 กรกฎาคม 2023: รายงานผ่านปัญหา GH
- 17 สิงหาคม 2023: แก้ไขในการคอมมิต
- OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- บล็อกส่วนหัวอาจถูกยกเลิกอย่างไม่ถูกต้องบน
rnrX โดยที่ X อาจเป็นไบต์ใดก็ได้
- กรณีการใช้งาน: ???
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อชื่อส่วนหัวที่ขึ้นต้นด้วย
r หรืออนุญาตให้ r เป็นช่องว่างเริ่มต้นของบรรทัดแบบพับบรรทัด - ความเสี่ยง: ต่ำ ฉันไม่รู้จักตัวแปลงสัญญาณดังกล่าว
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnrZGET /evil: HTTP/1.1rnHost: arnrn - โปรแกรมที่ได้รับผลกระทบ:
- โหนด js:
- 7 กรกฎาคม 2023: รายงานผ่านรายงานของ HackerOne
- 31 กรกฎาคม 2023: แก้ไขในการคอมมิต llhttp
- 16 กันยายน 2023: แก้ไขใน Node commit
- เส้นกลุ่มถูกยกเลิกอย่างไม่ถูกต้องบน
rX โดยที่ X สามารถเป็นไบต์ใดก็ได้
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อ
r ภายในช่องว่างเสริมในส่วนต่อขยาย - ความเสี่ยง: สูง ดูข้อผิดพลาดของทรานสดิวเซอร์ 3
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn5rr;ABCDrn34rnErn0rnrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- โหนด js:
- 9 กรกฎาคม 2023: รายงานผ่านความคิดเห็นของ HackerOne
- 31 กรกฎาคม 2023: แก้ไขในการคอมมิต llhttp
- 16 กันยายน 2023: แก้ไขใน Node commit
- ส่วนหัว
Content-Length ถูกตีความด้วย strtoll(,,0) ดังนั้นการนำ 0 , + , - และ 0x จะถูกตีความผิด
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อค่า
0 นำหน้าในค่า Content-Length ซึ่งได้รับอนุญาตตามมาตรฐาน - ความเสี่ยง: สูง สิ่งนี้สามารถหาประโยชน์ได้จากทรานสดิวเซอร์ที่เป็นไปตามมาตรฐาน
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnContent-Length: 010rnrn01234567 - โปรแกรมที่ได้รับผลกระทบ:
- OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- คำขอที่มีส่วนหัว
Content-Length ที่ขัดแย้งกันหลายรายการได้รับการยอมรับ โดยจัดลำดับความสำคัญของส่วนหัวสุดท้าย
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อคำขอด้วยส่วนหัว
Content-Length 2 รายการ โดยจัดลำดับความสำคัญของส่วนหัวแรก - ความเสี่ยง: ต่ำ ฉันไม่รู้จักทรานสดิวเซอร์แบบนั้น แต่ดูเหมือนว่าจะมีอยู่จริง
- เพย์โหลด:
GET / HTTP/1.1rnHost: arnContent-Length: 0rnContent-Length: 1rnrnZ - โปรแกรมที่ได้รับผลกระทบ:
- รวดเร็วHTTP:
- 4 กุมภาพันธ์ 2024: รายงานทางอีเมล
- 11 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
-
r ได้รับอนุญาตในค่าส่วนหัว
- กรณีการใช้งาน: ???
- ข้อกำหนด: ทรานสดิวเซอร์ที่ตีความผิดและส่งต่อ
r ในค่าส่วนหัว - ความเสี่ยง: ต่ำ ฉันไม่รู้จักตัวแปลงสัญญาณดังกล่าว
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnHeader: varluernrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenLiteความเร็ว:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 10 สิงหาคม 2023: แก้ไขใน OLS 1.7.18
- ค่าส่วนหัวถูกตัดทอนที่
x00
- กรณีการใช้งาน: บายพาส ACL
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อ
x00 ในค่าส่วนหัว - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 12
- เพย์โหลด:
GET / HTTP/1.1rnHost: whateverrnTest: testx00THESE BYTES GET DROPPEDrnConnection: closernrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenLiteความเร็ว:
- 3 พฤศจิกายน 2023: รายงานทางอีเมล
- 10 กรกฎาคม 2024: แก้ไขในหรือก่อนวันที่นี้
- ลิเบเวนต์:
- 29 มกราคม 2024: รายงานผ่านคำแนะนำด้านความปลอดภัยของ GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข
- การส่งคืนการขนส่งจะถูกส่งต่อภายในช่องว่างเพิ่มเติมตามเครื่องหมายอัฒภาคในส่วนขยายอันหนึ่ง
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์ที่ถือว่า
rr เทียบเท่ากับ rn ในตำแหน่งนี้ - ความเสี่ยง: สูง ดูข้อบกพร่องของเซิร์ฟเวอร์ 31
- เพย์โหลด:
POST /abc HTTP/1.1rnTransfer-Encoding: chunkedrnHost: h2o.http-garden.usrnrn41;a=brrXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrn0rnrnGET /bad_path/pwned HTTP/1.1rnHost: arnContent-Length: 412rnrn0rnrnGET /def HTTP/1.1rnHost: h2o.http-garden.usrnrn - โปรแกรมที่ได้รับผลกระทบ:
- เอกมัย CDN:
- 3 ธันวาคม 2023: รายงานทางอีเมล
- 10 กรกฎาคม 2024: แก้ไขในหรือก่อนวันที่นี้
- ชื่อส่วนหัวสามารถต่อเติมข้ามบรรทัดได้
- กรณีการใช้งาน: ขอลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อบรรทัดส่วนหัวที่ไม่มี
: . - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 14
- เพย์โหลด:
POST / HTTP/1.1rnHost: whateverrnTransfer-rnEncoding: chunkedrnContent-Length: 5rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- ผู้โดยสาร:
- 6 พฤศจิกายน 2023: รายงานทางอีเมล
- 22 มกราคม 2024: แก้ไขแล้วในการเผยแพร่
-
Content-Length ที่ว่างเปล่าในคำขอถูกตีความว่าเป็น `` อ่านจนกว่าจะหมดเวลา"
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อค่าส่วนหัว
Content-Length ที่ว่างเปล่า และถือว่าค่าเหล่านั้นเทียบเท่ากับ 0 - ความเสี่ยง: ปานกลาง ดูข้อบกพร่องของทรานสดิวเซอร์ 5 และ 11
- เพย์โหลด:
GET / HTTP/1.1rnHost: localhostrnContent-Length: rnrnGET / HTTP/1.1rnHost: localhostrnrn - โปรแกรมที่ได้รับผลกระทบ:
- เสือพูมา:
- 16 มิถุนายน 2023: รายงานทางอีเมล
- 17 สิงหาคม 2023: แก้ไขใน Puma 6.3.1 และ 5.6.7 ดูคำแนะนำ.
- เนื้อหาข้อความที่แยกเป็นก้อนจะสิ้นสุดบน
rnXX โดยที่ XX อาจมีขนาดสองไบต์ก็ได้
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่รักษาช่องตัวอย่างและไม่เพิ่มช่องว่างระหว่าง
: และค่าภายในช่องตัวอย่าง (ATS เป็นหนึ่งในเซิร์ฟเวอร์ดังกล่าว) - ความเสี่ยง: สูง ข้อกำหนดในการใช้ประโยชน์จากจุดบกพร่องนี้ไม่จำเป็นต้องให้ทรานสดิวเซอร์ละเมิดมาตรฐาน
- เพย์โหลด:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrn0rnX:POST / HTTP/1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- เสือพูมา:
- 31 กรกฎาคม 2023: รายงานทางอีเมล
- 17 สิงหาคม 2023: แก้ไขใน Puma 6.3.1 และ 5.6.7 ดูคำแนะนำ.
- มอบหมาย CVE-2023-40175
- วิธีการและเวอร์ชัน HTTP ไม่ได้รับการตรวจสอบ
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
x00 / HTTP/............0596.7407.rnrn - โปรแกรมที่ได้รับผลกระทบ:
- พนักงานเสิร์ฟ:
- 17 ตุลาคม 2023: ส่งการประชาสัมพันธ์แล้ว
- 4 กุมภาพันธ์ 2024: แก้ไขการรวม PR
-
xa0 และ x85 ถูกแยกออกจากจุดเริ่มต้นและจุดสิ้นสุดของค่าส่วนหัว ยกเว้นส่วนหัว Transfer-Encoding
- กรณีการใช้งาน: บายพาส ACL ค่าส่วนหัว
- ข้อกำหนด: ทรานสดิวเซอร์ที่ยอมรับและส่งต่อ
xa0 และ x85 เข้าที่ - ความเสี่ยง: ปานกลาง มาตรฐานนี้อนุญาตให้ทรานสดิวเซอร์ส่งต่อ obs-text ในค่าส่วนหัวได้
- เพย์โหลด:
GET /login HTTP/1.1rnHost: arnUser: x85adminxa0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- พนักงานเสิร์ฟ:
- 4 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 4 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
- ค่า
Content-Length ที่ว่างเปล่าจะถูกตีความว่าเทียบเท่ากับ 0 และจัดลำดับความสำคัญเหนือค่า Content-Length ใดๆ ที่ตามมา
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อค่า
Content-Length ที่ว่างเปล่าก่อนค่าที่ไม่ว่างเปล่า และตีความค่าความยาวเนื้อหาที่ว่างเปล่า - ความเสี่ยง: สูง ดูข้อผิดพลาดของทรานสดิวเซอร์ 11
- เพย์โหลด:
GET / HTTP/1.1rnContent-Length: rnContent-Length: 43rnrnPOST /evil HTTP/1.1rnContent-Length: 18rnrnGET / HTTP/1.1rnrn - โปรแกรมที่ได้รับผลกระทบ:
- เว็บบริค:
- 14 สิงหาคม 2023: รายงานผ่านปัญหา GH
- 15 สิงหาคม 2023: แก้ไขใน PR
-
x00 ถูกแยกออกจากส่วนท้ายของค่าส่วนหัว
- กรณีการใช้งาน: บายพาส ACL
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อ
x00 ในค่าส่วนหัว - ความเสี่ยง: ปานกลาง ดูข้อผิดพลาดของทรานสดิวเซอร์ 12
- เพย์โหลด:
GET / HTTP/1.1rnEvil: evilx00rnrn - โปรแกรมที่ได้รับผลกระทบ:
- เว็บบริค:
- 30 พฤศจิกายน 2023: รายงานผ่านปัญหา GH
- 3 กุมภาพันธ์ 2024 2024: แก้ไขใน PR
- รหัสการโอนที่ไม่รู้จักทั้งหมดจะถือว่าเทียบเท่ากับ
chunked
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อการเข้ารหัสการถ่ายโอนอื่นที่ไม่ใช่
identity และ chunked สิ่งนี้ได้รับอนุญาตตามมาตรฐาน - ความเสี่ยง: สูง ซึ่งช่วยให้สามารถขอลักลอบนำเข้าทรานสดิวเซอร์ที่เป็นไปตามมาตรฐานบางตัวได้
- เพย์โหลด:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: bleghrnrn1rnZrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- รวดเร็วHTTP:
- 4 กุมภาพันธ์ 2024: รายงานทางอีเมล
- 11 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
- การเชื่อมต่อจะถูกปิดก่อนกำหนดเมื่อมีการส่งคำขอที่ไม่ถูกต้องหลังจากการร้องขอที่ถูกต้อง
- กรณีการใช้งาน: ???
- ข้อกำหนด: ไม่มี
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
GET / HTTP/1.1rnConnection: closernrnInvalidrnrn - โปรแกรมที่ได้รับผลกระทบ:
- พังพอน:
- 29 มกราคม 2024: รายงานผ่านปัญหา GH
- 13 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
- ยูวิคอร์น:
- 29 มกราคม 2024: รายงานผ่านความคิดเห็นในการสนทนา GH
- 6 กุมภาพันธ์ 2024: แก้ไขโดยไม่ได้ตั้งใจในการคอมมิต
- ไบต์ที่มากกว่า
x80 จะถูกแยกออกจากจุดเริ่มต้นและจุดสิ้นสุดของค่าส่วนหัว
- กรณีการใช้งาน: โฮสต์ของปัญหา
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อส่วนหัวของโฮสต์ที่มีไบต์มากกว่า
x80 - ความเสี่ยง: ปานกลาง
- เพย์โหลด:
POST / HTTP/1.1rnHost: xffaxffrnTransfer-Encoding: xffchunkedxffrnrn1rnZrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- บุญ:
- 13 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 13 กุมภาพันธ์ 2024: ยังไม่มีการแก้ไข
- เมื่อได้รับส่วนที่ไม่ถูกต้อง การเชื่อมต่อจะไม่ปิด และจุดเริ่มต้นของข้อความถัดไปจะถูกวางไว้หลัง
rn แรกถัดจากส่วนที่ไม่ถูกต้อง
- กรณีการใช้งาน: การเป็นพิษต่อคิวการตอบสนอง
- ข้อกำหนด: ทรานสดิวเซอร์ที่ส่งต่อชิ้นส่วนที่ไม่ถูกต้อง
- ความเสี่ยง: ปานกลาง
- เพย์โหลด:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrnINVALID!!!rnGET / HTTP/1.1rnHost: whateverrnrn - โปรแกรมที่ได้รับผลกระทบ:
- เชรูท:
- 14 กุมภาพันธ์ 2024: รายงานผ่านปัญหา GH
- 14 กุมภาพันธ์ 2024: ยังไม่มีการแก้ไข
- คำขอไปป์ไลน์ในบัฟเฟอร์คำขอเริ่มต้นจะถูกตีความว่าเป็นเนื้อหาข้อความของคำขอแรกในบัฟเฟอร์ แม้ว่าจะมีส่วนหัว
Content-Length: 0 ก็ตาม
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: ทรานสดิวเซอร์ที่ไม่เปลี่ยนขอบเขตองค์ประกอบสตรีมขาเข้า
- ความเสี่ยง: ต่ำ ฉันไม่รู้จักตัวแปลงสัญญาณดังกล่าว
- เพย์โหลด:
POST / HTTP/1.1rnContent-Length: 0rnConnection:keep-alivernHost: arnid: 0rnrnPOST / HTTP/1.1rnHost: arnid: 1rnContent-Length: 34rnrn GET / HTTP/1.1rnHost: arnid: 2rnrn - โปรแกรมที่ได้รับผลกระทบ:
- เสือพูมา:
- 2 กุมภาพันธ์ 2024: รายงานทางอีเมล
- 2 กุมภาพันธ์ 2024: แก้ไขในการคอมมิต
ข้อผิดพลาดของทรานสดิวเซอร์
สิ่งเหล่านี้คือจุดบกพร่องในวิธีที่ทรานสดิวเซอร์ตีความ ทำให้เป็นมาตรฐาน และส่งต่อคำขอ
-
0x Content-Length ที่นำหน้าได้รับการยอมรับและส่งต่ออย่างไม่ถูกต้อง โดยไม่มีการตรวจสอบเนื้อหาของข้อความ
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความ
Content-Length เป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุด หรือตีความ 0x -prefixed Content-Length - ความเสี่ยง: ปานกลาง ดูข้อบกพร่องของเซิร์ฟเวอร์ 10, 29 และ 32
- เพย์โหลด:
POST / HTTP/1.1rnHost: akamai.my-domain.coolrnContent-Length: 0x10rnrnZ - โปรแกรมที่ได้รับผลกระทบ:
- เอกมัย CDN:
- 7 กันยายน 2023: รายงานทางอีเมล
- 27 พฤศจิกายน 2023: แจ้งการแก้ไขทางอีเมล
- ค่าขนาดชิ้นที่ไม่ถูกต้องได้รับการยอมรับและส่งต่ออย่างไม่ถูกต้อง
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์แบ็กเอนด์ HTTP/1.1
- ความเสี่ยง: สูง จุดบกพร่องนี้สามารถหาประโยชน์ได้จากการร้องขอการลักลอบนำเข้าแบ็กเอนด์โดยพลการ
- เพย์โหลด:
POST / HTTP/1.1rnHost: akamai.my-domain.coolrnTransfer-Encoding: chunkedrnrnZrnZZrnZZZrnrn - โปรแกรมที่ได้รับผลกระทบ:
- เอกมัย CDN:
- 7 กันยายน 2023: รายงานทางอีเมล
- 27 พฤศจิกายน 2023: แจ้งการแก้ไขทางอีเมล
-
r ได้รับอนุญาตอย่างไม่ถูกต้องในช่องว่างต่อส่วนก่อนหน้า ; -
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความ
r ผิดในตำแหน่งนี้ - ความเสี่ยง: สูง ดูข้อบกพร่องของเซิร์ฟเวอร์ 31
- เพย์โหลด:
POST / HTTP/1.1rnHost: server.my-domain.coolrnTransfer-Encoding: chunkedrnrn2rr;arn02rn41rn0rnrnGET /bad_path/pwned HTTP/1.1rnHost: arnContent-Length: 430rnrn0rnrnGET / HTTP/1.1rnHost: server.my-domain.coolrnrn - โปรแกรมที่ได้รับผลกระทบ:
- เอกมัย CDN:
- 7 กันยายน 2023: รายงานทางอีเมล
- 27 พฤศจิกายน 2023: แจ้งการแก้ไขทางอีเมล
- เซิร์ฟเวอร์การรับส่งข้อมูล Apache:
- 20 กันยายน 2023: รายงานผ่านปัญหา GH
- 13 กุมภาพันธ์ 2024: แก้ไขใน PR
- ตัวจัดสรรภาระงานแอปพลิเคชัน Google Cloud Classic:
- 13 กันยายน 2023: รายงานผ่าน Google IssueTracker
- 30 มกราคม 2024: แก้ไขในหรือก่อนวันที่นี้
- ข้อความที่มีส่วนที่ไม่ถูกต้องจะถูกส่งต่อโดยไม่มีเนื้อหาข้อความ
- กรณีการใช้งาน: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- เพย์โหลด:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn1r0n - โปรแกรมที่ได้รับผลกระทบ:
- ปอนด์:
- 13 มิถุนายน 2024: รายงานผ่านปัญหา GH
- 14 มิถุนายน 2024: แก้ไขในการคอมมิต
- ส่วนหัว
Content-Length ที่ว่างเปล่าถูกส่งต่ออย่างไม่ถูกต้อง
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความค่า
Content-Length ที่ว่างเปล่าเป็นอย่างอื่นที่ไม่ใช่ 0 - ความเสี่ยง: ปานกลาง ดูข้อบกพร่องของเซิร์ฟเวอร์ 38
- เพย์โหลด:
GET / HTTP/1.1rnhost: whateverrncontent-length: rnrn - โปรแกรมที่ได้รับผลกระทบ:
- เซิร์ฟเวอร์การรับส่งข้อมูล Apache:
- 2 สิงหาคม 2023: รายงานผ่านปัญหา GH
- 6 สิงหาคม 2023: แก้ไขผ่านทาง PR
- ไบต์ที่ไม่ได้รับอนุญาตจะได้รับการยอมรับและส่งต่อภายในชื่อส่วนหัว
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความไบต์ที่ไม่ถูกต้องเหล่านี้ภายในชื่อส่วนหัวอย่างไม่ถูกต้อง
- ความเสี่ยง: ปานกลาง ดูข้อบกพร่องของเซิร์ฟเวอร์ 41
- เพย์โหลด:
GET / HTTP/1.1rnHost: fanoutrnHeaderx85: valuernrn - โปรแกรมที่ได้รับผลกระทบ:
- เซิร์ฟเวอร์การรับส่งข้อมูล Apache:
- 29 มิถุนายน 2023: รายงานทางอีเมล
- 18 กันยายน 2023: รายงานผ่านปัญหา GH
- 31 มกราคม 2024: ยังไม่มีการแก้ไข
- OpenBSD ถ่ายทอด:
- 10 พฤศจิกายน 2023: รายงานทางอีเมล
- 28 พฤศจิกายน 2023: ได้รับการติดตั้งในคอมมิต
- ขนาดก้อนจะถูกตีความว่าเป็นคำนำหน้าที่ถูกต้องที่ยาวที่สุดและส่งอีกครั้ง
- กรณีการใช้งาน: การร้องขอการลักลอบขนของ
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความ
0_ หรือ 0x คำนำหน้าบนขนาดก้อน - ความเสี่ยง: สูง ดูข้อบกพร่องของเซิร์ฟเวอร์ 1 และ 25 และบั๊กทรานสดิวเซอร์ 19
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn1these-bytes-never-get-validatedrnZrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- Apache Traffic Server:
- 10 ตุลาคม 2566: รายงานผ่านปัญหา GH
- 13 กุมภาพันธ์ 2567: แก้ไขใน PR
- ตัวยึดตำแหน่ง :)
-
Transfer-Encoding: ,chunked จะถูกส่งต่อเหมือนเดิมและตีความว่าเทียบเท่ากับ chunked
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ทั้งคู่ไม่สนใจการเข้ารหัส
Transfer-Encoding และการรักษาที่ไม่รู้จักซึ่ง ,chunked ต่างจาก chunked - ความเสี่ยง: สูง ดูข้อผิดพลาดเซิร์ฟเวอร์ 21
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: ,chunkedrnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- Azure CDN:
- 15 ตุลาคม 2566: รายงานผ่านรายงานช่องโหว่ MSRC
- 29 พฤศจิกายน 2566: แก้ไขในหรือก่อนวันที่นี้
- 12 ธันวาคม 2566: "กรณีนี้ไม่ตรงกับบาร์สำหรับการให้บริการโดย MSRC เนื่องจากการลักลอบขน HTTP ไม่ได้พิจารณาช่องโหว่และเราจะปิดกรณีนี้"
- nghttpx:
- 14 ตุลาคม 2566: รายงานทางอีเมล
- 17 ตุลาคม 2566: แก้ไขใน PR
-
r ถูกส่งต่ออย่างไม่ถูกต้องในค่าส่วนหัว
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ปฏิบัติต่อ
r เทียบเท่ากับ rn ภายในฟิลด์ส่วนหัว - ความเสี่ยง: สื่อ ดูข้อผิดพลาดเซิร์ฟเวอร์ 13
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnInvalid-Header: thisrvaluerisrinvalidrnrn - Load Balancer แอปพลิเคชันของ Google Cloud Classic:
- 7 กันยายน 2566: รายงานผ่าน Google Issuetracker
- 30 มกราคม 2024: แก้ไขในหรือก่อนวันที่นี้
- ส่วนหัว
Content-Length ที่ว่างเปล่าจะถูกส่งต่ออย่างไม่ถูกต้องแม้จะมีส่วนหัว Content-Length อื่น ๆ ตราบใดที่ส่วนหัว Content-Length ที่ว่างเปล่ามาก่อน
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความค่า
Content-Length ที่ว่างเปล่าเป็น 0 และยอมรับส่วนหัว Content-Length หลายรายการในคำขอที่เข้ามาจัดลำดับความสำคัญครั้งแรก - ความเสี่ยง: สื่อ ดูข้อผิดพลาดเซิร์ฟเวอร์ 42
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnhost: whateverrncontent-length: rncontent-length: 59rnrnPOST /evil HTTP/1.1rnhost: whateverrncontent-length: 34rnrnGET / HTTP/1.1rnhost: whateverrnrn - โปรแกรมที่ได้รับผลกระทบ:
- Haproxy:
- 2 สิงหาคม 2566: รายงานผ่านปัญหา GH
- 9 สิงหาคม 2566: แก้ไขในการกระทำ
- 10 สิงหาคม 2566: ได้รับมอบหมาย CVE-20123-40225
-
x00 ถูกส่งต่อในค่าส่วนหัว
- ใช้เคส: ACL บายพาส
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตัดทอนค่าส่วนหัวที่
x00 - ความเสี่ยง: สื่อ ดูข้อบกพร่องของเซิร์ฟเวอร์ 35 และ 43 และทรานสดิวเซอร์บั๊ก 20
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnHost: google.comx00.kallus.orgrnrn - โปรแกรมที่ได้รับผลกระทบ:
- Haproxy:
- 19 กันยายน 2566: รายงานทางอีเมล
- 31 มกราคม 2567: แก้ไขในการกระทำ
- OpenLitespeed:
- 3 พฤศจิกายน 2566: รายงานทางอีเมล
- 10 กรกฎาคม 2024: แก้ไขในหรือก่อนวันที่นี้
- Bare
n ได้รับการยอมรับว่าเป็นขั้วต่อสาย
- ใช้กรณี: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrnarn0123456789n0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- Haproxy:
- 25 มกราคม 2567: รายงานทางอีเมล
- 30 มกราคม 2024: แก้ไขใน Commmits 7B737DA และ 4837E99
- เส้นสนามที่ไม่มี
: ถูกส่งต่อตามที่เป็น
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์แบ็กเอนด์ที่ผิดพลาดบรรทัดส่วนหัวของส่วนหัวโดยไม่มี
: - ความเสี่ยง: สื่อ ดูบั๊กทรานสดิวเซอร์ 28 และ 37
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnHost: whateverrnTenst: testrnConnection: closernrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenLitespeed:
- 3 พฤศจิกายน 2566: รายงานทางอีเมล
- 10 กรกฎาคม 2024: แก้ไขในหรือก่อนวันที่นี้
- คำขอที่มีทั้งส่วนหัว
Content-Length และ Transfer-Encoding จะถูกส่งต่อตาม -SI หากค่า Transfer-Encoding ไม่รู้จัก
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์แบ็กเอนด์ที่ปฏิบัติต่อ
,chunked เทียบเท่ากับ chunked และจัดลำดับความสำคัญ Transfer-Encoding ผ่าน Content-Length พฤติกรรมเหล่านี้ได้รับอนุญาตตามมาตรฐาน - ความเสี่ยง: สูง สิ่งนี้ช่วยให้การร้องขอการลักลอบขนของเซิร์ฟเวอร์ที่สอดคล้องกับมาตรฐาน
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnConnection: closernrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenLitespeed:
- 3 พฤศจิกายน 2566: รายงานทางอีเมล
- 10 กรกฎาคม 2024: แก้ไขในหรือก่อนวันที่นี้
- ปอนด์:
- 4 กุมภาพันธ์ 2567: รายงานผ่านปัญหา GH
- 29 มีนาคม 2567: แก้ไขในการกระทำ
-
n ไม่ได้เป็นมาตรฐาน rn ในข้อความที่ส่งต่อ
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์แบ็กเอนด์ที่ไม่ตีความ
n เป็นบรรทัดที่ลงท้ายด้วยบรรทัดส่วนหัว มาตรฐานอนุญาตให้เซิร์ฟเวอร์แปล n เป็น - - ความเสี่ยง: สูง ข้อผิดพลาดนี้ใช้ประโยชน์จากเซิร์ฟเวอร์ที่สอดคล้องกับมาตรฐาน
- น้ำหนักบรรทุก:
GET / HTTP/1.1nHost: whatevernConnection: closenn - โปรแกรมที่ได้รับผลกระทบ:
- OpenLitespeed:
- 3 พฤศจิกายน 2566: รายงานทางอีเมล
- 31 มกราคม 2567: ยังไม่ได้อยู่
- กล่องข้อความที่มีส่วนประกอบพิเศษ
rn ก่อนที่ terminator chunk จะไม่ถูกปิดโดยไม่ต้องเปลี่ยนส่วนหัว Transfer-Encoding ด้วย Content-Length
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: ไม่มี
- ความเสี่ยง: สูง ข้อผิดพลาดนี้ใช้ประโยชน์จากเซิร์ฟเวอร์แบ็กเอนด์โดยพลการ
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn17rn0rnrnGET / HTTP/1.1rnrnrnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- การเปิดโล่ง
- 30 พฤศจิกายน 2566: รายงานทางอีเมล
- 10 กรกฎาคม 2024: แก้ไขในหรือก่อนวันที่นี้
-
Transfer-Encoding: ,chunked จะถูกส่งต่อเหมือนเดิมและไม่ได้ตีความว่าเทียบเท่ากับ chunked
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความ
,chunked เทียบเท่ากับ chunked ซึ่งมาตรฐานบอกว่าคุณอาจทำ - ความเสี่ยง: สูง นี่เป็นคำขอการลักลอบขนการลักลอบขนการใช้งานที่สามารถใช้งานกับแบ็กเอนด์ที่สอดคล้องกับมาตรฐานได้
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnrn0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 10 พฤศจิกายน 2566: รายงานทางอีเมล
- 28 พฤศจิกายน 2566: ติดตั้งในการกระทำ
- ขนาดก้อนด้วยคำนำหน้า
+ , - และ 0x ถูกตีความและส่งต่อ
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ตีความขนาดของก้อนเป็นคำนำหน้าคำนำที่ถูกต้องยาวนานที่สุด
- ความเสี่ยง: สูง ดู Server Bug 22
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn-0x0rnrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 10 พฤศจิกายน 2566: รายงานทางอีเมล
- 28 พฤศจิกายน 2566: ติดตั้งในการกระทำ
- ปอนด์:
- 10 ตุลาคม 2566: รายงานผ่านปัญหา GH
- 11 ตุลาคม 2566: แก้ไขผ่านการกระทำ 60A4F42 และ F70DB92
- ส่วนหัวที่มี
x00 หรือ n ถูกรวมเข้ากับค่าส่วนหัวก่อนหน้า
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์แบ็กเอนด์ที่สอดคล้องกับมาตรฐานใด ๆ
- ความเสี่ยง: สูง นี่เป็นคำขอการลักลอบขนการลักลอบขนสินค้าทั่วไป
- น้ำหนักบรรทุก:
GET / HTTP/1.1rna:brncx00rnrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 10 พฤศจิกายน 2566: รายงานทางอีเมล
- 29 พฤศจิกายน 2566: ติดตั้งในการกระทำ
- เนื้อหาข้อความถูกถอดออกจากคำ
GET โดยไม่ต้องลบส่วนหัว Content-Length
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์แบ็กเอนด์ใด ๆ ที่รองรับการส่งท่อ
- ความเสี่ยง: สูง นี่เป็นคำขอการลักลอบขนการลักลอบขนสินค้าทั่วไป
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnContent-Length: 10rnrn1234567890 - โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 28 พฤศจิกายน 2566: รายงานทางอีเมล
- 1 ธันวาคม 2566: ติดตั้งในการกระทำ
- คำขอที่มีส่วนหัวที่
Content-Length หลายรายการถูกส่งต่อโดยจัดลำดับความสำคัญครั้งสุดท้าย
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ยอมรับคำขอที่มีส่วนหัว
Content-Length หลายรายการจัดลำดับความสำคัญครั้งแรก - ความเสี่ยง: สูง ดูข้อผิดพลาดเซิร์ฟเวอร์ 23
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: arnContent-Length: 0rnContent-Length: 31rnrnGET /evil HTTP/1.1rnHost: arnrn - โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 30 พฤศจิกายน 2566: รายงานทางอีเมล
- 10 กรกฎาคม 2024: ยังไม่ได้อยู่
- คำขอที่มีทั้ง
Content-Length และ Transfer-Encoding จะถูกส่งต่อ
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ให้ความสำคัญกับ
Content-Length มากกว่า Transfer-Encoding หรือไม่สนับสนุน Transfer-Encoding: chunked - ความเสี่ยง: สูง นี่คือการร้องขอแบบคลาสสิกเวกเตอร์การลักลอบขนสินค้า
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: arnCon