สวน 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
- สำหรับการโต้ตอบกับ 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
Constructor ใช้เพื่อแยกวิเคราะห์ค่า 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 จะไม่ถูก chunked โดยไม่ต้องเปลี่ยนส่วนหัว 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: arnContent-Length: 5rnTransfer-Encoding: chunkedrnrn0rnrn
- โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 30 พฤศจิกายน 2566: รายงานทางอีเมล
- 10 กรกฎาคม 2024: ยังไม่ได้อยู่
- ได้รับการยอมรับและส่งต่อขนาดของ Whitespace-prefixed
- ใช้กรณี: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn 0rnrn
- โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD Relayd:
- 30 พฤศจิกายน 2566: รายงานทางอีเมล
- 31 มกราคม 2567: ยังไม่ได้อยู่
- ปอนด์:
- 15 ตุลาคม 2566: รายงานผ่านปัญหา GH
- 25 พฤศจิกายน 2566: แก้ไขในการกระทำ
- คำขอที่มี
Transfer-Encoding: chunked
ถูกส่งต่อและถือว่าเทียบเท่ากับส่วนหัวดังกล่าว
- ใช้กรณี: ขอลักลอบขนสินค้า
- ข้อกำหนด: เซิร์ฟเวอร์ที่ปฏิบัติต่อ
Transfer-Encoding: chunked
ที่ไม่เทียบเท่ากับการเข้ารหัส chunked,chunked
Transfer-Encoding: chunked
หรือเข้าร่วมส่วนหัว Transfer-Encoding
chunked
ครั้ง - ความเสี่ยง: สื่อ ดูข้อผิดพลาดเซิร์ฟเวอร์ 21
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnTransfer-Encoding: chunkedrnrn0rnrn
- โปรแกรมที่ได้รับผลกระทบ:
- ปอนด์:
- 7 ตุลาคม 2566: รายงานผ่านปัญหา GH
- 12 ตุลาคม 2566: แก้ไขในการกระทำ
ข้อบกพร่องโบนัส
นี่คือข้อบกพร่องที่เราพบโดยบังเอิญเพียงแค่ตั้งค่า HTTP Garden และส่งคำขอตัวอย่าง พวกเขาไม่นับเพราะพวกเขาไม่ต้องการใช้สวน แต่ฉันคิดว่าฉันควรจัดทำเอกสารพวกเขาอยู่ดี
- อาร์กิวเมนต์ NULL ส่งผ่านไปยัง
memcpy
ในพฤติกรรมที่ไม่ได้กำหนด
- ใช้กรณี: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- Payload: คำขอใด ๆ ที่มีเนื้อหาข้อความเปล่าที่จะส่งต่อไปยังแบ็กเอนด์ Proxy_FCGI
- โปรแกรมที่ได้รับผลกระทบ:
- Apache httpd:
- 2 ธันวาคม 2566: รายงานผ่านปัญหา Bugzilla
- 19 ธันวาคม 2566: แก้ไขในการแก้ไข 1914775
- UWSGI:
- 1 มกราคม 2567: รายงานผ่านปัญหา GH
- Februiary 8, 2024: แก้ไขใน PR
- ใช้งานได้ฟรี
- ใช้เคส: DOS
- ข้อกำหนด: เซิร์ฟเวอร์ใช้
attach_server_session_to_client
- ความเสี่ยง: ต่ำ แม้ว่าสิ่งนี้จะเกิดความผิดพลาด แต่ก็ง่ายที่จะสังเกตเห็นว่าบุคคลที่มีเหตุผลจะไม่ได้ปรับใช้อินสแตนซ์ที่มีช่องโหว่ในการผลิต
- น้ำหนักบรรทุก: คำขอใด ๆ เลย
- โปรแกรมที่ได้รับผลกระทบ:
- Apache Traffic Server:
- 31 กรกฎาคม 2566: รายงานผ่านปัญหา GH
- 13 กันยายน 2566: แก้ไขผ่าน PR
- การส่งไบต์พิเศษหลังจากคำขอที่มีข้อความข้อความที่ถูกขัดจังหวะเซิร์ฟเวอร์ด้วย segfault
- ใช้เคส: DOS
- ข้อกำหนด: เปิดใช้งาน FastCGI
- ความเสี่ยง: สูง นี่คือข้อผิดพลาดเล็กน้อยถึง exploit ที่ขัดข้องเซิร์ฟเวอร์
- น้ำหนักบรรทุก:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrn0rnrnx00
- โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD httpd:
- 1 พฤศจิกายน 2566: รายงานทางอีเมล
- 8 พฤศจิกายน 2566: แก้ไขในการกระทำ
- ร่างคำขอที่เข้ามาจะถูกสะท้อนกลับก่อนที่จะส่งการตอบกลับ
- ใช้เคส: DOS
- ข้อกำหนด: เปิดใช้งาน FastCGI
- ความเสี่ยง: สื่อ สิ่งนี้จะทำให้สตรีมคำขอเป็นโมฆะสำหรับข้อความที่มีการเปลี่ยนแปลงใด ๆ ซึ่งจะทำลายการเชื่อมต่อที่ใช้ร่วมกัน
- น้ำหนักบรรทุก:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrn1rnZrn0rnrn
- โปรแกรมที่ได้รับผลกระทบ:
- OpenBSD httpd:
- 4 มกราคม 2567: รายงานทางอีเมล
- 31 มกราคม 2567: ยังคงไม่รวมอยู่
- null dereference เมื่อได้รับคำขอใด ๆ
- ใช้เคส: DOS
- ข้อกำหนด:
mod_dir
เปิดใช้งานพร้อมตัวเลือกการกำหนดค่าบางอย่าง - ความเสี่ยง: ต่ำ ข้อผิดพลาดนี้เห็นได้ชัดว่าไม่มีใครมีสติจะปรับใช้เซิร์ฟเวอร์ที่มีช่องโหว่
- น้ำหนักบรรทุก: อะไรก็ได้
- โปรแกรมที่ได้รับผลกระทบ:
- Apache httpd:
- 24 มกราคม 2567: รายงานผ่านปัญหา Bugzilla
- 24 มกราคม 2567: ยังคงไม่รวมอยู่
โบนัสโบนัสข้อบกพร่อง
นี่คือข้อบกพร่องที่เราพบเมื่อสวนมีการสนับสนุน HTTP/2 เราลบการสนับสนุน HTTP/2 เพราะมันเป็นครึ่งตัวเล็กน้อย แต่อยากจะเพิ่มมันกลับมา!
- อักขระช่องว่างไม่ได้ถูกถอดออกจากค่าฟิลด์ระหว่าง HTTP/2 ถึงการลดระดับ HTTP/1.1
- ใช้กรณี: ???
- ข้อกำหนด: N/A
- ความเสี่ยง: ไม่มี
- น้ำหนักบรรทุก:
PRI * HTTP/2.0rnrnSMrnrnx00x00x00x04x00x00x00x00x00x00x00Ex01x05x00x00x00x01x00n:authoritytlocalhostx00x05:pathx01/x00x07:methodx03GETx00x07:schemex04httpx00x05test1x03tat
- โปรแกรมที่ได้รับผลกระทบ:
- ทูต:
- 7 กรกฎาคม 2566: รายงานผ่านปัญหา GH
- 7 ตุลาคม 2566: ยังไม่ได้อยู่
- H2O:
- 7 กรกฎาคม 2566: รายงานผ่านปัญหา GH
- 18 กรกฎาคม 2023: แก้ไขใน PR #3256
- แคชเคลือบเงา:
- 7 กรกฎาคม 2566: รายงานผ่านปัญหา GH
- 22 สิงหาคม 2566: แก้ไขในการกระทำ
- ชื่อส่วนหัวที่ว่างเปล่าจะถูกเก็บรักษาไว้ในการแปล HTTP/2 ถึง HTTP/1.1 ซึ่งนำไปสู่การผลิต HTTP/1.1 ที่ไม่ถูกต้อง
- ใช้เคส: DOS
- ข้อกำหนด: การลดระดับ HTTP/2 กำลังดำเนินการและแบ็กเอนด์ปฏิเสธชื่อส่วนหัวที่ว่างเปล่า (เหมือนส่วนใหญ่)
- ความเสี่ยง: ต่ำ ข้อผิดพลาดนี้สามารถใช้เพื่อสร้างเซิร์ฟเวอร์ที่สมเหตุสมผล 400 ซึ่งจะทำลายการแชร์การเชื่อมต่อ
- น้ำหนักบรรทุก:
PRI * HTTP/2.0rnrnSMrnrnx00x00x00x04x00x00x00x00x00x00x00=x01x05x00x00x00x01x00n:authoritytlocalhostx00x05:pathx01/x00x07:methodx03GETx00x07:schemex04httpx00x00x00
- โปรแกรมที่ได้รับผลกระทบ:
- H2O:
- 7 กรกฎาคม 2566: รายงานผ่านปัญหา GH
- 18 กรกฎาคม 2023: แก้ไขใน PR #3256