Jawaban langsung: CVE-2026-119618 adalah celah race condition di mod_http2, modul HTTP/2 Apache HTTP Server. Red Hat memberi skor CVSS 3.1 9.8: penyerang dari jaringan, tanpa login, bisa menjalankan kode di server. Hari ini, cek versi Apache dan status HTTP/2, pasang paket aman, lalu restart penuh Apache.

Apache merilis httpd 2.4.71 pada 11 November 2026. Versi 2.4.55 sampai 2.4.70 rentan bila HTTP/2 aktif. Rilis yang sama juga menutup CVE-2026-106023 di mod_md dan CVE-2026-109163 di mod_vhost_alias.

Kondisi utama: Menurut halaman CVE Red Hat, server terdampak hanya bila mod_http2 dimuat dan direktif Protocols memuat h2 atau h2c. Red Hat juga menulis bahwa riset publik sudah menunjukkan exploit yang andal pada konfigurasi default dengan mod_http2 aktif.

Batas: Per 13 November 2026, CISA KEV tidak memuat celah ini, dan kami tidak menemukan laporan serangan. Artikel ini tidak memuat isi request, payload, atau urutan serangan.

Kami membaca advisory keamanan Apache httpd 2.4, catatan CVE-2026-119618, halaman CVE Red Hat, pelacak keamanan Debian, USN-9090-1, changelog EasyApache 4 cPanel, dan CISA KEV pada 13 November 2026, pukul 13.30 sampai 14.05 WIB. Skrip di langkah 1, 3, 4, dan 5 kami uji di container podman dengan image resmi httpd, Debian, Ubuntu, dan UBI 9. Kami tidak menguji cPanel EasyApache 4, karena tidak ada image resmi.

Masalah: HTTP/2 aktif di banyak server Apache

Apache HTTP Server menjalankan situs di VPS, server kantor, image Docker, dan shared hosting berbasis cPanel. Admin menyalakan HTTP/2 agar halaman dengan banyak berkas termuat lebih cepat.

Di uji kami pada Debian dan Ubuntu, perintah a2enmod http2 langsung memasang baris Protocols h2 h2c http/1.1. Image resmi httpd dan RHEL 9 tidak memasang baris h2 secara default. Jadi status HTTP/2 berbeda per server, dan Anda harus mengecek setiap server.

Analisa Rama Digital: server dengan port 443 terbuka dan HTTP/2 aktif bisa dijangkau penyerang dari internet sebelum login. Kondisi: versi rentan dan modul dimuat. Batas: advisory tidak menulis port, karena HTTP/2 bisa jalan di port mana pun.

Linimasa: laporan 26 Oktober dan 3 November, Red Hat dan Apache 2.4.71 pada 11 November 2026, paket distro dan cPanel 12 November, belum masuk KEV 13 November.
Titik abu-abu: laporan dan status serangan. Titik merah: Red Hat publik. Titik teal: rilis perbaikan. Titik amber: tugas Anda hari ini. Sumber: advisory Apache, catatan CVE, Red Hat, Debian, Ubuntu, cPanel, dan CISA KEV.

Anthropic OSS Scanner melaporkan celah ini pada 26 Oktober 2026, lalu Google Cloud Vulnerability Research melaporkannya pada 3 November. Red Hat membuka informasi pada 11 November pukul 12.52 UTC, dan catatan CVE terbit pukul 14.54 UTC. Debian, Ubuntu, cPanel, dan image Docker httpd:2.4.71 menyusul pada 12 November.

Cara kerja: race condition di mod_http2

Celah ini bekerja sebelum login, jadi password yang kuat dan MFA tidak menjaga server dari celah ini.

Bagian ini memakai ringkasan resmi. Tujuannya membantu Anda memilih langkah yang tepat, bukan menjelaskan cara menyerang.

Ringkasan dari Apache dan Red Hat

Menurut advisory keamanan Apache httpd 2.4, race condition pada sumber daya bersama di fungsi assign_headers() di mod_http2 bisa berujung pada remote code execution. Jenisnya CWE-362, yaitu eksekusi bersamaan tanpa sinkronisasi yang benar.

halaman CVE Red Hat menulis bahwa akar masalah adalah cacat thread-safety saat mod_http2 menangani permintaan HTTP/2 yang berjalan bersamaan. Akibatnya heap rusak, dan penyerang bisa menjalankan kode.

3 CVE di rilis 2.4.71

Rilis 2.4.71 memuat 3 CVE. Paket aman di tabel versi menutup CVE-2026-119618. Cek changelog distro Anda untuk 2 CVE lain.

CVEJenis celahSkor atau labelRentanAkibat
CVE-2026-119618Race condition di mod_http2 (CWE-362)Red Hat CVSS 3.1 9.8, Apache critical2.4.55 sampai 2.4.70Remote code execution tanpa login bila HTTP/2 aktif
CVE-2026-106023NULL pointer dereference di mod_mdApache important2.4.30 sampai 2.4.70Child process Apache crash
CVE-2026-109163Tulis lewat batas 1 byte di stack, mod_vhost_aliasApache low2.4.69 sampai 2.4.70Menimpa 1 byte di stack
Tiga kartu CVE rilis 2.4.71: race condition mod_http2 skor 9.8, NULL pointer mod_md label important, timpa 1 byte mod_vhost_alias label low, lalu kotak versi aman.
(1) Kartu merah: celah kritis di mod_http2. (2) Kartu amber dan abu-abu: 2 CVE lain di rilis yang sama. Kotak teal: versi yang menutup ketiga CVE. Sumber: advisory Apache httpd 2.4, catatan CVE, dan Red Hat.

Skor 9.8 berasal dari Red Hat. Apache memberi label critical. Vektor AV:N/AC:L/PR:N/UI:N berarti serangan lewat jaringan, mudah, tanpa hak akses, dan tanpa interaksi user.

Status eksploitasi per 13 November 2026

halaman CVE Red Hat menulis bahwa riset publik menunjukkan exploit yang andal pada server dengan konfigurasi default dan mod_http2 aktif. CISA KEV tidak memuat CVE-2026-119618, dan kami tidak menemukan laporan serangan di internet.

Analisa Rama Digital: riset exploit yang publik memperpendek waktu sampai serangan massal. Kondisi: server terbuka ke internet, HTTP/2 aktif, dan patch belum terpasang. Batas: kami tidak membaca dan tidak menguji exploit itu.

Siapa yang paling berisiko

Server publik dengan HTTP/2 aktif dan paket lama paling berisiko.

Tabel ini merangkum halaman CVE Red Hat, dokumentasi direktif Protocols, dan analisa kami.

