· kaynak dev.to (home feed)
İki milyondan fazla Tomcat AJP connector'ı hâlâ 8009 portunu dinliyor
ZoomEye, Tomcat'in varsayılan AJP portu olan 8009 portunda 2,1 milyondan fazla erişilebilir servis sayıyor — tarayıcı tabanlı taramaların ve envanter sistemlerinin hiç takip etmediği bir güvenilir proxy protokolü. Bir dev.to analizi bunu ortaya koyuyor.

Bir dev.to analizinde aktarılan arama motoru rakamlarına göre 2,1 milyondan fazla servis, Apache Tomcat'in AJP connector'ının varsayılan portu olan TCP 8009 portunu dinliyor. Bunların yaklaşık 1,24 milyonu AJP sürüm 13 banner'ı yayınlayan, kabaca 620.000'i ise aynı portta düz HTTP yanıtı veren servisler — düzgün yapılandırılmış, proxy arkasındaki bir connector'ın göstermemesi gereken davranışlar.
AJP connector'ının amacı
AJP, Apache httpd veya IIS gibi ön taraftaki bir web sunucusunun istekleri Tomcat'e aktarmasını sağlayan bir binary protokoldür. Tipik dağıtımda ön uç TLS'i sonlandırır ve trafiği AJP üzerinden iletir, böylece isteklerin HTTP olarak yeniden kodlanması gerekmez. dev.to yazarının açıkladığı gibi protokol; istemcinin adresi, kimliği doğrulanmış kullanıcı, TLS sertifikasının konusu gibi öznitelikleri proxy'den servlet container'a aktarabilir.
Bu öznitelik aktarımı, proxy dışındaki biri connector'a erişebildiği anda bir güvenlik zafiyetine dönüşür: porta doğrudan bağlanan bir istemci bu öznitelikleri kendisi taklit edebilir. Klasik örnek, geniş çapta Ghostcat olarak bilinen ve 2020'de yayımlanan CVE-2020-1938'dir; NVD, hazırlanmış AJP isteklerinin Tomcat'i çağıranı önceden kimliği doğrulanmış saymasına ve varsayılan yapılandırmalarda web uygulaması kökü altındaki dosyaları okumasına izin verdiğini belgeler. dev.to yazısına göre daha derin sorun yapısal: AJP, çağıranın güvenilir bir reverse proxy olduğunu varsayar ve protokolde bu varsayımı doğrulayan hiçbir şey yoktur.
Rakamların ayrıntısı
Analiz, 2026-10-25 tarihinde çalıştırılan dört ZoomEye sorgusuna dayanıyor:
- 8009 portunda bir şey dinleyen 2.107.044 host — Tomcat olmayan süreçleri de içeren ham bir port sayımı.
- ajp13 olarak parmak izi tespit edilen 1.240.557 servis; erişilebilir bir AJP connector'ına en yakın yaklaşım bu.
- 8009 portunda HTTP tarzı bir isteğe yanıt veren 620.164 host; düzgün proxy arkasındaki bir connector bunu yapmamalı. Olası nedenler arasında connector'ın yanına bağlanmış ikinci bir servis ya da yeniden yapılandırma sonrası portu ele geçiren bir yönetim aracı sayılabilir.
- TLS handshake tamamlayan 64.404 host; standart tasarımlar TLS'i ön uçta sonlandırdığı ve connector'ı özel bir ağda düz metin olarak bıraktığı için bu küçük bir rakam.
Yazar bu rakamların ne anlama geldiği konusunda dikkatli: bunlar bir andaki erişilebilirliği değil, sömürülebilirliği değil, sadece erişilebilirliği tanımlıyor. Açıkta olan bir AJP portu, Ghostcat sınıfı saldırının ön koşuludur; herhangi bir örneğin yamalanmamış olduğunun kanıtı değildir.
Bu maruziyet nasıl oluşuyor
Makaleye göre büyük kısmından iki örüntü sorumlu. Birincisi paketleme varsayılanları: Docker imajları, Helm chart'ları ve uygulama sunucusu profilleri sıklıkla 8009 portunu varsayılan port kümesinin parçası olarak yayımlıyor ve operatörün hiç seçmediği bir dinleyici oluşturuyor. İkincisi eski sistemlerin bir arada tutulması: ekipler ön taraftaki httpd'yi yamalar ama Tomcat connector'ını aynı subnetten erişilebilir bırakır — bu tasarım, yalnızca o subnet sınırı uygulanmaya devam ettiği sürece geçerlidir.
Yazarın belirttiğine göre Tomcat'in kendi güvenlik rehberi net: AJP connector'ı kullanılmıyorsa devre dışı bırakın, kullanılıyorsa loopback'e bağlayın. Açık kalması gereken connector'lar için önerilen kontroller şunlar: address özniteliğinin dinleyiciyi yalnızca ön uç hostla sınırlandırması, requiredSecret'in ayarlanmış olması (böylece ortak secret'i olmayan istekler reddedilir) ve ön ucun gerçekten o secret'i göndermesi — hepsi Tomcat 9 ve 10 için belgelenmiş durumda. Orkestrasyon katmanında, 8009'u exposed (açıkta) bildiren bir container, portu yayımlanma ihtimali olan bir container'dır ve bildirilen ile yayımlanan arasındaki bu ayrım gözden kaçmaya yatkındır.
Neden önemli
Bu, geleneksel envanter sistemlerinin gözünden kaçan bir saldırı yüzeyi; çünkü tarayıcıdan erişilebilir servisleri sayan taramalar onu hiç göremez. Salt güvenilir bir iç proxy'ye hizmet etmek için var olan bir portun iki milyon erişilebilir örneği, bilinen ve daha önce sömürülmüş bir zafiyet sınıfı için çok büyük bir ön koşul havuzu oluşturuyor. Çözüm ucuz — devre dışı bırakmak, kısıtlamak ya da secret gerektirmek — ama yalnızca birinin o portun orada olduğunu bilmesi halinde; ZoomEye sayımlarının önerdiği de tam olarak şu: çoğu operatör bilmiyor.
- #apache-tomcat
- #ajp
- #security
- #cloud
- #ghostcat