GitHub menambah 48 IP webhook: daftar izin tetap perlu tanda tangan

Dev
Tayangan 3

Pull request terbuka, tetapi bot deployment diam. Permintaan mungkin ditolak firewall sebelum mencapai aplikasi. Pengumuman GitHub pada 29 Oktober menyangkut jalur masuk tersebut.

Tiga rentang tambahan di sisi penerima

CIDR baru adalah 9.234.98.160/28, 9.234.98.176/28, dan 9.234.106.48/28. Rentang ini berlaku untuk pengiriman webhook github.com pada semua paket, termasuk GitHub Enterprise Cloud. Tambahkan ke daftar izin statis tanpa mengganti rentang lama.

Setiap /28 mencakup 16 alamat, total 48. Gambar menampilkan perhitungan lokal nyata memakai ipaddress Python, bukan jumlah akun atau server. Menurut GitHub, tidak perlu perubahan tambahan jika daftar sudah diperbarui melalui hooks dari GET /meta.

Visualisasi buatan sendiri dari perhitungan Python: tiga prefiks /28 mencakup 48 alamat.
Visualisasi buatan sendiri dari perhitungan Python: tiga prefiks /28 mencakup 48 alamat.

IP dan tanda tangan menjawab pertanyaan berbeda

Daftar izin memilih jaringan sumber yang boleh mencapai penerima. Gunakan hooks, bukan actions yang berkaitan dengan jalur runner. Layanan penerima event dan job CI yang memanggil API eksternal bergerak ke arah jaringan berbeda.

Setelah itu, verifikasi X-Hub-Signature-256 dengan secret webhook tersebut. GitHub membuat HMAC-SHA256 dari secret dan isi permintaan. Hitung dari byte asli lalu bandingkan dengan cara berwaktu konstan seperti hmac.compare_digest atau crypto.timingSafeEqual. IP yang diizinkan tidak menggantikan pemeriksaan ini.

JSON setara belum tentu memiliki byte sama

Mengubah {"action":"opened"} menjadi {"action": "opened"} menambahkan spasi. Maknanya sama, tetapi tanda tangannya dapat berbeda. Contoh lokal dengan secret demonstrasi publik menghasilkan True untuk byte identik dan False setelah spasi ditambah. Ini bukan rekaman pengiriman GitHub nyata.

Contoh HMAC yang dijalankan lokal memakai secret demonstrasi publik: satu spasi mengubah byte. Bukan rekaman webhook.
Contoh HMAC yang dijalankan lokal memakai secret demonstrasi publik: satu spasi mengubah byte. Bukan rekaman webhook.

Simpan body mentah sebelum transformasi dan periksa kemungkinan perubahan oleh proxy atau framework. Menaruh secret di URL payload justru membuka jalur kebocoran. Simpan di konfigurasi server yang aman.

Pulihkan pengiriman tanpa mengulang pekerjaan selesai

Sesudah jaringan pulih, periksa pengiriman gagal dan kirim ulang yang diperlukan. X-GitHub-Delivery tetap sama pada pengiriman ulang yang diminta. Bedakan pekerjaan selesai dari kegagalan yang bisa dilanjutkan; membuang semua ID yang pernah terlihat dapat menghalangi pemulihan.

GitHub menyarankan respons 2XX dalam sepuluh detik dan antrean untuk pemrosesan panjang. Hubungkan verifikasi, penerimaan persisten, dan status yang dapat dicoba ulang. Dengan begitu, tiga CIDR menjadi bagian jalur kedatangan, validasi, dan penyelesaian.

Sumber dan bacaan lanjutan

GitHub Changelog · 2026-10-29

GitHub Docs · Meta API

GitHub Docs · Webhook signatures

GitHub Docs · Webhook best practices