Kondisi serverRisikoAlasan
HTTP/2 aktif (Protocols h2 atau h2c) di server yang terbuka ke internetTinggiIni jalur celah menurut Red Hat
Apache 2.4.55 sampai 2.4.70 dari source atau image DockerTinggiUpdate distro tidak mengganti Apache ini
IP asal server bisa dibuka langsung, walau situs di balik CDNTinggiAnalisa Rama Digital: penyerang bisa melewati CDN
Shared hosting atau reseller cPanelPeriksaProvider memegang patch dan jadwal restart
Update keamanan otomatis matiPeriksaServer tetap di paket lama
Hanya HTTP/1.1, modul http2 tidak dimuat, atau RHEL 8RendahJalur HTTP/2 tidak ada. Tetap update untuk CVE lain.
Enam kartu risiko: HTTP/2 publik, versi 2.4.55 sampai 2.4.70, dan IP asal terbuka merah; shared hosting dan update otomatis mati amber; HTTP/1.1 saja abu-abu.
Kartu merah: jalur celah terbuka dari internet. Kartu amber: kondisi yang memperpanjang risiko. Kartu abu-abu: risiko rendah. Kotak bawah: 2 perintah cek cepat. Sumber: Red Hat dan analisa Rama Digital.

Pola yang sama muncul di celah SSL VPN SonicWall CVE-2026-19868: layanan yang terbuka ke internet menjadi target pertama. Untuk produk Apache lain, baca juga celah Apache OFBiz CVE-2026-83542.

Catatan untuk MPM prefork

Menurut panduan HTTP/2 Apache, HTTP/2 didukung di semua MPM bawaan httpd, dengan batas berat di prefork. Di uji kami, httpd 2.4.70 dengan prefork dan Protocols h2 h2c http/1.1 menjawab curl dengan HTTP/1.1.

Analisa Rama Digital: jangan anggap prefork aman. Skrip di langkah 1 tetap menulis RENTAN bila modul dimuat dan Protocols memuat h2 atau h2c, jadi pasang patch.

Versi rentan dan versi aman

Cocokkan sumber paket Apache Anda dengan tabel ini. Paket distro memakai nomor versi lama, jadi bandingkan nomor paket lengkap.

Sumber paketRentan per 13 November 2026Versi aman
Apache dari source, image Docker httpd2.4.55 sampai 2.4.702.4.71 atau image httpd:2.4.71
Debian 13 trixieLebih lama dari 2.4.71-1~deb13u12.4.71-1~deb13u1 (DSA-6620-1)
Debian 12 bookwormLebih lama dari 2.4.71-1~deb12u12.4.71-1~deb12u1 (DLA-4902-1)
Ubuntu 26.10Lebih lama dari 2.4.68-1ubuntu6.22.4.68-1ubuntu6.2 (USN-9090-1)
Ubuntu 26.04Lebih lama dari 2.4.66-2ubuntu2.82.4.66-2ubuntu2.8 (USN-9090-1)
Ubuntu 24.04Lebih lama dari 2.4.58-1ubuntu8.192.4.58-1ubuntu8.19 (USN-9090-1)
Ubuntu 22.04Lebih lama dari 2.4.52-1ubuntu4.27, terdampak lewat backport2.4.52-1ubuntu4.27 (USN-9090-1)
Ubuntu 20.04Lebih lama dari 2.4.41-4ubuntu3.23+esm112.4.41-4ubuntu3.23+esm11, hanya lewat Ubuntu Pro
RHEL 10mod_http2 lebih lama dari versi amanmod_http2-2.0.29-5.el10_3.1 (RHSA-2026:98978)
RHEL 9mod_http2 lebih lama dari versi amanmod_http2-2.0.26-7.el9_9.1 (RHSA-2026:98981)
RHEL 8 dan lebih lamaTidak terdampak menurut Red HatTetap pasang update untuk CVE lain
cPanel EasyApache 4ea-apache24 2.4.70ea-apache24 2.4.71 (EA4 25.96)
mod_h2 mandiri dari GitHub2.0.8 sampai 2.0.42Rilis mod_h2 yang menyebut CVE-2026-119618
Tabel versi: Apache 2.4.55 sampai 2.4.70 dan mod_h2 2.0.8 sampai 2.0.42 rentan, lalu paket aman Debian, Ubuntu, RHEL, dan cPanel, plus catatan nomor versi lama.
Merah: rentan. Teal: versi aman. Kotak amber: paket distro memuat patch lewat backport dan tetap memakai nomor versi lama. Sumber: advisory Apache, DSA-6620-1, USN-9090-1, RHSA, dan changelog cPanel EA4.

Data tabel berasal dari advisory keamanan Apache httpd 2.4, pelacak keamanan Debian, USN-9090-1, halaman CVE Red Hat, dan changelog EasyApache 4 cPanel. Untuk stream RHEL EUS, ikuti RHSA per stream di halaman CVE Red Hat.

Catatan Ubuntu 22.04 dan 20.04: Nomor upstream 2.4.52 dan 2.4.41 ada di bawah 2.4.55. Tetapi USN-9090-1 menulis bahwa kedua rilis terdampak, karena paketnya memuat backport mod_http2. Ubuntu 20.04 mendapat paket aman hanya lewat Ubuntu Pro.

Catatan image Docker: Menurut image resmi httpd di Docker Hub, tag 2.4.71 dan 2.4.71-alpine terbit pada 12 November 2026. Tulis tag versi yang tepat di compose. Container yang berjalan tetap memakai image lama sampai Anda membuatnya ulang.

Prasyarat sebelum mulai

  • Akses sudo atau root ke setiap server Apache, termasuk server staging dan server cadangan.
  • Daftar server yang menjalankan Apache, termasuk container Docker dan reverse proxy.
  • Jendela maintenance. Restart Apache memutus koneksi yang sedang berjalan selama beberapa detik.
  • Backup konfigurasi Apache dan backup data situs yang terbaru.
  • Untuk shared hosting: kontak support provider dan nomor tiket Anda.

Langkah 1: Cek versi Apache dan status HTTP/2

Server terdampak bila versi atau paketnya rentan dan HTTP/2 aktif. Jalankan cek manual ini di setiap server:

# Versi Apache
apache2 -v      # Debian dan Ubuntu
httpd -v        # RHEL, AlmaLinux, Rocky, dan image Docker httpd
# Modul HTTP/2 dimuat atau tidak
apachectl -M 2>/dev/null | grep http2
# Semua baris Protocols. Opsi -R ikut membaca symlink di mods-enabled dan sites-enabled.
sudo grep -Rn "^\s*Protocols" /etc/apache2 /etc/httpd /usr/local/apache2/conf 2>/dev/null
# Versi paket distro
dpkg-query -W apache2-bin   # Debian dan Ubuntu
rpm -q mod_http2            # RHEL 9 dan 10

Menurut dokumentasi mod_http2, Anda harus menyalakan HTTP/2 lewat direktif Protocols. Nilai h2 berarti HTTP/2 lewat TLS, dan h2c berarti HTTP/2 lewat TCP biasa.

