Taman HTTP
HTTP Garden adalah kumpulan server HTTP dan proxy yang dikonfigurasi agar dapat disusun, bersama dengan skrip untuk berinteraksi dengannya sedemikian rupa sehingga menemukan kerentanan menjadi lebih mudah. Untuk beberapa demo keren tentang kerentanan yang dapat Anda temukan dengan HTTP Garden, lihat pembicaraan ShmooCon 2024 kami.
Ucapan Terima Kasih
Kami ingin mengucapkan terima kasih kepada teman-teman kami di Galois, Trail of Bits, Narf Industries, dan Dartmouth College yang telah mewujudkan proyek ini.
Materi ini didasarkan pada pekerjaan yang didukung oleh Defense Advanced Research Projects Agency (DARPA) berdasarkan nomor kontrak HR0011-19-C-0076.
Memulai
Ketergantungan
- HTTP Garden berjalan di x86_64 Linux, dan belum diuji di platform lain.
- Server target dibuat dan dijalankan di container Docker, jadi Anda memerlukan Docker.
- Anda juga memerlukan paket Python berikut, yang bisa Anda dapatkan dari PyPI (yaitu dengan
pip
) atau dari manajer paket sistem Anda:
-
docker
- Untuk berinteraksi dengan Docker
-
pyyaml
-
tqdm
Jika Anda menginstal paket Python dengan manajer paket sistem Anda, ketahuilah bahwa nama paket mungkin perlu diawali dengan py3-
, python3-
, atau python-
, bergantung pada sistemnya.
- Saya juga sangat merekomendasikan menginstal rlwrap dari manajer paket Anda, karena ini membuat repl Garden jauh lebih menyenangkan.
Bangunan
docker build ./images/http-garden-soil -t http-garden-soil
Gambar ini berisi beberapa utilitas dasar, ditambah AFL++ bercabang yang memfasilitasi pengumpulan cakupan dari proses tanpa mematikannya.
- Bangun beberapa server HTTP dan proxy:
docker compose build gunicorn hyper nginx haproxy nginx_proxy
Tentu saja, ada lebih banyak target di taman HTTP daripada yang baru saja kita buat. Hanya saja membangun semuanya membutuhkan waktu yang lama. Bahkan membangun beberapa ini akan memakan waktu beberapa menit!
Berlari
- Mulai beberapa server dan proxy:
docker compose up gunicorn hyper nginx haproxy nginx_proxy
rlwrap python3 tools/repl.py
- Filter permintaan GET dasar melalui HAProxy, lalu melalui proxy balik Nginx, lalu kirim hasilnya ke server asal Gunicorn, Hyper, dan Nginx, dan tampilkan apakah interpretasinya cocok:
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 | ✓
Sepertinya mereka semua setuju. Mari kita coba payload yang lebih menarik:
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 | ✓
Ada perbedaan! Hal ini karena Nginx mendukung n
sebagai baris yang diakhiri dengan garis potongan, namun Hyper dan Gunicorn tidak. Nginx secara teknis melanggar RFC 9112 di sini, namun dampaknya kemungkinan kecil.
Tata Letak Direktori
images
Direktori images
berisi subdirektori untuk setiap server HTTP dan transduser di Garden. Setiap target mendapatkan image Dockernya sendiri. Semua program dibuat dari sumber jika memungkinkan. Agar kita dapat dengan mudah membuat beberapa versi dari setiap target, semua target diparemetrikan dengan URL repositori ( APP_REPO
), nama cabang ( APP_BRANCH
), dan hash penerapan ( APP_VERSION
).
tools
Direktori tools
berisi skrip yang digunakan untuk berinteraksi dengan server. Di dalamnya, Anda akan menemukannya
-
diagnose_anomalies.py
: Skrip untuk menghitung keanehan penguraian HTTP yang tidak berbahaya dalam sistem yang diuji untuk diabaikan selama fuzzing, -
repl.py
: Antarmuka pengguna utama ke HTTP Garden, -
update.py
: Skrip yang memperbarui hash komit di docker-compose.yml
, - ...dan beberapa skrip lainnya yang tidak dapat dilihat pengguna.
Target
Server HTTP
Nama | Berjalan secara lokal? | Cakupan Dikumpulkan? |
---|
aiohttp | Ya | Ya |
apache_httpd | Ya | Ya |
apache_tomcat | Ya | TIDAK |
cerutu | Ya | Ya |
cpp_httplib | Ya | TIDAK |
dart_stdlib | Ya | TIDAK |
gerhana_grizzly | Ya | TIDAK |
gerhana_jetty | Ya | TIDAK |
http cepat | Ya | TIDAK |
go_stdlib | Ya | TIDAK |
gunicorn | Ya | Ya |
air | Ya | Ya |
haproxy_fcgi | Ya | TIDAK |
hiper | Ya | TIDAK |
hipercorn | Ya | Ya |
ktor | Ya | TIDAK |
acara gratis | Ya | TIDAK |
libmicrohttpd | Ya | TIDAK |
libsoup | Ya | TIDAK |
lighttpd | Ya | Ya |
luwak | Ya | Ya |
netty | Ya | TIDAK |
nginx | Ya | Ya |
node_stdlib | Ya | TIDAK |
kecepatan terbuka | Ya | TIDAK |
openwrt_uhttpd | Ya | Ya |
php_stdlib | Ya | TIDAK |
phusion_passenger | Ya | TIDAK |
protokol_http1 | Ya | TIDAK |
puma | Ya | TIDAK |
pembicaraan layanan | Ya | TIDAK |
angin topan | Ya | TIDAK |
memutar | Ya | TIDAK |
unicorn | Ya | TIDAK |
uvicorn | Ya | Ya |
pelayan | Ya | Ya |
webrick | Ya | TIDAK |
iis | TIDAK | TIDAK |
openbsd_httpd | TIDAK | TIDAK |
Transduser HTTP
Nama | Berjalan secara lokal? |
---|
apache_httpd_proxy | Ya |
apache_traffic_server | Ya |
go_stdlib_proxy | Ya |
h2o_proxy | Ya |
haproxy | Ya |
haproxy_tidak valid | Ya |
lighttpd_proxy | Ya |
nghttpx | Ya |
nginx_proxy | Ya |
openlitespeed_proxy | Ya |
pingora | Ya |
pound | Ya |
cumi-cumi | Ya |
pernis | Ya |
akamai | TIDAK |
awselb_classic | TIDAK |
awselb_application | TIDAK |
aws_cloudfront | TIDAK |
awan suar | TIDAK |
dengan cepat | TIDAK |
google_klasik | TIDAK |
google_global | TIDAK |
iis_proxy | TIDAK |
openbsd_relayd | TIDAK |
Bug
Ini adalah bug yang kami temukan menggunakan HTTP Garden. Jika Anda menemukan beberapa milik Anda sendiri, kirimkan PR untuk menambahkannya ke daftar ini! Setiap bug dijelaskan dengan bidang berikut:
- Kasus penggunaan: Jenis serangan yang dapat dilakukan penyerang dengan bug ini
- Persyaratan: Diperlukan opsi konfigurasi atau server lain agar bug ini dapat dieksploitasi.
- Risiko: Tidak Ada|Rendah|Sedang|Tinggi, disertai penjelasan singkat.
- Tidak ada: Bug ini kemungkinan besar tidak dapat dieksploitasi.
- Rendah: Bug mungkin dapat dieksploitasi, tetapi memerlukan konfigurasi yang sangat aneh atau bergantung pada proxy yang berperilaku dengan cara yang belum pernah saya lihat.
- Sedang: Bug kemungkinan besar dapat dieksploitasi, namun hanya berdampak sedang atau memerlukan kombinasi server/transduser yang tidak terduga.
- Tinggi: Bug dapat dieksploitasi dalam konfigurasi umum dan kombinasi server/transduser.
- Payload: Contoh payload yang memicu bug
- Program yang terkena dampak: Daftar server yang memiliki bug ini, beserta jadwal laporan dan patch. Karena beberapa bug implementasi adalah hal yang umum, dan ini mencegahnya mengacaukan daftar :)
Bug Server
Ini adalah bug dalam cara server menerima dan menafsirkan permintaan.
- Konstruktor
int
Python digunakan untuk mengurai ukuran potongan, jadi 0x
, _
, +
, dan -
disalahartikan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerjemahkan ukuran bongkahan sebagai awalan terpanjang yang valid, namun meneruskannya apa adanya.
- Risiko: Sedang. Lihat bug transduser 7.
- Muatan:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0_2ernrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn
- Program yang terkena dampak:
- AIOHTTP:
- 1 Agustus 2023: Dilaporkan melalui penasihat keamanan GH.
- 7 Oktober 2023: Diperbaiki pada rilis 3.8.6.
- Gunicorn:
- 1 Agustus 2023: Dilaporkan melalui edisi GH.
- 25 Desember 2023: Diperbaiki dalam penerapan.
- Angin topan:
- 2 Agustus 2023: Dilaporkan melalui penasihat keamanan GH.
- 10 Agustus 2023: Diperbaiki dalam penerapan.
-
x00
, r
, atau n
salah diizinkan dalam nilai header.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan byte ini dalam nilai header, atau menerima dan meneruskan
n
sebagai terminator baris header. - Risiko: Tinggi. Lihat bug transduser 10, 12, dan 16.
- Muatan:
GET / HTTP/1.1rnHost: arnHeader: vnx00raluernrn
- Program yang terkena dampak:
- AIOHTTP:
- 1 Agustus 2023: Dilaporkan melalui penasihat keamanan GH.
- 7 Oktober 2023: Diperbaiki pada rilis 3.8.6.
- Gunicorn:
- 31 Januari 2024: Dilaporkan melalui edisi GH.
- 31 Januari 2024: Tetap tidak diperbaiki.
- Angin topan:
- 11 Agustus 2023: Dilaporkan melalui edisi GH.
- 31 Januari 2024: Tetap tidak diperbaiki.
- Spasi kosong salah dihilangkan dari ujung nama header.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menganggap spasi sebelum
:
sebagai bagian dari nama header. - Risiko: Rendah. Saya tidak mengetahui adanya transduser yang rentan, namun James Kettle mengatakan setidaknya ada satu transduser.
- Payload:
GET / HTTP/1.1rnHost: whateverrnContent-Length : 34rnrnGET / HTTP/1.1rnHost: whateverrnrn
- Program yang terkena dampak:
- AIOHTTP:
- 2 Agustus 2023: Dilaporkan melalui penasihat keamanan GH.
- 7 Oktober 2023: Diperbaiki pada rilis 3.8.6.
- ceri:
- 4 Februari 2024: Dilaporkan melalui edisi GH.
- 4 Februari 2024: Masih belum diperbaiki.
- Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- 14 Agustus 2023: Ditugaskan CVE-2023-40518.
- Spasi salah dihapus dari awal nama header pertama.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menganggap spasi di awal nama header pertama sebagai bagian dari nama header.
- Risiko: Rendah. Saya tidak mengetahui adanya transduser yang rentan.
- Muatan:
GET / HTTP/1.1rntContent-Length: 1rnrnX
- Program yang terkena dampak:
- AIOHTTP:
- 20 Agustus 2023: Dilaporkan melalui komentar penasihat keamanan GH.
- 7 Oktober 2023: Diperbaiki pada rilis 3.8.6.
- Versi HTTP ditafsirkan sebagai awalan valid terpanjangnya.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada
- Muatan:
GET /test HTTP/1.32rnrn
- Program yang terkena dampak:
- AIOHTTP:
- 14 Oktober 2023: Dilaporkan melalui isu GH dan PR.
- 15 Oktober 2023: Diperbaiki dalam penerapan.
- Metode HTTP ditafsirkan sebagai awalan valid terpanjangnya.
- Kasus penggunaan: bypass ACL
- Persyaratan: Transduser yang meneruskan nama metode yang tidak valid apa adanya.
- Risiko: Sedang. Penjelasan dihilangkan karena bug terkait belum dilaporkan.
- Muatan:
G=":<>(e),[T];?" /get HTTP/1.1rnrn
- Program yang terkena dampak:
- AIOHTTP:
- 14 Oktober 2023: Dilaporkan melalui isu GH dan PR.
- 15 Oktober 2023: Diperbaiki dalam penerapan.
- URI tidak divalidasi apa pun.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada
- Muatan:
GET ! HTTP/1.1rnrn
- Program yang terkena dampak:
- AIOHTTP:
- 16 Oktober 2023: Dilaporkan melalui edisi GH.
- 16 Oktober 2023 : Diperbaiki di PR.
- Beberapa byte non-ASCII salah diizinkan dalam nama header.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada
- Muatan:
GET / HTTP/1.1rnxefoo: barrnrn
- Program yang terkena dampak:
- AIOHTTP:
- 17 Oktober 2023: Dilaporkan melalui PR.
- 18 Oktober 2023: Diperbaiki melalui penggabungan PR di atas.
- Daphne:
- 4 Februari 2024: Dilaporkan melalui edisi GH.
- 10 Februari 2024: Diperbaiki dalam penerapan.
- Luwak:
- 13 Oktober 2023: Dilaporkan melalui edisi GH.
- 5 Desember 2023: Diperbaiki dalam penerapan.
-
n
diperbolehkan sebagai pemisah spasi di baris permintaan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan permintaan HTTP/0.9 dengan
n
apa adanya, dan menggunakan kembali koneksi yang mendasarinya. - Risiko: Rendah. Saya tidak mengetahui adanya transduser yang rentan.
- Muatan:
GET /nHTTP/1.1rnrn
- Program yang terkena dampak:
- AIOHTTP:
- 17 Oktober 2023: Dilaporkan melalui PR.
- 18 Oktober 2023: Diperbaiki melalui penggabungan.
- Konstruktor
int
Python digunakan untuk mengurai nilai Content-Length
, sehingga _
, +
, dan -
disalahartikan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menafsirkan nilai
Content-Length
sebagai awalan terpanjang yang valid, namun meneruskannya apa adanya. - Risiko: Rendah. Saya tidak mengetahui adanya transduser yang rentan, namun Matt Grenfeldt mengatakan bahwa setidaknya ada satu transduser.
- Muatan:
GET / HTTP/1.1rnHost: arnContent-Length: +1_0rnrn0123456789
- Program yang terkena dampak:
- AIOHTTP:
- 1 Agustus 2023: Dilaporkan melalui penasihat keamanan GH.
- 7 Oktober 2023: Diperbaiki pada rilis 3.8.6.
- CPython http.server:
- 2 April 2023: Dilaporkan melalui edisi GH.
- 2 April 2023: Diperbaiki dalam penerapan.
- Angin topan:
- 2 Agustus 2023: Dilaporkan melalui penasihat keamanan GH.
- 10 Agustus 2023: Diperbaiki dalam penerapan.
- kerja:
- 1 Juni 2023: Dilaporkan melalui edisi GH.
- 7 Juni 2023: Memperbaiki komit 88c5c78.
- Permintaan yang berisi beberapa
Transfer-Encoding: chunked
diterima dan dianggap tidak memiliki isi pesan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan permintaan yang berisi beberapa header
Transfer-Encoding
. - Risiko: Tinggi. Lihat bug transduser 28.
- Payload:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnTransfer-Encoding: chunkedrnrn1rnZrn0rnrn
- Program yang terkena dampak:
- Angin topan:
- 7 Oktober 2023: Dilaporkan melalui penasihat keamanan GH.
- 6 Juni 2024: Diperbaiki dalam rilis penasehat keamanan.
-
xa0
dan x85
dihapus dari awal dan akhir nilai header.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan nilai
Transfer-Encoding
yang tidak diketahui dan memperlakukannya sebagai berbeda dari chunked
. - Risiko: Sedang. Lihat bug transduser 18.
- Muatan:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: xa0chunkedxa0rnrn0rnrn
- Program yang terkena dampak:
- Angin topan:
- 4 Februari 2024: Dilaporkan melalui komentar penasihat keamanan GH.
- 4 Februari 2024: Masih belum diperbaiki.
-
r
diperlakukan sebagai terminator baris di baris bidang header.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan
r
dalam nama header. - Risiko: Tinggi. Lihat bug transduser 10.
- Muatan:
GET / HTTP/1.1rnVisible: :/rSmuggled: :)rnrn
- Program yang terkena dampak:
- CPython http.server:
- 31 Januari 2024: Dilaporkan melalui edisi GH.
- 31 Januari 2024: Tetap tidak diperbaiki.
- Luwak:
- 7 Juli 2023: Dilaporkan melalui edisi GH.
- 9 Juli 2023: Memperbaiki komit 6957c37.
- Karakter ASCII yang tidak diizinkan salah diizinkan dalam nama header.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada
- Muatan:
GET / HTTP/1.1rnx00x01x02x03x04x05x06x07x08tx0bx0cx0ex0fx10x11x12x13x14x15x16x17x18x19x1ax1bx1cx1dx1ex1f "(),/;<=>?@[/]{}: whateverrnrn
- Program yang terkena dampak:
- Daphne:
- 4 Februari 2024: Dilaporkan melalui edisi GH.
- 10 Februari 2024: Diperbaiki dalam penerapan.
- Luwak:
- 13 Oktober 2023: Dilaporkan melalui edisi GH.
- 5 Desember 2023: Diperbaiki dalam penerapan.
- Angin topan:
- 11 Agustus 2023: Dilaporkan melalui edisi GH.
- 31 Januari 2024: Tetap tidak diperbaiki. Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- Versi HTTP tidak divalidasi.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada
- Muatan:
GET / HTTP/rr1.1rnrn
- Program yang terkena dampak:
- HTTP Cepat:
- 4 Februari 2024: Dilaporkan melalui edisi GH.
- 11 Februari 2024: Diperbaiki dalam penerapan.
- Nilai
Content-Length
yang kosong diperlakukan seolah-olah 0
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menafsirkan nilai
Content-Length
kosong selain 0. - Risiko: Rendah. Saya tidak mengetahui adanya transduser seperti itu.
- Muatan:
GET / HTTP/1.1rnHost: whateverrnContent-Length: rnrn
- Program yang terkena dampak:
- Buka internet/http:
- 31 Juli 2023: Dilaporkan melalui edisi GH
- 11 Agustus 2023: Diperbaiki dalam penerapan.
- tpd ringan:
- 1 Agustus 2023: Dilaporkan melalui pelacak masalah.
- 3 Agustus 2023: Diperbaiki dalam penerapan.
- Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- Ukuran bongkahan kosong diperlakukan seolah-olah
0
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan
rn
ekstra antar bongkahan. - Risiko: Rendah. Saya tidak mengetahui adanya transduser seperti itu.
- Muatan:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrnrnrn
- Program yang terkena dampak:
- Buka internet/http:
- 2 Desember 2023: Dilaporkan melalui edisi GH.
- 4 Januari 2024: Diperbaiki dalam penerapan.
- hiper:
- 1 Desember 2023: Dilaporkan melalui email.
- 18 Desember 2023: Diperbaiki dalam penerapan.
- Luwak:
- 3 Januari 2024: Dilaporkan melalui edisi GH.
- 3 Januari 2024 : Diperbaiki di PR.
- Nama header yang kosong diterima secara keliru.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan
rn:rn
, dan memperlakukannya sebagai akhir blok header. - Risiko: Rendah. Saya tidak mengetahui adanya transduser seperti itu.
- Payload:
GET / HTTP/1.1rn: ignoredrnHost: whateverrnrn
- Program yang terkena dampak:
- Buka internet/http:
- 24 Januari 2024: Dilaporkan melalui edisi GH.
- 30 Januari 2024: Diperbaiki dalam penerapan.
- Gunicorn:
- 4 Desember 2023: Dilaporkan melalui edisi GH.
- 25 Desember 2023: Diperbaiki dalam penerapan.
- Node.js:
- 13 Oktober 2023: Dilaporkan melalui edisi GH.
- 17 Oktober 2023: Diperbaiki dalam penerapan.
- Angin topan:
- 13 Oktober 2023: Dilaporkan melalui komentar edisi GH.
- 15 Oktober 2023: Tetap tidak diperbaiki.
- Semua urutan spasi non-
rn
dihapus dari awal nilai header (setelah :
).
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan
n
ujung garis di garis medan. - Risiko: Sedang. Lihat bug transduser 16.
- Muatan:
GET / HTTP/1.1rnHost: arnUseless:nnGET / HTTP/1.1rnrn
- Program yang terkena dampak:
- Gunicorn:
- 2 Juni 2023: Dilaporkan melalui email.
- 31 Januari 2024: Dilaporkan melalui edisi GH.
- 31 Januari 2024: Tetap tidak diperbaiki.
-
xa0
dan x85
byte dihapus dari ujung nama header, sebelum :
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan
xa0
atau x85
dalam nama header. - Risiko: Sedang. Lihat bug transduser 6.
- Muatan:
GET / HTTP/1.1rnHost: arnContent-Lengthx85: 10rnrn0123456789
- Program yang terkena dampak:
- Gunicorn:
- 27 Juni 2023: Dilaporkan melalui email.
- 25 Desember 2023: Diperbaiki dalam penerapan.
-
,chunked
diperlakukan sebagai pengkodean yang berbeda dari chunked
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan nilai
Transfer-Encoding
,chunked
apa adanya, dan menafsirkannya sebagai setara dengan chunked
. - Risiko: Tinggi. Lihat bug transduser 9.
- Payload:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnrn0rnrn
- Program yang terkena dampak:
- Gunicorn:
- 6 November 2023: Dilaporkan melalui edisi GH.
- 25 Desember 2023: Diperbaiki dalam penerapan.
- Luwak:
- 6 November 2023: Dilaporkan melalui edisi GH.
- 1 Desember 2023: Diperbaiki dalam penerapan.
- Penumpang:
- 6 November 2023: Dilaporkan melalui email.
- 22 Januari 2024: Telah diperbaiki dalam rilis.
- Ukuran potongan yang tidak valid ditafsirkan sebagai awalan valid terpanjangnya.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan ukuran potongan dengan awalan tidak valid (misalnya dengan awalan
0x
). - Risiko: Tinggi. Lihat bug transduser 2 dan 19.
- Muatan:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn0_2ernrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn
- Program yang terkena dampak:
- H2O:
- 1 Agustus 2023: Dilaporkan melalui email.
- 12 Desember 2023 : Diperbaiki di PR.
- Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- WEBbata:
- 9 November 2023: Dilaporkan melalui edisi GH.
- 3 Februari 2024 : Diperbaiki di PR.
- Permintaan dengan beberapa header
Content-Length
yang bertentangan diterima, dengan memprioritaskan yang pertama.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan permintaan dengan 2 header
Content-Length
, memprioritaskan yang terakhir. - Risiko: Sedang. Lihat bug transduser 22.
- Muatan:
GET / HTTP/1.1rnHost: arnContent-Length: 1rnContent-Length: 0rnrnZ
- Program yang terkena dampak:
- H2O:
- 30 November 2023 : Dilaporkan melalui email.
- 10 Juli 2024: Dilaporkan melalui edisi GH.
- 10 Juli 2024: Tetap tidak diperbaiki.
- Kecepatan OpenLite:
- 26 Juni 2024: Dilaporkan melalui edisi GH.
- 10 Juli 2024: Tetap tidak diperbaiki.
- Kelebihan bilangan bulat 8-bit dalam nomor versi HTTP.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada
- Muatan:
GET / HTTP/4294967295.255rnrn
- Program yang terkena dampak:
- Kehidupan:
- 17 Januari 2024 : Penyerahan PR.
- 18 Januari 2024: Diperbaiki dalam penggabungan.
- Ukuran potongan diurai menggunakan
strtoll(,,16)
, jadi awalan 0x
, +
, dan -
diterima secara keliru.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerjemahkan ukuran bongkahan sebagai awalan terpanjang yang valid, namun meneruskannya apa adanya.
- Risiko: Sedang. Lihat bug transduser 2.
- Muatan:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrn
- Program yang terkena dampak:
- Kehidupan:
- 18 Januari 2024 : Penyerahan PR.
- 18 Februari 2024: Diperbaiki dalam penggabungan.
- Kecepatan OpenLite:
- 2 Agustus 2023: Dilaporkan melalui email.
- 11 Agustus 2023: Diperbaiki di OLS 1.7.18.
- Header
Content-Length
Negatif dapat digunakan untuk memaksa server memasuki loop sibuk yang tak terbatas.
- Kasus penggunaan: DoS
- Persyaratan: Tidak ada.
- Risiko: Tinggi. Bug ini mudah untuk dieksploitasi.
- Muatan:
GET / HTTP/1.1rnHost: arnContent-Length: -48rnrn
- Program yang terkena dampak:
- Luwak:
- 27 April 2023: Dilaporkan melalui email.
- 16-18 Mei 2023: Memperbaiki komitmen 4663090, 926959a, dan 2669991.
- Ditugaskan CVE-2023-34188.
- Blok header HTTP terpotong saat menerima header tanpa nama atau nilai.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan nama header kosong.
- Risiko: Sedang. Lihat bonus bonus bug 2.
- Payload:
GET / HTTP/1.1rn:rnI: am chopped offrnrn
- Program yang terkena dampak:
- Luwak:
- 26 Juni 2023: Dilaporkan melalui edisi GH.
- 29 Juni 2023: Memperbaiki komit 415bbf2.
- Nama header dapat dipisahkan dari nilai hanya dengan spasi; tidak
:
diperlukan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan baris header yang tidak berisi
:
. - Risiko: Sedang. Lihat bug transduser 14.
- Muatan:
GET / HTTP/1.1rnContent-Length 10rnrn0123456789
- Program yang terkena dampak:
- Luwak:
- 7 Juli 2023: Dilaporkan melalui edisi GH.
- 7 Juli 2023: Memperbaiki komit 5dff282.
- Header
Content-Length
yang tidak valid ditafsirkan setara dengan awalan valid terpanjangnya.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan nilai
Content-Length
dengan awalan yang tidak valid (misalnya 0x
atau +
) - Risiko: Tinggi. Lihat bug transduser 1.
- Muatan:
GET / HTTP/1.1rnContent-Length: 1ZrnrnZ
- Program yang terkena dampak:
- Luwak:
- 31 Juli 2023: Dilaporkan melalui edisi GH
- 17 Agustus 2023: Diperbaiki dalam penerapan.
- Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- Blok header dapat diakhiri secara salah pada
rnrX
, di mana X
dapat berupa byte apa pun.
- Kasus penggunaan: ???
- Persyaratan: Transduser yang meneruskan nama header yang diawali dengan
r
, atau mengizinkan r
sebagai spasi awal baris yang dapat dilipat. - Risiko: Rendah. Saya tidak mengetahui transduser seperti itu.
- Muatan:
GET / HTTP/1.1rnHost: arnrZGET /evil: HTTP/1.1rnHost: arnrn
- Program yang terkena dampak:
- Node.js:
- 7 Juli 2023: Dilaporkan melalui laporan HackerOne.
- 31 Juli 2023: Memperbaiki komit llhttp.
- 16 September 2023: Diperbaiki dalam penerapan Node.
- Garis potongan salah diakhiri
rX
, di mana X
dapat berupa byte apa pun.
- Kasus penggunaan: Minta penyelundupan.
- Persyaratan: Transduser yang meneruskan
r
dalam spasi opsional di chunk-ext. - Risiko: Tinggi. Lihat bug transduser 3.
- Muatan:
GET / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn5rr;ABCDrn34rnErn0rnrnGET / HTTP/1.1rnHost: arnContent-Length: 5rnrn0rnrn
- Program yang terkena dampak:
- Node.js:
- 9 Juli 2023: Dilaporkan melalui komentar HackerOne.
- 31 Juli 2023: Memperbaiki komit llhttp.
- 16 September 2023: Diperbaiki dalam penerapan Node.
- Header
Content-Length
diinterpretasikan dengan strtoll(,,0)
, sehingga awalan 0
, +
, -
, dan 0x
disalahartikan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan
0
di awal nilai Content-Length
, yang diizinkan oleh standar. - Risiko: Tinggi. Ini dapat dieksploitasi terhadap transduser yang memenuhi standar.
- Muatan:
GET / HTTP/1.1rnHost: whateverrnContent-Length: 010rnrn01234567
- Program yang terkena dampak:
- Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- Permintaan dengan beberapa header
Content-Length
yang bertentangan diterima, dengan memprioritaskan yang terakhir.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan permintaan dengan 2 header
Content-Length
, memprioritaskan yang pertama. - Risiko: Rendah. Saya tidak mengetahui adanya transduser seperti itu, tetapi keberadaannya tampaknya sangat mungkin terjadi.
- Muatan:
GET / HTTP/1.1rnHost: arnContent-Length: 0rnContent-Length: 1rnrnZ
- Program yang terkena dampak:
- HTTP Cepat:
- 4 Februari 2024: Dilaporkan melalui email.
- 11 Februari 2024: Diperbaiki dalam penerapan.
-
r
diizinkan dalam nilai header.
- Kasus penggunaan: ???
- Persyaratan: Transduser yang salah menafsirkan dan meneruskan
r
nilai header. - Risiko: Rendah. Saya tidak mengetahui adanya transduser seperti itu.
- Payload:
GET / HTTP/1.1rnHost: whateverrnHeader: varluernrn
- Program yang terkena dampak:
- Kecepatan OpenLite:
- 31 Juli 2023: Dilaporkan melalui email.
- 10 Agustus 2023: Diperbaiki di OLS 1.7.18.
- Nilai header terpotong di
x00
.
- Kasus penggunaan: bypass ACL
- Persyaratan: Transduser yang meneruskan
x00
nilai header. - Risiko: Sedang. Lihat bug transduser 12.
- Muatan:
GET / HTTP/1.1rnHost: whateverrnTest: testx00THESE BYTES GET DROPPEDrnConnection: closernrn
- Program yang terkena dampak:
- Kecepatan OpenLite:
- 3 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Diperbaiki pada atau sebelum tanggal ini.
- Kehidupan:
- 29 Januari 2024: Dilaporkan melalui penasihat keamanan GH.
- 31 Januari 2024: Tetap tidak diperbaiki.
- Pengembalian pengangkutan diteruskan dalam spasi opsional setelah titik koma dalam ekstensi potongan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server yang memperlakukan
rr
setara dengan rn
di lokasi ini. - Risiko: Tinggi. Lihat bug server 31.
- Muatan:
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
- Program yang terkena dampak:
- CDN Akamai:
- 3 Desember 2023: Dilaporkan melalui email.
- 10 Juli 2024: Diperbaiki pada atau sebelum tanggal ini.
- Nama header dapat dilanjutkan melintasi baris.
- Kasus penggunaan: meminta penyelundupan.
- Persyaratan: Transduser yang meneruskan baris header yang tidak berisi
:
. - Risiko: Sedang. Lihat bug transduser 14.
- Muatan:
POST / HTTP/1.1rnHost: whateverrnTransfer-rnEncoding: chunkedrnContent-Length: 5rnrn0rnrn
- Program yang terkena dampak:
- Penumpang:
- 6 November 2023: Dilaporkan melalui email.
- 22 Januari 2024: Telah diperbaiki dalam rilis.
-
Content-Length
yang kosong dalam permintaan ditafsirkan sebagai ``dibaca hingga batas waktu habis."
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang menerima dan meneruskan nilai header
Content-Length
kosong, dan memperlakukannya setara dengan 0. - Risiko: Sedang. Lihat bug transduser 5 dan 11.
- Muatan:
GET / HTTP/1.1rnHost: localhostrnContent-Length: rnrnGET / HTTP/1.1rnHost: localhostrnrn
- Program yang terkena dampak:
- Puma:
- 16 Juni 2023: Dilaporkan melalui email.
- 17 Agustus 2023: Diperbaiki di Puma 6.3.1 dan 5.6.7. Lihat penasehat.
- Badan pesan yang terpotong dihentikan pada
rnXX
, di mana XX
dapat berupa dua byte apa pun.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang mempertahankan kolom trailer dan tidak menambahkan spasi antara nilai
:
dan dalam kolom trailer. (ATS adalah salah satu server tersebut) - Risiko: Tinggi. Persyaratan untuk mengeksploitasi bug ini tidak mengharuskan transduser melanggar standar.
- Muatan:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrn0rnX:POST / HTTP/1.1rnrn
- Program yang terkena dampak:
- Puma:
- 31 Juli 2023: Dilaporkan melalui email.
- 17 Agustus 2023: Diperbaiki di Puma 6.3.1 dan 5.6.7. Lihat penasehat.
- Ditugaskan CVE-2023-40175.
- Metode dan versi HTTP tidak divalidasi.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada.
- Muatan:
x00 / HTTP/............0596.7407.rnrn
- Program yang terkena dampak:
- Pelayan:
- 17 Oktober 2023 : PR diserahkan.
- 4 Februari 2024 : Diperbaiki dalam penggabungan PR.
-
xa0
dan x85
dihapus dari awal dan akhir nilai header, kecuali untuk header Transfer-Encoding
.
- Kasus penggunaan: Bypass ACL nilai header
- Persyaratan: Transduser yang menerima dan meneruskan
xa0
dan x85
pada tempatnya. - Risiko: Sedang. Standar ini memungkinkan transduser meneruskan teks obs dalam nilai header.
- Muatan:
GET /login HTTP/1.1rnHost: arnUser: x85adminxa0rnrn
- Program yang terkena dampak:
- Pelayan:
- 4 Februari 2024: Dilaporkan melalui edisi GH.
- 4 Februari 2024: Diperbaiki dalam penerapan.
- Nilai
Content-Length
yang kosong ditafsirkan setara dengan 0
, dan diprioritaskan di atas nilai Content-Length
berikutnya.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang meneruskan nilai
Content-Length
yang kosong sebelum nilai yang tidak kosong, dan menafsirkan nilai yang tidak kosong. - Risiko: Tinggi. Lihat bug transduser 11.
- Muatan:
GET / HTTP/1.1rnContent-Length: rnContent-Length: 43rnrnPOST /evil HTTP/1.1rnContent-Length: 18rnrnGET / HTTP/1.1rnrn
- Program yang terkena dampak:
- WEBbata:
- 14 Agustus 2023: Dilaporkan melalui edisi GH.
- 15 Agustus 2023 : Diperbaiki di PR.
-
x00
dihapus dari ujung nilai header.
- Kasus penggunaan: bypass ACL
- Persyaratan: Transduser yang meneruskan
x00
nilai header. - Risiko: Sedang. Lihat bug transduser 12.
- Muatan:
GET / HTTP/1.1rnEvil: evilx00rnrn
- Program yang terkena dampak:
- WEBbata:
- 30 November 2023: Dilaporkan melalui edisi GH.
- 3 Februari 2024, 2024 : Diperbaiki di PR.
- Semua kode transfer yang tidak diketahui diperlakukan setara dengan
chunked
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Sebuah transduser yang meneruskan Transfer-Encodings selain
identity
dan chunked
. Hal ini diperbolehkan oleh standar. - Risiko: Tinggi. Hal ini memungkinkan penyelundupan permintaan terhadap beberapa transduser yang memenuhi standar.
- Muatan:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: bleghrnrn1rnZrn0rnrn
- Program yang terkena dampak:
- HTTP Cepat:
- 4 Februari 2024: Dilaporkan melalui email.
- 11 Februari 2024: Diperbaiki dalam penerapan.
- Koneksi ditutup sebelum waktunya ketika permintaan yang tidak valid disalurkan setelah permintaan yang valid.
- Kasus penggunaan: ???
- Persyaratan: Tidak ada.
- Risiko: Tidak ada.
- Muatan:
GET / HTTP/1.1rnConnection: closernrnInvalidrnrn
- Program yang terkena dampak:
- Luwak:
- 29 Januari 2024: Dilaporkan melalui edisi GH.
- 13 Februari 2024: Diperbaiki dalam penerapan.
- Uvicorn:
- 29 Januari 2024: Dilaporkan melalui komentar diskusi GH.
- 6 Februari 2024: Komitmen diperbaiki secara tidak sengaja.
- Byte yang lebih besar dari
x80
dihapus dari awal dan akhir nilai header.
- Kasus penggunaan: Kumpulan masalah.
- Persyaratan: Transduser yang meneruskan header Host yang berisi byte lebih besar dari
x80
. - Risiko: Sedang.
- Muatan:
POST / HTTP/1.1rnHost: xffaxffrnTransfer-Encoding: xffchunkedxffrnrn1rnZrn0rnrn
- Program yang terkena dampak:
- Sanggul:
- 13 Februari 2024: Dilaporkan melalui edisi GH.
- 13 Februari 2024: Tetap tidak diperbaiki.
- Ketika potongan yang tidak valid diterima, koneksi tidak ditutup, dan awal pesan berikutnya ditempatkan setelah
rn
pertama setelah potongan yang tidak valid.
- Kasus penggunaan: Keracunan antrian respons.
- Persyaratan: Transduser yang meneruskan potongan yang tidak valid.
- Risiko: Sedang.
- Muatan:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrnINVALID!!!rnGET / HTTP/1.1rnHost: whateverrnrn
- Program yang terkena dampak:
- ceri:
- 14 Februari 2024: Dilaporkan melalui edisi GH.
- 14 Februari 2024: Masih belum diperbaiki.
- Permintaan yang disalurkan dalam buffer permintaan awal ditafsirkan sebagai isi pesan dari permintaan pertama dalam buffer, meskipun permintaan tersebut memiliki header
Content-Length: 0
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Transduser yang tidak mengubah batas elemen aliran masuk.
- Risiko: Rendah. Saya tidak mengetahui adanya transduser seperti itu
- Muatan:
POST / HTTP/1.1rnContent-Length: 0rnConnection:keep-alivernHost: arnid: 0rnrnPOST / HTTP/1.1rnHost: arnid: 1rnContent-Length: 34rnrn
GET / HTTP/1.1rnHost: arnid: 2rnrn
- Program yang terkena dampak:
- Puma:
- 2 Februari 2024: Dilaporkan melalui email.
- 2 Februari 2024: Diperbaiki dalam penerapan.
Bug Transduser
Ini adalah bug dalam cara transduser menafsirkan, menormalkan, dan meneruskan permintaan.
-
0x
-nilai Content-Length
yang diawali dengan salah diterima dan diteruskan, tanpa validasi isi pesan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server yang menafsirkan
Content-Length
sebagai awalan terpanjang yang valid, atau menafsirkan 0x
-prefixed Content-Length
. - Risiko: Sedang. Lihat bug server 10, 29, dan 32.
- Muatan:
POST / HTTP/1.1rnHost: akamai.my-domain.coolrnContent-Length: 0x10rnrnZ
- Program yang terkena dampak:
- CDN Akamai:
- 7 September 2023: Dilaporkan melalui email.
- 27 November 2023: Pemberitahuan perbaikan melalui email.
- Nilai ukuran potongan yang tidak valid diterima dan diteruskan secara tidak benar.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server backend HTTP/1.1
- Risiko: Tinggi. Bug ini dapat dieksploitasi untuk penyelundupan permintaan terhadap backend yang sewenang-wenang.
- Muatan:
POST / HTTP/1.1rnHost: akamai.my-domain.coolrnTransfer-Encoding: chunkedrnrnZrnZZrnZZZrnrn
- Program yang terkena dampak:
- CDN Akamai:
- 7 September 2023: Dilaporkan melalui email.
- 27 November 2023: Pemberitahuan perbaikan melalui email.
-
r
salah diizinkan di spasi chunk-ext sebelum ;
.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server yang salah menafsirkan
r
di lokasi ini. - Risiko: Tinggi. Lihat bug server 31.
- Muatan:
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
- Program yang terkena dampak:
- CDN Akamai:
- 7 September 2023: Dilaporkan melalui email.
- 27 November 2023: Pemberitahuan perbaikan melalui email.
- Server Lalu Lintas Apache:
- 20 September 2023: Dilaporkan melalui edisi GH.
- 13 Februari 2024 : Diperbaiki di PR.
- Penyeimbang Beban Aplikasi Google Cloud Klasik:
- 13 September 2023: Dilaporkan melalui Google IssueTracker.
- 30 Januari 2024: Diperbaiki pada atau sebelum tanggal ini.
- Pesan yang berisi potongan yang tidak valid diteruskan tanpa isi pesannya.
- Kasus penggunaan: ???
- Persyaratan: Tidak Ada
- Risiko: Tidak ada.
- Muatan:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn1r0n
- Program yang terkena dampak:
- Pound:
- 13 Juni 2024: Dilaporkan melalui edisi GH.
- 14 Juni 2024: Diperbaiki dalam penerapan.
- Header
Content-Length
yang kosong salah diteruskan.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server yang menafsirkan nilai
Content-Length
kosong selain 0 - Risiko: Sedang. Lihat bug server 38.
- Payload:
GET / HTTP/1.1rnhost: whateverrncontent-length: rnrn
- Program yang terkena dampak:
- Server Lalu Lintas Apache:
- 2 Agustus 2023: Dilaporkan melalui edisi GH.
- 6 Agustus 2023: Diperbaiki melalui PR.
- Byte yang tidak diizinkan diterima dan diteruskan dalam nama header.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server yang salah menafsirkan byte yang tidak valid ini dalam nama header.
- Risiko: Sedang. Lihat bug server 41.
- Muatan:
GET / HTTP/1.1rnHost: fanoutrnHeaderx85: valuernrn
- Program yang terkena dampak:
- Server Lalu Lintas Apache:
- 29 Juni 2023: Dilaporkan melalui email.
- 18 September 2023: Dilaporkan melalui edisi GH.
- 31 Januari 2024: Tetap tidak diperbaiki.
- OpenBSD menyampaikan:
- 10 November 2023 : Dilaporkan melalui email.
- 28 November 2023: Ditambal dalam penerapan.
- Ukuran potongan ditafsirkan sebagai awalan valid terpanjangnya, dan dipancarkan kembali.
- Kasus penggunaan: Minta penyelundupan
- Persyaratan: Server yang menafsirkan awalan
0_
atau 0x
pada ukuran potongan. - Risiko: Tinggi. Lihat server bugs 1, dan 25, dan transduser bug 19.
- Payload:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn1these-bytes-never-get-validatedrnZrn0rnrn
- Program yang terpengaruh:
- Server Lalu Lintas Apache:
- 10 Oktober 2023: Dilaporkan melalui masalah GH.
- 13 Februari 2024: diperbaiki dalam pr.
- Placeholder :)
-
Transfer-Encoding: ,chunked
diteruskan utuh, dan ditafsirkan sebagai setara dengan chunked
.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang keduanya mengabaikan
Transfer-Encoding
yang tidak diketahui dan memperlakukan ,chunked
berbeda dari chunked
. - Risiko: Tinggi. Lihat server bug 21.
- Payload:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: ,chunkedrnrn0rnrn
- Program yang terpengaruh:
- Azure CDN:
- 15 Oktober 2023: Dilaporkan melalui Laporan Kerentanan MSRC.
- 29 November 2023: diperbaiki pada atau sebelum tanggal ini.
- 12 Desember 2023: "Kasus ini tidak memenuhi bar untuk dilayani oleh MSRC karena penyelundupan HTTP tidak mempertimbangkan kerentanan dan kami akan menutup kasus ini."
- NGHTTPX:
- 14 Oktober 2023: Dilaporkan melalui email.
- 17 Oktober 2023: diperbaiki dalam pr.
-
r
salah diteruskan dalam nilai header.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang memperlakukan
r
setara dengan rn
di dalam bidang header. - Risiko: Medium. Lihat server bug 13.
- Payload:
GET / HTTP/1.1rnInvalid-Header: thisrvaluerisrinvalidrnrn
- Google Cloud Classic Application Load Balancer:
- 7 September 2023: Dilaporkan melalui Google Issuetracker.
- 30 Januari 2024: Diperbaiki atau sebelum tanggal ini.
- Header
Content-Length
kosong salah diteruskan, bahkan di hadapan header Content-Length
lainnya, selama header Content-Length
kosong didahulukan.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang menginterpretasikan nilai-nilai
Content-Length
kosong sebagai 0 dan menerima beberapa header Content-Length
dalam permintaan yang masuk, memprioritaskan yang pertama. - Risiko: Medium. Lihat server bug 42.
- Payload:
GET / HTTP/1.1rnhost: whateverrncontent-length: rncontent-length: 59rnrnPOST /evil HTTP/1.1rnhost: whateverrncontent-length: 34rnrnGET / HTTP/1.1rnhost: whateverrnrn
- Program yang terpengaruh:
- Haproxy:
- 2 Agustus 2023: Dilaporkan melalui masalah GH.
- 9 Agustus 2023: Tetap dalam komit.
- 10 Agustus 2023: Ditugaskan CVE-2023-40225.
-
x00
diteruskan dalam nilai header.
- Gunakan kasing: bypass acl
- Persyaratan: Server yang memotong nilai header di
x00
. - Risiko: Medium. Lihat server Bugs 35 dan 43, dan Transducer Bug 20.
- Payload:
GET / HTTP/1.1rnHost: google.comx00.kallus.orgrnrn
- Program yang terpengaruh:
- Haproxy:
- 19 September 2023: Dilaporkan melalui email.
- 31 Januari 2024: Tetap dalam komit.
- OpenLiteSpeed:
- 3 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Tetap pada atau sebelum tanggal ini.
- Bare
n
diterima sebagai terminator garis chunk.
- Gunakan kasus: ???
- Persyaratan: N/A.
- Risiko: Tidak Ada
- Payload:
GET / HTTP/1.1rnTransfer-Encoding: chunkedrnrnarn0123456789n0rnrn
- Program yang terpengaruh:
- Haproxy:
- 25 Januari 2024: Dilaporkan melalui email.
- 30 Januari 2024: ditetapkan dalam komit 7b737da dan 4837e99.
- Garis lapangan tanpa
:
diteruskan apa adanya.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server backend yang salah menafsirkan garis bidang header tanpa
:
. - Risiko: Medium. Lihat Bug Transduser 28 dan 37.
- Payload:
GET / HTTP/1.1rnHost: whateverrnTenst: testrnConnection: closernrn
- Program yang terpengaruh:
- OpenLiteSpeed:
- 3 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Tetap pada atau sebelum tanggal ini.
- Permintaan yang mengandung header
Content-Length
dan Transfer-Encoding
diteruskan AS-IS jika nilai Transfer-Encoding
tidak diakui.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server backend yang memperlakukan
,chunked
setara dengan chunked
, dan memprioritaskan Transfer-Encoding
daripada Content-Length
. Perilaku ini diizinkan oleh standar. - Risiko: Tinggi. Ini memungkinkan penyelundupan permintaan ke server yang sesuai dengan standar.
- Payload:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnConnection: closernrn0rnrn
- Program yang terpengaruh:
- OpenLiteSpeed:
- 3 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Tetap pada atau sebelum tanggal ini.
- Pound:
- 4 Februari 2024: Dilaporkan melalui masalah GH.
- 29 Maret 2024: Tetap dalam komit.
-
n
tidak dinormalisasi ke rn
dalam pesan yang diteruskan.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server backend yang tidak menafsirkan
n
sebagai garis yang berakhir di garis header. Standar ini memungkinkan server untuk diterjemahkan n
. - Risiko: Tinggi. Bug ini dapat dieksploitasi terhadap server yang sesuai dengan standar.
- Payload:
GET / HTTP/1.1nHost: whatevernConnection: closenn
- Program yang terpengaruh:
- OpenLiteSpeed:
- 3 November 2023: Dilaporkan melalui email.
- 31 Januari 2024: Masih tidak tertutup.
- Badan Pesan yang Dikalahkan yang berisi ekstra
rn
sebelum terminator chunk tidak chunked tanpa mengganti header Transfer-Encoding
dengan Content-Length
.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Tidak Ada.
- Risiko: Tinggi. Bug ini dapat dieksploitasi terhadap server backend yang sewenang -wenang.
- Payload:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn17rn0rnrnGET / HTTP/1.1rnrnrnrn0rnrn
- Program yang terpengaruh:
- OpenLitespeed
- 30 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Tetap pada atau sebelum tanggal ini.
-
Transfer-Encoding: ,chunked
diteruskan utuh, dan tidak ditafsirkan sebagai setara dengan chunked
.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang menafsirkan
,chunked
setara dengan chunked
, yang menurut standar Anda dapat lakukan. - Risiko: Tinggi. Ini adalah permintaan kerentanan penyelundupan yang dapat digunakan terhadap backend yang sesuai dengan standar.
- Payload:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: ,chunkedrnContent-Length: 5rnrn0rnrn
- Program yang terpengaruh:
- OpenBSD Relayd:
- 10 November 2023: Dilaporkan melalui email.
- 28 November 2023: Ditentangkan dalam komit.
- Ukuran chunk dengan
+
, -
, dan 0x
awalan ditafsirkan dan diteruskan.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang menginterpretasikan ukuran chunk sebagai awalan yang paling lama valid.
- Risiko: Tinggi. Lihat server bug 22.
- Payload:
POST / HTTP/1.1rnTransfer-Encoding: chunkedrnrn-0x0rnrn
- Program yang terpengaruh:
- OpenBSD Relayd:
- 10 November 2023: Dilaporkan melalui email.
- 28 November 2023: Ditentangkan dalam komit.
- Pound:
- 10 Oktober 2023: Dilaporkan melalui masalah GH.
- 11 Oktober 2023: Diperbaiki melalui komit 60a4f42 dan f70db92.
- Header yang mengandung
x00
atau n
digabungkan ke dalam nilai header sebelumnya.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server backend yang sesuai dengan standar.
- Risiko: Tinggi. Ini adalah permintaan umum kerentanan penyelundupan.
- Payload:
GET / HTTP/1.1rna:brncx00rnrn
- Program yang terpengaruh:
- OpenBSD Relayd:
- 10 November 2023: Dilaporkan melalui email.
- 29 November 2023: ditambal dalam komit.
- Badan pesan dilucuti dari permintaan
GET
tanpa menghapus header Content-Length
mereka.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server backend apa pun yang mendukung perpipaan.
- Risiko: Tinggi. Ini adalah permintaan umum kerentanan penyelundupan.
- Payload:
GET / HTTP/1.1rnContent-Length: 10rnrn1234567890
- Program yang terpengaruh:
- OpenBSD Relayd:
- 28 November 2023: Dilaporkan melalui email.
- 1 Desember 2023: Ditentangkan dalam komit.
- Permintaan yang berisi beberapa header
Content-Length
diteruskan, memprioritaskan yang terakhir.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang menerima permintaan yang berisi beberapa header
Content-Length
, memprioritaskan yang pertama. - Risiko: Tinggi. Lihat server bug 23.
- Payload:
POST / HTTP/1.1rnHost: arnContent-Length: 0rnContent-Length: 31rnrnGET /evil HTTP/1.1rnHost: arnrn
- Program yang terpengaruh:
- OpenBSD Relayd:
- 30 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Tetap tidak tetap.
- Permintaan yang berisi
Content-Length
dan Transfer-Encoding
diteruskan.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang memprioritaskan
Content-Length
daripada Transfer-Encoding
, atau tidak mendukung Transfer-Encoding: chunked
. - Risiko: Tinggi. Ini adalah vektor penyelundupan permintaan klasik.
- Payload:
POST / HTTP/1.1rnHost: arnContent-Length: 5rnTransfer-Encoding: chunkedrnrn0rnrn
- Program yang terpengaruh:
- OpenBSD Relayd:
- 30 November 2023: Dilaporkan melalui email.
- 10 Juli 2024: Tetap tidak tetap.
- Ukuran potongan yang diprefisisi oleh whitespace diterima dan diteruskan.
- Gunakan kasus: ???
- Persyaratan: N/A.
- Risiko: Tidak Ada
- Payload:
POST / HTTP/1.1rnHost: arnTransfer-Encoding: chunkedrnrn 0rnrn
- Program yang terpengaruh:
- OpenBSD Relayd:
- 30 November 2023: Dilaporkan melalui email.
- 31 Januari 2024: Masih tidak tertutup.
- Pound:
- 15 Oktober 2023: Dilaporkan melalui masalah GH.
- 25 November 2023: Tetap dalam komit.
- Permintaan yang berisi beberapa
Transfer-Encoding: chunked
diteruskan, dan diperlakukan setara dengan satu header tersebut.
- Gunakan kasing: minta penyelundupan
- Persyaratan: Server yang memperlakukan beberapa
Transfer-Encoding: chunked
tidak setara dengan tidak ada Transfer-Encoding: chunked
, atau bergabung dengan beberapa header Transfer-Encoding
, dan memperlakukan chunked,chunked
berbeda dari chunked
. - Risiko: Medium. Lihat server bug 21.
- Payload:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnTransfer-Encoding: chunkedrnrn0rnrn
- Program yang terpengaruh:
- Pound:
- 7 Oktober 2023: Dilaporkan melalui masalah GH.
- 12 Oktober 2023: Tetap dalam komit.
Bug bonus
Ini adalah bug yang kami temukan secara kebetulan hanya dengan menyiapkan taman HTTP dan mengirimkan permintaan contoh. Mereka tidak benar -benar menghitung karena mereka tidak perlu menggunakan taman, tetapi saya pikir saya harus mendokumentasikannya.
- Argumen null diteruskan ke
memcpy
dalam perilaku yang tidak ditentukan.
- Gunakan kasus: ???
- Persyaratan: N/A.
- Risiko: Tidak Ada
- Payload: Permintaan apa pun dengan badan pesan kosong yang akan diteruskan ke backend Proxy_FCGI.
- Program yang terpengaruh:
- Apache httpd:
- 2 Desember 2023: Dilaporkan melalui masalah Bugzilla.
- 19 Desember 2023: Tetap dalam Revisi 1914775.
- UWSGI:
- 1 Januari 2024: Dilaporkan melalui masalah GH.
- Februiary 8, 2024: ditambal dalam pr.
- Penggunaan-setelah-bebas.
- Gunakan kasing: dos
- Persyaratan: Server menggunakan
attach_server_session_to_client
- Risiko: Rendah. Meskipun ini crash ATS, sangat mudah untuk memperhatikan bahwa orang yang masuk akal tidak akan menggunakan contoh yang rentan dalam produksi.
- Payload: Permintaan apa pun.
- Program yang terpengaruh:
- Server Lalu Lintas Apache:
- 31 Juli 2023: Dilaporkan melalui masalah GH.
- 13 September 2023: diperbaiki melalui pr.
- Mengirim byte tambahan setelah permintaan dengan badan pesan yang dipotong merusak server dengan segfault.
- Gunakan kasing: dos
- Persyaratan: FastCGI diaktifkan.
- Risiko: Tinggi. Ini adalah bug yang sepele-untuk-mengeksploitasi yang merusak server.
- Payload:
GET / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrn0rnrnx00
- Program yang terpengaruh:
- OpenBSD httpd:
- 1 November 2023: Dilaporkan melalui email.
- 8 November 2023: Tetap dalam komit.
- Badan permintaan yang dipotong masuk digemakan kembali sebelum tanggapan dikirim.
- Gunakan kasing: dos
- Persyaratan: FastCGI diaktifkan.
- Risiko: Medium. Ini akan membatalkan aliran permintaan untuk setiap pesan yang dipotong, yang akan merusak koneksi bersama.
- Payload:
POST / HTTP/1.1rnHost: whateverrnTransfer-Encoding: chunkedrnrn1rnZrn0rnrn
- Program yang terpengaruh:
- OpenBSD httpd:
- 4 Januari 2024: Dilaporkan melalui email.
- 31 Januari 2024: Masih tidak tertutup.
- Dereferensi nol setelah menerima permintaan apa pun.
- Gunakan kasing: dos
- Persyaratan:
mod_dir
diaktifkan dengan opsi konfigurasi tertentu. - Risiko: Rendah. Bug ini sangat jelas sehingga tidak ada yang waras yang akan menggunakan server yang rentan.
- Payload: Apa pun.
- Program yang terpengaruh:
- Apache httpd:
- 24 Januari 2024: Dilaporkan melalui masalah Bugzilla.
- 24 Januari 2024: Masih tidak tertutup.
Bonus bonus bug
Ini adalah bug yang kami temukan kembali ketika taman memiliki dukungan HTTP/2. Kami menghapus dukungan HTTP/2 karena sedikit setengah matang, tetapi ingin sekali dapat menambahkannya kembali!
- Karakter whitespace tidak dilucuti dari nilai lapangan selama http/2 ke http/1.1 penurunan peringkat.
- Gunakan kasus: ???
- Persyaratan: N/A.
- Risiko: Tidak Ada
- Payload:
PRI * HTTP/2.0rnrnSMrnrnx00x00x00x04x00x00x00x00x00x00x00Ex01x05x00x00x00x01x00n:authoritytlocalhostx00x05:pathx01/x00x07:methodx03GETx00x07:schemex04httpx00x05test1x03tat
- Program yang terpengaruh:
- Utusan:
- 7 Juli 2023: Dilaporkan melalui masalah GH.
- 7 Oktober 2023: Tetap tidak tertutup.
- H2O:
- 7 Juli 2023: Dilaporkan melalui masalah GH.
- 18 Juli 2023: Ditetapkan dalam PR #3256.
- Cache pernis:
- 7 Juli 2023: Dilaporkan melalui masalah GH.
- 22 Agustus 2023: Tetap dalam komit.
- Nama header kosong disimpan di seluruh http/2 ke http/1.1 terjemahan, yang mengarah ke produksi http/1.1 yang tidak valid.
- Gunakan kasing: dos
- Persyaratan: Penurunan peringkat HTTP/2 sedang dilakukan, dan backend menolak nama header kosong (seperti kebanyakan).
- Risiko: Rendah. Bug ini dapat digunakan untuk membuat server 400 yang masuk akal, yang akan mematahkan berbagi koneksi.
- Payload:
PRI * HTTP/2.0rnrnSMrnrnx00x00x00x04x00x00x00x00x00x00x00=x01x05x00x00x00x01x00n:authoritytlocalhostx00x05:pathx01/x00x07:methodx03GETx00x07:schemex04httpx00x00x00
- Program yang terpengaruh:
- H2O:
- 7 Juli 2023: Dilaporkan melalui masalah GH.
- 18 Juli 2023: Ditetapkan dalam PR #3256.