Untuk banyak server, simpan skrip ini sebagai cek-versi-apache.sh. Skrip membaca versi Apache, changelog paket, modul, baris Protocols, dan waktu mulai proses. Skrip hanya membaca dan tidak mengubah konfigurasi.

#!/usr/bin/env bash
# Cek Apache HTTP Server terhadap CVE-2026-119618 (mod_http2, advisory Apache 11 November 2026).
# Rentan: Apache 2.4.55 sampai 2.4.70 dengan HTTP/2 aktif. Aman: Apache 2.4.71, atau paket distro yang memuat patch.
# Ubuntu 20.04 dan 22.04 juga terdampak menurut USN-9090-1, karena paketnya memuat backport.
# Pakai di server: sudo bash cek-versi-apache.sh
# Banyak server:   for h in web-01 web-02; do ssh "$h" 'sudo bash -s' < cek-versi-apache.sh; done
# Skrip hanya membaca. Skrip tidak mengubah konfigurasi dan tidak me-restart Apache.
# Kode keluar: 0 aman atau tidak terdampak, 2 perlu tindakan, 1 Apache tidak ditemukan.
set -u
CVE=CVE-2026-119618
PATH="$PATH:/usr/sbin:/sbin:/usr/local/apache2/bin:/usr/local/apache/bin"
# Buang karakter kontrol dan batasi panjang, agar isi berkas tidak bisa mengubah tampilan terminal.
bersih() { tr -cd '[:print:]\n' | cut -c1-"${1:-90}"; }
baris() { printf '%-14s%s\n' "$1" "$2"; }
lebih_rendah() { [ "$1" != "$2" ] && [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n 1)" = "$1" ]; }
# Versi upstream: lama (di bawah 2.4.55), rentan (2.4.55 sampai 2.4.70), atau aman (2.4.71 ke atas).
kelas_upstream() { if lebih_rendah "$1" 2.4.55; then echo lama; elif lebih_rendah "$1" 2.4.71; then echo rentan; else echo aman; fi; }
deb_versi() { [ "$(dpkg-query -W -f='${db:Status-Abbrev}' "$1" 2>/dev/null)" = "ii " ] && dpkg-query -W -f='${Version}' "$1"; }
rpm_lebih_rendah() { [ "$(rpm --eval "%{lua: print(rpm.vercmp('$1', '$2'))}" 2>/dev/null)" = "-1" ]; }
# Waktu mulai proses dalam detik epoch, dari /proc/PID/stat (kolom 22) dan btime di /proc/stat.
mulai_proses() {
  local s t b hz
  s=$(sed 's/^.*) //' "/proc/$1/stat" 2>/dev/null) || return 1
  t=$(printf '%s' "$s" | awk '{print $20}'); b=$(awk '/^btime/ {print $2}' /proc/stat)
  hz=$(getconf CLK_TCK 2>/dev/null || echo 100)
  echo $(( b + t / hz ))
}

CTL=""
if command -v apache2ctl >/dev/null 2>&1; then CTL=apache2ctl
else for b in httpd apache2; do command -v "$b" >/dev/null 2>&1 && { CTL=$b; break; }; done; fi
if [ -z "$CTL" ]; then echo "Apache tidak ditemukan di server ini."; exit 1; fi
VER=$("$CTL" -v 2>/dev/null | sed -n 's|.*Apache/\([0-9][0-9.]*\).*|\1|p' | head -n 1)
if [ -z "$VER" ]; then echo "Versi Apache tidak terbaca dari $CTL -v."; exit 1; fi
MPM=$("$CTL" -V 2>/dev/null | sed -n 's/^Server MPM: *//p' | head -n 1 | tr -cd '[:alnum:]_')

# 1. Versi dan paket. Distro memasang patch tanpa mengganti nomor versi, jadi changelog paket dibaca lebih dulu.
KELAS=""; PAKET="tidak ada, build dari source atau image Docker"; BUKTI="versi Apache $VER"
PATCH="naik ke Apache 2.4.71, atau image httpd:2.4.71"
if command -v dpkg-query >/dev/null 2>&1 && PV=$(deb_versi apache2-bin) && [ -n "$PV" ]; then
  PAKET="apache2-bin $PV"; PATCH="sudo apt update && sudo apt install --only-upgrade apache2"
  if zcat /usr/share/doc/apache2-bin/changelog.Debian.gz /usr/share/doc/apache2/changelog.Debian.gz 2>/dev/null | grep -q "$CVE"; then
    KELAS=aman; BUKTI="changelog paket menyebut $CVE"
  else
    UP=$(printf '%s' "$PV" | sed -E 's/^[0-9]+://; s/-[^-]*$//; s/[~+].*$//')
    KELAS=$(kelas_upstream "$UP"); BUKTI="versi upstream $UP"
    # Versi perbaikan Ubuntu dari USN-9090-1, untuk server yang tidak menyimpan changelog.
    case "$PV" in
      2.4.41-4ubuntu3*) FIX=2.4.41-4ubuntu3.23+esm11 ;;
      2.4.52-1ubuntu4*) FIX=2.4.52-1ubuntu4.27 ;;
      2.4.58-1ubuntu8*) FIX=2.4.58-1ubuntu8.19 ;;
      2.4.66-2ubuntu2*) FIX=2.4.66-2ubuntu2.8 ;;
      2.4.68-1ubuntu6*) FIX=2.4.68-1ubuntu6.2 ;;
      *) FIX="" ;;
    esac
    # Ubuntu 20.04 dan 22.04 memuat backport mod_http2, jadi tabel USN berlaku walau versi upstream di bawah 2.4.55.
    if [ -n "$FIX" ]; then
      if dpkg --compare-versions "$PV" ge "$FIX"; then KELAS=aman; BUKTI="versi paket sama dengan atau di atas perbaikan $FIX"
      else KELAS=rentan; BUKTI="versi paket di bawah perbaikan $FIX (USN-9090-1)"; fi
      case "$FIX" in *esm*) PATCH="aktifkan Ubuntu Pro, lalu sudo apt update && sudo apt install --only-upgrade apache2" ;; esac
    fi
  fi
elif command -v rpm >/dev/null 2>&1 && rpm -q ea-apache24 >/dev/null 2>&1; then
  PV=$(rpm -q --qf '%{VERSION}-%{RELEASE}' ea-apache24); PAKET="ea-apache24 $PV (cPanel EasyApache 4)"
  KELAS=$(kelas_upstream "${PV%%-*}"); BUKTI="versi upstream ${PV%%-*}"; PATCH="update EasyApache 4 sampai ea-apache24 2.4.71"
elif command -v rpm >/dev/null 2>&1 && rpm -q httpd >/dev/null 2>&1; then
  PATCH="sudo dnf update mod_http2"
  if PV=$(rpm -q --qf '%{VERSION}-%{RELEASE}' mod_http2 2>/dev/null); then
    PAKET="mod_http2 $PV"
    if rpm -q --changelog mod_http2 2>/dev/null | grep -q "$CVE"; then KELAS=aman; BUKTI="changelog paket menyebut $CVE"
    else
      case "$PV" in
        1.*) FIX=lama ;;
        *.el10_3*|*.el10) FIX=2.0.29-5.el10_3.1 ;;
        *.el9_9*|*.el9) FIX=2.0.26-7.el9_9.1 ;;
        *) FIX="" ;;
      esac
      if [ "$FIX" = lama ]; then KELAS=lama; BUKTI="mod_http2 1.x, di bawah 2.0.8"
      elif [ -z "$FIX" ]; then KELAS=tidak_pasti; BUKTI="versi paket tidak ada di tabel skrip"
      elif rpm_lebih_rendah "$PV" "$FIX"; then KELAS=rentan; BUKTI="versi paket di bawah perbaikan $FIX"
      else KELAS=aman; BUKTI="versi paket sama dengan atau di atas perbaikan $FIX"; fi
    fi
  else
    PAKET="httpd $(rpm -q --qf '%{VERSION}-%{RELEASE}' httpd)"; KELAS=tanpa_modul; BUKTI="paket mod_http2 tidak terpasang"
  fi
fi
[ -z "$KELAS" ] && KELAS=$(kelas_upstream "$VER")

# 2. HTTP/2 aktif bila modul http2 dimuat dan Protocols memuat h2 atau h2c. MPM prefork tetap melayani HTTP/2 (dokumentasi HTTP/2 Apache).
FILES=$("$CTL" -t -D DUMP_INCLUDES 2>/dev/null | sed -n 's/^ *([0-9*]*) \(\/.*\)$/\1/p')
[ -z "$FILES" ] && FILES=$(find /etc/apache2 /etc/httpd /usr/local/apache2/conf -name '*.conf' 2>/dev/null)
if "$CTL" -M 2>/dev/null | grep -qE '^ *http2_module '; then MOD=dimuat; else MOD="tidak dimuat"; fi
n=0; H2BARIS=""
while IFS= read -r f; do
  [ -r "$f" ] || continue
  while IFS= read -r l; do
    printf '%s' "${l#*:}" | grep -qwE 'h2|h2c' || continue
    n=$((n + 1))
    (( n <= 3 )) && H2BARIS+="$(printf '%s:%s  %s' "$f" "${l%%:*}" "$(printf '%s' "${l#*:}" | sed 's/^[[:space:]]*//')" | bersih 92)"$'\n'
  done < <(grep -nE '^[[:space:]]*Protocols[[:space:]]' "$f" 2>/dev/null)
done <<< "$FILES"
if [ "$MOD" = dimuat ] && (( n > 0 )); then H2=aktif; else H2=mati; fi

# 3. Proses yang berjalan harus lebih baru dari berkas mod_http2. Bila tidak, patch belum dipakai.
RUN=$("$CTL" -t -D DUMP_RUN_CFG 2>/dev/null)
PIDF=$(printf '%s\n' "$RUN" | sed -n 's/^PidFile: "\(.*\)"$/\1/p' | head -n 1)
SR=$(printf '%s\n' "$RUN" | sed -n 's/^ServerRoot: "\(.*\)"$/\1/p' | head -n 1)
MODF=$(printf '%s\n' "$FILES" | xargs -d '\n' grep -hE '^[[:space:]]*LoadModule[[:space:]]+http2_module[[:space:]]' 2>/dev/null \
       | awk '{print $3}' | tr -d '"' | head -n 1)
case "$MODF" in /*|"") ;; *) MODF="$SR/$MODF" ;; esac
PID=$( { tr -cd '0-9' < "$PIDF"; } 2>/dev/null )
RESTART=0; PROSES="Apache tidak berjalan, atau berkas PID tidak terbaca"
if [ -n "$PID" ] && [ -r "/proc/$PID/stat" ]; then
  MULAI=$(mulai_proses "$PID"); PROSES="jalan sejak $(date -d "@$MULAI" '+%F %H:%M')"
  if [ -f "$MODF" ] && [ "$(stat -c %Y "$MODF")" -gt "$MULAI" ]; then RESTART=1; fi
fi

echo "$CVE Apache mod_http2 (rentan: 2.4.55 sampai 2.4.70 dengan HTTP/2 aktif)"
baris "Server" "$(uname -n | bersih 40)"
baris "Apache" "$VER, MPM ${MPM:-tidak terbaca}"
baris "Paket" "$PAKET"
baris "Bukti" "$BUKTI"
baris "Modul HTTP/2" "$MOD"
baris "Protocols h2" "$n baris"
[ -n "$H2BARIS" ] && printf '%s' "$H2BARIS" | sed 's/^/              /'
baris "Proses" "$PROSES"
(( RESTART == 1 )) && baris "" "PERIKSA: berkas mod_http2 lebih baru dari proses yang berjalan."

kode=0
case "$KELAS" in
  aman)
    if (( RESTART == 1 )); then ST="PATCH ADA DI DISK, PROSES LAMA"; LG="restart penuh Apache agar modul baru dipakai."; kode=2
    else ST="AMAN untuk $CVE"; LG="tidak perlu patch untuk CVE ini."; fi ;;
  lama) ST="TIDAK TERDAMPAK $CVE"; LG="versi ini di bawah 2.4.55. Tetap pasang update distro untuk CVE lain." ;;
  tanpa_modul) ST="TIDAK TERDAMPAK $CVE"; LG="mod_http2 tidak terpasang. Pasang hanya versi yang sudah dipatch." ;;
  tidak_pasti) ST="TIDAK PASTI"; LG="cocokkan versi paket dengan errata vendor Anda."; kode=2 ;;
  *)
    kode=2
    if [ "$H2" = aktif ]; then ST="RENTAN, HTTP/2 AKTIF"; LG="pasang patch hari ini. Sambil menunggu, matikan HTTP/2 (Langkah 3)."
    else ST="RENTAN, HTTP/2 MATI"; LG="risiko turun. Tetap pasang patch, karena 1 baris Protocols menyalakan HTTP/2 lagi."; fi ;;
esac
baris "STATUS" "$ST"
baris "Langkah" "$LG"
(( kode == 2 )) && [ "$KELAS" != aman ] && baris "Patch" "$PATCH"
exit "$kode"
# 1 server: simpan skrip, lalu jalankan dengan sudo
sudo bash cek-versi-apache.sh
echo $?    # 0 aman atau tidak terdampak, 2 perlu tindakan, 1 Apache tidak ditemukan
# Banyak server lewat SSH
for h in web-01 web-02; do ssh "$h" 'sudo bash -s' < cek-versi-apache.sh; done
# Container bernama web, dari image httpd berbasis Debian
docker exec -i web bash -s < cek-versi-apache.sh
Terminal: skrip cek versi di container httpd 2.4.70 dengan Protocols h2 h2c. Hasil RENTAN, HTTP/2 AKTIF, patch naik ke 2.4.71. curl --http2 menjawab HTTP/2 200.
Container memakai image resmi httpd:2.4.70. Baris Protocols menyalakan h2 dan h2c, jadi skrip menulis RENTAN, HTTP/2 AKTIF dan memberi jalan patch. Sumber: uji Rama Digital di container podman dengan image resmi httpd, Debian, Ubuntu, dan UBI 9, 12 sampai 13 November 2026.

Cek hasil: "RENTAN, HTTP/2 AKTIF" berarti pasang patch hari ini dan jalankan langkah 3 sambil menunggu. "RENTAN, HTTP/2 MATI" berarti risiko turun, tetapi tetap pasang patch. "AMAN untuk CVE-2026-119618" berarti paket sudah memuat patch.

"PATCH ADA DI DISK, PROSES LAMA" berarti paket baru sudah terpasang, tetapi Apache belum restart penuh. Jalankan langkah 5. "TIDAK PASTI" berarti skrip tidak menemukan bukti di changelog, jadi tanyakan ke vendor paket Anda.

Langkah 2: Backup konfigurasi, lalu pasang paket aman

Simpan konfigurasi Apache lebih dulu. Backup ini adalah jalan kembali bila update mengubah perilaku server.

# Debian dan Ubuntu
sudo tar czf apache-konfig-$(date +%F).tgz /etc/apache2
# RHEL, AlmaLinux, dan Rocky
sudo tar czf httpd-konfig-$(date +%F).tgz /etc/httpd
# Catat modul yang aktif sebelum update
apachectl -M > modul-sebelum.txt 2>&1

Lalu pasang paket aman sesuai sumber paket di tabel versi:

# Debian 12, Debian 13, dan Ubuntu 22.04 sampai 26.10
sudo apt update && sudo apt install --only-upgrade apache2
# Ubuntu 20.04: paket aman hanya ada di Ubuntu Pro (ESM)
sudo pro attach TOKEN-ANDA
sudo apt update && sudo apt install --only-upgrade apache2
# RHEL 9 dan 10. AlmaLinux dan Rocky: ikuti errata distro, lalu cek changelog.
sudo dnf upgrade --refresh mod_http2 httpd
rpm -q --changelog mod_http2 | grep -m 1 CVE-2026-119618
# cPanel EasyApache 4 (tidak kami uji)
sudo dnf upgrade 'ea-apache24*'
# Docker: ganti tag image ke httpd:2.4.71 di compose.yaml, lalu buat ulang container
docker pull httpd:2.4.71
docker compose up -d

Build dari source: unduh httpd 2.4.71 dari halaman unduhan Apache, cek tanda tangan atau hash berkas, lalu build dengan opsi configure yang sama. mod_h2 dari GitHub: pasang rilis mod_h2 yang menyebut CVE-2026-119618 di catatan rilisnya.

cPanel: Menurut changelog EasyApache 4 cPanel, EasyApache 4 versi 25.96 tanggal 12 November 2026 menaikkan ea-apache24 ke 2.4.71. Kami tidak menguji cPanel, jadi cek hasilnya dengan langkah 1.

Terminal: Ubuntu 24.04 dengan apache2-bin 2.4.58-1ubuntu8.19. Nomor 2.4.58 ada di rentang rentan, tetapi changelog menyebut CVE, jadi skrip menulis AMAN.
Paket distro memuat patch dan tetap memakai nomor lama. Skrip membaca changelog paket, lalu tabel USN-9090-1 bila changelog tidak ada. Sumber: uji Rama Digital di container podman dengan image resmi httpd, Debian, Ubuntu, dan UBI 9, 12 sampai 13 November 2026.

Cek hasil: jalankan lagi cek-versi-apache.sh. Hasil yang benar adalah "AMAN untuk CVE-2026-119618", atau "PATCH ADA DI DISK, PROSES LAMA" bila Apache belum restart penuh.

Langkah 3: Matikan HTTP/2 sementara

Langkah ini mengurangi risiko sampai patch terpasang. Langkah ini tidak menutup celah.

Analisa Rama Digital: Apache dan Red Hat tidak memberi workaround. Kami menyusun 2 pilihan dari pernyataan Red Hat bahwa server yang hanya melayani HTTP/1.1 tidak terdampak. Batas: 1 baris Protocols lain di virtual host bisa menyalakan HTTP/2 lagi.

3a. Pakai HTTP/1.1 saja

Menurut dokumentasi direktif Protocols, direktif Protocols di virtual host menimpa nilai di level server. Jadi ubah setiap baris yang memuat h2 atau h2c, bukan hanya 1 baris.

# 1. Temukan semua baris Protocols
sudo grep -Rn "^\s*Protocols" /etc/apache2 /etc/httpd /usr/local/apache2/conf 2>/dev/null
# 2. Ubah setiap baris yang memuat h2 atau h2c menjadi: Protocols http/1.1
#    Contoh yang kami uji pada image httpd:2.4.70:
sudo sed -i 's|^Protocols h2 h2c http/1.1$|Protocols http/1.1|' /usr/local/apache2/conf/httpd.conf
# 3. Uji konfigurasi. Lanjut hanya bila hasilnya Syntax OK.
sudo apachectl configtest
# 4. Restart Apache. RHEL: sudo systemctl restart httpd
sudo systemctl restart apache2
# 5. Cek dari server
curl -skI --http2 https://127.0.0.1/ | head -n 1
Terminal: baris Protocols diganti menjadi http/1.1, httpd -t memberi Syntax OK, curl --http2 kini menjawab HTTP/1.1 200 OK, dan skrip menulis RENTAN, HTTP/2 MATI.
Status tetap RENTAN, karena versi 2.4.70 belum berganti. Langkah ini hanya menutup jalur HTTP/2 sampai patch terpasang. Sumber: uji Rama Digital di container podman dengan image resmi httpd, Debian, Ubuntu, dan UBI 9, 12 sampai 13 November 2026.

3b. Matikan modul mod_http2

Pilihan ini menutup semua baris Protocols sekaligus. Kami tidak menguji 3b di container, jadi jalankan configtest dulu.

# Debian dan Ubuntu
sudo a2dismod http2
sudo apachectl configtest && sudo systemctl restart apache2
# RHEL 9 dan 10: beri tanda # di depan baris LoadModule http2_module
sudo sed -i 's|^LoadModule http2_module|#LoadModule http2_module|' /etc/httpd/conf.modules.d/10-h2.conf
sudo apachectl configtest && sudo systemctl restart httpd

Bila configtest gagal, misalnya karena modul lain butuh mod_http2, kembalikan perubahan dan pakai 3a.

Tangga 6 baris: cek versi, backup dan paket aman, 2 langkah sementara berlabel tidak membuat aman (HTTP/1.1 saja, matikan modul), cari tanda, lalu restart penuh.
Langkah 1, 2, dan 5 menutup celah. Langkah 3a dan 3b hanya menutup jalur HTTP/2 sampai patch terpasang. Label merah mengingatkan batas itu. Sumber: advisory Apache, Red Hat, dokumentasi Apache, dan analisa Rama Digital.

Cek hasil: curl dengan --http2 menjawab HTTP/1.1, dan skrip menulis "RENTAN, HTTP/2 MATI". Situs tetap jalan di HTTP/1.1. Nyalakan HTTP/2 lagi sesudah langkah 5 memberi AMAN.

Langkah 4: Cari tanda server diambil alih

Patch menutup celah, tetapi tidak membuang webshell, proses, atau cron yang penyerang tinggalkan. Jadi cari jejak itu sesudah patch.

Analisa Rama Digital: Apache belum merilis IOC. Serangan ke mod_http2 bisa membuat child process crash, jadi skrip mencari crash worker di error log, skrip baru di folder web, proses asing milik user web, dan cron milik user web.

Simpan skrip ini sebagai cek-tanda-apache.sh. Skrip hanya membaca berkas. Skrip tidak mengubah, menghapus, atau mengirim apa pun.

#!/usr/bin/env bash
# Cari tanda server Apache diserang lewat CVE-2026-119618 (mod_http2).
# Apache belum merilis IOC. Pemeriksaan ini adalah analisa Rama Digital: worker Apache yang crash,
# skrip baru di folder web, proses asing milik user web, dan jadwal cron milik user web.
# Pakai di server: sudo bash cek-tanda-apache.sh [ERROR-LOG ...]
#   HARI=14              rentang hari untuk crash dan berkas baru
#   USER_WEB="www-data"  user yang menjalankan Apache, bila tebakan skrip salah
# Docker: simpan log lebih dulu (docker logs web 2> error-web.log), lalu beri berkas itu ke skrip.
# Skrip hanya membaca berkas. Skrip tidak mengubah, menghapus, atau mengirim apa pun.
set -u
HARI="${HARI:-14}"; [[ $HARI =~ ^[0-9]+$ ]] || HARI=14
PATH="$PATH:/usr/sbin:/sbin:/usr/local/apache2/bin:/usr/local/apache/bin"
temuan=0
# Buang karakter kontrol dan batasi panjang baris, agar isi berkas tidak bisa mengubah tampilan terminal.
bersih() { tr -cd '[:print:]\n' | cut -c1-"${1:-100}"; }
[ "$(id -u)" -ne 0 ] && echo "Catatan: jalankan dengan sudo agar semua berkas terbaca."

CTL=""; FILES=""
if command -v apache2ctl >/dev/null 2>&1; then CTL=apache2ctl
else for b in httpd apache2; do command -v "$b" >/dev/null 2>&1 && { CTL=$b; break; }; done; fi
[ -n "$CTL" ] && FILES=$("$CTL" -t -D DUMP_INCLUDES 2>/dev/null | sed -n 's/^ *([0-9*]*) \(\/.*\)$/\1/p')
konfig() { [ -n "$FILES" ] && printf '%s\n' "$FILES" | xargs -d '\n' grep -hE "$1" 2>/dev/null; }

echo "== 1. Worker Apache crash di error log ($HARI hari terakhir)"
LOGS=("$@")
if (( ${#LOGS[@]} == 0 )); then
  for f in /var/log/apache2/error.log* /var/log/httpd/error_log* /usr/local/apache2/logs/error_log* \
           /etc/apache2/logs/error_log* /usr/local/apache/logs/error_log*; do
    [ -f "$f" ] && LOGS+=("$f")
  done
fi
baca=(); for f in "${LOGS[@]}"; do
  if [ -r "$f" ]; then baca+=("$f"); else echo "Berkas $(printf '%s' "$f" | bersih 80) tidak terbaca."; fi
done
if (( ${#baca[@]} == 0 )); then
  echo "Error log tidak ditemukan. Beri path error log sebagai argumen."
else
  batas=$(date -d "-$HARI days" +%F); n=0; akhir=""; declare -A per=()
  while IFS= read -r l; do
    t=$(printf '%s' "$l" | sed -nE 's/^\[[A-Za-z]{3} ([A-Za-z]{3}) +([0-9]{1,2}) [0-9:.]+ ([0-9]{4})\].*/\1 \2 \3/p')
    [ -z "$t" ] && continue
    d=$(date -d "$t" +%F 2>/dev/null) || continue
    [[ $d < $batas ]] && continue
    per[$d]=$(( ${per[$d]:-0} + 1 )); n=$((n + 1))
    akhir="$d $(printf '%s' "$l" | sed -nE 's/^\[[A-Za-z]{3} [A-Za-z]{3} +[0-9]{1,2} ([0-9:]{8}).*/\1/p')  ${l##*AH00052: }"
  done < <(zcat -f "${baca[@]}" 2>/dev/null | grep -aE 'exit signal (Segmentation fault|Aborted|Bus error)' | bersih 300)
  if (( n > 0 )); then
    echo "PERIKSA: $n crash worker. Crash bisa punya sebab lain, tetapi lonjakan crash patut diperiksa."
    for d in $(printf '%s\n' "${!per[@]}" | sort); do printf '  %s  %s crash\n' "$d" "${per[$d]}"; done
    echo "  Terakhir: $(printf '%s' "$akhir" | cut -c1-96)"
    temuan=$((temuan + 1))
  else
    echo "Tidak ada crash worker di ${#baca[@]} berkas log."
  fi
fi

echo "== 2. Skrip baru di folder web ($HARI hari terakhir)"
DIRS=()
while IFS= read -r d; do [ -n "$d" ] && [ -d "$d" ] && DIRS+=("$d"); done < <(
  { konfig '^[[:space:]]*DocumentRoot[[:space:]]' | awk '{print $2}' | tr -d '"' | grep -v '^\$'
    printf '%s\n' /var/www /usr/local/apache2/htdocs /home/*/public_html; } | sort -u)
n=0
if (( ${#DIRS[@]} > 0 )); then
  while IFS= read -r f; do
    echo "PERIKSA: $(date -r "$f" '+%F %H:%M')  $(printf '%s' "$f" | bersih 90)"; n=$((n + 1))
  done < <(find "${DIRS[@]}" -xdev -type f -mtime -"$HARI" \( -name '*.php' -o -name '*.phtml' -o -name '*.phar' \
             -o -name '*.cgi' -o -name '*.pl' -o -name '*.py' -o -name '*.sh' -o -name '*.jsp' -o -name '.htaccess' \) \
             2>/dev/null | sort -u | head -n 30)
fi
(( n == 0 )) && echo "Tidak ada (${#DIRS[@]} folder web diperiksa)"
temuan=$((temuan + n))

echo "== 3. Proses milik user web selain Apache dan PHP"
if [ -n "${USER_WEB:-}" ]; then UW=$USER_WEB
else
  UW=$(konfig '^[[:space:]]*User[[:space:]]' | awk '{print $2}' | tr -d '"' | head -n 1)
  case "$UW" in '${'*)
    v=${UW#\$\{}; v=${v%\}}
    UW=$(sed -n "s/^export $v=\(.*\)$/\1/p" /etc/apache2/envvars 2>/dev/null | tr -d "\"'" | head -n 1) ;;
  esac
  [ -z "$UW" ] && UW="www-data apache daemon nobody"
fi
UW=$(printf '%s' "$UW" | tr -cd '[:alnum:] ._-')
uids=" "; for u in $UW; do i=$(id -u "$u" 2>/dev/null) && uids+="$i "; done
echo "User web: $UW"
n=0
for p in /proc/[0-9]*; do
  uid=$(awk '/^Uid:/ {print $2; exit}' "$p/status" 2>/dev/null)
  [ -n "$uid" ] && [[ $uids == *" $uid "* ]] || continue
  c=$(tr -cd '[:print:]' < "$p/comm" 2>/dev/null)
  case "$c" in apache2|httpd|php-fpm*|php-cgi*|php[0-9]*|lsphp*|rotatelogs|htcacheclean|suexec) continue ;; esac
  a=$(tr '\0' ' ' < "$p/cmdline" 2>/dev/null | bersih 60)
  echo "PERIKSA: pid ${p#/proc/}  $(getent passwd "$uid" | cut -d: -f1)  $c  $a"; n=$((n + 1))
done
(( n == 0 )) && echo "Tidak ada"
temuan=$((temuan + n))

echo "== 4. Jadwal cron milik user web"
n=0
for u in $UW; do
  for f in "/var/spool/cron/crontabs/$u" "/var/spool/cron/$u"; do
    [ -r "$f" ] || continue
    while IFS= read -r b; do
      [[ $b =~ ^[[:space:]]*($|#) ]] && continue
      echo "PERIKSA: $u  $(printf '%s' "$b" | bersih 90)"; n=$((n + 1))
    done < "$f"
  done
done
(( n == 0 )) && echo "Tidak ada"
temuan=$((temuan + n))

if (( temuan > 0 )); then
  echo "Hasil: ADA TEMUAN ($temuan). Periksa setiap baris PERIKSA. Baris yang tidak Anda kenal: putus server dari internet."
else
  echo "Hasil: tidak ada temuan. Hasil bersih tidak membuktikan server bersih."
fi

Menurut dokumentasi log Apache, error log mencatat masalah saat Apache memproses permintaan. Contoh 3 baris pertama error log dummy yang kami pakai:

[Thu Sep 03 08:14:22.410211 2026] [core:notice] [pid 1:tid 1] AH00052: child pid 77 exit signal Segmentation fault (11)
[Wed Nov 11 22:01:05.118312 2026] [mpm_event:notice] [pid 1:tid 1] AH00489: Apache/2.4.70 (Unix) OpenSSL/3.5.4 configured -- resuming normal operations
[Wed Nov 11 22:01:05.118377 2026] [core:notice] [pid 1:tid 1] AH00094: Command line: 'httpd -D FOREGROUND'
# Server biasa: skrip mencari error log Apache sendiri
sudo bash cek-tanda-apache.sh
# Log di path lain, rentang 30 hari, dan user web RHEL
sudo HARI=30 USER_WEB="apache" bash cek-tanda-apache.sh /var/log/httpd/error_log
# Docker: simpan log container lebih dulu, lalu beri berkas itu ke skrip
docker logs web 2> error-web.log
sudo bash cek-tanda-apache.sh error-web.log
Terminal: skrip tanda menulis ADA TEMUAN (5): 5 crash Segmentation fault, 2 berkas baru di uploads, proses kswapd0 palsu milik www-data, dan 1 cron www-data.
Log, berkas, proses, dan cron adalah data dummy. Alamat IP di log contoh memakai blok dokumentasi 198.51.100.0/24 dan 203.0.113.0/24. Sumber: uji Rama Digital di container podman dengan image resmi httpd, Debian, Ubuntu, dan UBI 9, 12 sampai 13 November 2026.

Batas skrip: crash bisa punya sebab lain, misalnya modul PHP yang rusak. Proses PHP-FPM atau CGI yang sah juga bisa tampil sebagai PERIKSA. Cek ini tidak menemukan program yang penyerang taruh di luar folder web dan di luar user web.

Panel jejak serangan, 4 tanda yang dicari (crash worker, berkas web baru, proses dan cron user web, koneksi keluar), dan 6 langkah bila Anda menemukan tanda.
Panel atas: jejak yang bisa tertinggal. Panel amber: tanda yang dicari skrip. Panel merah: urutan respons bila Anda menemukan tanda. Sumber: dokumentasi log Apache dan analisa Rama Digital.

Cek hasil: "tidak ada temuan" berarti skrip tidak menemukan tanda. Hasil bersih tidak membuktikan server bersih. "ADA TEMUAN" berarti periksa setiap baris PERIKSA, lalu ikuti urutan ini untuk baris yang tidak Anda kenal:

  1. Isolasi server dari jaringan. Matikan daya hanya bila perlu, karena data di memori ikut hilang.
  2. Salin error log, access log, dan daftar proses sebelum Anda mengubah apa pun.
  3. Jangan hapus berkas asing sebelum log tersimpan.
  4. Update Apache ke versi aman, lalu restart penuh.
  5. Ganti secret, APIAPIPintu resmi yang dipakai 2 sistem untuk saling mengirim data, tanpa orang menyalin data secara manual.Buka glosarium key, dan password database yang bisa dibaca user web.
  6. Pulihkan situs dari backup yang bersih. Pertimbangkan server baru.

Bila data pribadi bocor, UU 27/2022 tentang Pelindungan Data Pribadi mewajibkan pemberitahuan tertulis paling lambat 3 kali 24 jam. Baca juga panduan security, privacy, dan UU PDP untuk perusahaan.

Langkah 5: Restart penuh, lalu cek ulang

Paket baru di disk belum aktif sampai proses induk Apache berganti. Menurut dokumentasi stop dan restart Apache, graceful restart dan restart biasa menjaga proses induk tetap hidup.

Analisa Rama Digital: systemctl restart menghentikan lalu menjalankan Apache, jadi proses induk berganti. Skrip membandingkan waktu berkas mod_http2 dengan waktu mulai proses induk. Batas: graceful restart juga bisa memuat modul baru, tetapi skrip tidak bisa membuktikannya.

# Debian dan Ubuntu
sudo systemctl restart apache2
# RHEL, AlmaLinux, dan Rocky
sudo systemctl restart httpd
# Cek ulang
sudo bash cek-versi-apache.sh
Terminal: sesudah berkas mod_http2 diganti, skrip menulis PATCH ADA DI DISK, PROSES LAMA. Sesudah stop lalu start Apache, skrip menulis AMAN untuk CVE-2026-119618.
Container Debian trixie dengan apache2 2.4.71-1~deb13u1. Layar menampilkan menit, tetapi skrip membandingkan detik, jadi menit yang sama tetap bisa memberi 2 status. Sumber: uji Rama Digital di container podman dengan image resmi httpd, Debian, Ubuntu, dan UBI 9, 12 sampai 13 November 2026.

Untuk Docker, langkah 2 sudah membuat container baru dari image httpd:2.4.71, jadi proses induk sudah baru. Untuk panel kontrol, pakai menu restart layanan Apache dari panel itu.

Cek hasil: skrip menulis "AMAN untuk CVE-2026-119618" di setiap server. Sesudah itu, kembalikan baris Protocols dari langkah 3a atau jalankan a2enmod http2 bila Anda ingin HTTP/2 lagi.

Contoh: 1 pagi respons untuk 4 server

Simulasi ini memakai data dummy. Nama server, waktu, dan hasil bukan data pelanggan.

Waktu (WIB)Server dummyYang dicekHasilTindakan
08.00web-01 (Docker httpd:2.4.70, h2 aktif)Langkah 1RENTAN, HTTP/2 AKTIFLangkah 3a pagi ini, ganti ke httpd:2.4.71 siang ini
08.20web-02 (Ubuntu 22.04, apache2 2.4.52-1ubuntu4.20)Langkah 1RENTAN, HTTP/2 AKTIFapt install --only-upgrade apache2, lalu langkah 5
09.00web-03 (RHEL 9, sesudah dnf upgrade)Langkah 1PATCH ADA DI DISK, PROSES LAMAsystemctl restart httpd, lalu cek ulang: AMAN
09.30web-01Langkah 45 crash worker, cache.php baru di uploadsIsolasi server, simpan log, ikuti urutan respons
10.00Situs toko di shared hosting cPanelTiket ke providerea-apache24 2.4.71 terpasangMinta bukti tertulis dan jam restart

Pelajaran dari simulasi: nomor versi Ubuntu 2.4.52 tidak membuktikan server aman. Paket web-02 terdampak lewat backport, dan web-03 baru aman sesudah restart penuh.

Siapa yang memasang patch

Tanggung jawab patch berbeda per cara hosting, jadi tabel ini membantu Anda tahu siapa yang bergerak hari ini.

Cara hostingPemegang patchYang Anda kerjakan
VPS atau server sendiriTim IT atau developer AndaLangkah 1 sampai 5
Image Docker httpdTim yang membuat image dan containerGanti tag ke httpd:2.4.71, lalu langkah 1 dan 4
Shared hosting atau reseller cPanelProvider hostingMinta bukti versi ea-apache24 dan jam restart
Server dikelola vendor IT atau MSPMitra sesuai kontrakMinta output langkah 1 dan 4 secara tertulis

Rekomendasi Rama Digital: nyalakan update keamanan otomatis untuk paket distro, dan batasi IP asal server hanya untuk CDN bila situs memakai CDN.

Checklist hari ini

  1. Buat daftar semua server dan container Apache. Pemilik: tim IT. Bukti: daftar nama server dan sumber paket.
  2. Cek versi dan HTTP/2 dengan langkah 1. Pemilik: admin server. Bukti: output skrip.
  3. Matikan HTTP/2 dengan langkah 3 di server yang belum bisa patch hari ini. Pemilik: admin server. Bukti: output curl.
  4. Backup konfigurasi, lalu pasang paket aman dengan langkah 2. Pemilik: admin server. Bukti: versi paket.
  5. Restart penuh dengan langkah 5. Pemilik: admin server. Bukti: skrip menulis AMAN.
  6. Cari tanda dengan langkah 4. Pemilik: admin server. Bukti: output skrip dan salinan error log.
  7. Minta bukti tertulis dari provider untuk setiap situs di shared hosting.

Tanya jawab

Server saya memakai Ubuntu 22.04 dengan Apache 2.4.52. Apakah terdampak?

Ya. USN-9090-1 menulis bahwa Ubuntu 22.04 terdampak lewat backport mod_http2, walau nomor upstream di bawah 2.4.55. Pasang apache2 2.4.52-1ubuntu4.27 atau lebih baru.

Situs saya di balik CDN. Apakah server saya aman?

Belum tentu. Analisa Rama Digital: bila IP asal server bisa dibuka langsung, penyerang bisa melewati CDN. Batasi akses ke IP asal hanya dari CDN, lalu tetap pasang patch.

Apakah mematikan HTTP/2 membuat situs saya rusak?

Tidak. Situs tetap jalan di HTTP/1.1. Halaman dengan banyak berkas bisa termuat sedikit lebih lambat, jadi nyalakan HTTP/2 lagi sesudah patch.

Apakah reload sudah mengaktifkan patch sesudah update?

Belum tentu. Reload dan graceful restart menjaga proses induk. Pakai systemctl restart, lalu jalankan langkah 1 sampai skrip menulis AMAN.

Saya memakai shared hosting. Apa yang saya kerjakan?

Provider memegang Apache. Kirim tiket, lalu minta versi paket Apache atau ea-apache24 dan jam restart. Untuk cPanel, versi aman adalah ea-apache24 2.4.71.

Apakah exploit untuk celah ini sudah publik?

Red Hat menulis bahwa riset publik menunjukkan exploit yang andal pada konfigurasi default dengan mod_http2 aktif. Per 13 November 2026, CISA KEV tidak memuat celah ini, dan kami tidak menemukan laporan serangan.

Server saya memakai RHEL 8. Apakah saya perlu bertindak?

Menurut Red Hat, RHEL 8 dan lebih lama tidak terdampak CVE-2026-119618. Tetap pasang update keamanan rutin untuk CVE lain.

Apakah patch menghapus akses penyerang?

Tidak. Patch menutup celah, tetapi tidak menghapus webshell, proses, atau cron yang penyerang buat. Jalankan langkah 4, lalu ganti secret yang bisa dibaca user web.

Langkah berikutnya

Batas yang tetap berlaku: langkah 3 tidak menutup celah, dan patch tidak membersihkan server yang sudah diambil alih. Bila server Anda menunjukkan tanda di langkah 4, atau Anda butuh bantuan audit dan pemulihan, pakai Vibe Code Rescue. Untuk 1 kendala yang mendesak hari ini, jadwalkan sesi 30 menit.

Celah lain yang kami bahas: celah SQL injection Craft CMS CVE-2026-123488.

Sumber