Java 8 Sürümünde Öne Çıkanlar
Java 8 Güncelleme 131 (8u131)
Sürümde Öne Çıkanlar
8u131 için geçerlilik bitiş tarihi 18 Temmuz 2017'dir. Güvenlik açıklarını kapatan yeni bir sürüm yayınlandığında mevcut Java'nın geçerliliği sona erer. Oracle Sunucularına erişemeyen sistemlerde, bu JRE'nin (sürüm 8u131) geçerliliğini sona erdiren ikincil bir mekanizma 18 Ağustos 2017 tarihinde devreye girecektir. İki koşuldan biri sağlandıktan sonra (yeni sürümün kullanılabilir olması veya geçerlilik bitiş tarihine ulaşılması), Java kullanıcılara yeni sürüme güncelleme yapmaları için ek uyarılar ve anımsatıcılar sağlar.
Hata Düzeltmeleri
Bu sürüm, güvenlik açıkları için düzeltmeler içermektedir. Daha fazla bilgi için bkz. Oracle Java SE Kritik Yama Güncellemesi Önerileri. Bu sürümde yer alan hata düzeltmelerinin listesini görmek için, JDK 8u131 Hata Düzeltmeleri sayfasına bakın.
» 8u131 Sürüm notları
Java 8 Güncelleme 121 (8u121)
Sürümde Öne Çıkanlar
JNDI uzak sınıf yükleme için geliştirilmiş koruma
Adlandırma ve dizin hizmetlerinde saklanan JNDI nesne fabrikaları üzerinden uzak sınıf yükleme, öndeğer olarak devre dışı bırakılmıştır. RMI Kayıt Defteri veya COS Adlandırma hizmet sağlayıcı ile uzak sınıf yüklemeyi etkinleştirmek için şu sistem özelliğini gerektiği gibi "true" olarak belirleyin:
com.sun.jndi.rmi.object.trustURLCodebase com.sun.jndi.cosnaming.object.trustURLCodebase JDK-8158997 (herkese açık değildir)
jarsigner -verbose -verify jar dosyasını imzalamak için kullanılan algoritmaları yazdırmalıdır
Jarsigner aracı, imzalı bir JAR dosyası oluşturmak için kullanılan algoritmaların ve anahtarların detaylarını göstermek ve ayrıca herhangi birinin zayıf kabul edildiğine dair bir gösterge sağlamak için iyileştirilmiştir.
Özellikle, "jarsigner -verify -verbose filename.jar" çağrıldığında, çeşitli nedenlerle imzalanmamış olarak kabul edilse bile imzalı JAR dosyasındaki imza ve zaman damgası (varsa) bilgilerini gösteren ayrı bir bölüm yazdırılır. Kullanılan herhangi bir algoritma veya anahtar, jdk.jar.disabledAlgorithms Güvenlik özelliğinde belirtildiği şekilde zayıf kabul edilirse "(zayıf)" olarak etiketlenir.
Örneğin:
- Signed by "CN=weak_signer" Digest algorithm: MD2 (weak) Signature algorithm: MD2withRSA (weak), 512-bit key (weak) Timestamped by "CN=strong_tsa" on Mon Sep 26 08:59:39 CST 2016 Timestamp digest algorithm: SHA-256 Timestamp signature algorithm: SHA256withRSA, 2048-bit key Bkz. JDK-8163304
Bilinen Sorunlar
TLS el sıkışmasından IllegalArgumentException
JDK-8173783'dan güncel bir sorun bazı TLS sunucular için sorunlara neden olabilir. Problem, TLS el sıkışma kodu tarafından oluşturulan IllegalArgumentException'dan kaynaklanıyor.
java.lang.IllegalArgumentException: Sistem niteliği
jdk.tls.namedGroups(null) desteklenen eliptik eğri içermez
Sorun, sunucu eliptik eğri ad uzantısı alanını (mevcut ise) idare eden eliptik eğri şifreleme desteği içermediğinde ortaya çıkabilir. Kullanıcılara bu sürümü yükseltmeleri tavsiye edilir. Öndeğer olarak, JDK 7 Güncellemeleri ve sonraki JDK aileleri eliptik eğri şifreleme desteği sağlayan SunEC güvenlik sağlayıcısı ile yüklenir. Güvenlik sağlayıcılar değiştirilmedikçe bu sürümler etkilenmemelidir. Bkz. JDK-8173783
javapackager ve fx\:deploy JRE yerine tüm JDK'yi paketliyor
Mac için Java Paketleyici'de tüm JDK'nin uygulama paketi ile paketlenerek aşırı büyük bir paketle sonuçlandığı bilinen bir hata vardır. Geçici çözüm olarak -Bruntime paket oluşturucu seçeneği kullanılabilir. Örneğin: -Bruntime=JavaAppletPlugin.plugin, istenen paketlenecek JRE için JavaAppletPlugin.plugin geçerli dizinde yer alır. Bkz. JDK-8166835
UAC'yi kapalı tutan yönetici olmayan kullanıcılar için Java Yüklemesi başarısız oluyor
Kullanıcı Erişim Kontrolü'nü (UAC) devre dışı bırakan yönetici olmayan kullanıcılar için Windows'ta Java yüklemesi uyarı veya istem görüntülenmeden başarısız olur. Yükleyici %TEMP% dizinine bir jds<sayı>.tmp dizini bırakır.
JDK-8161460 (herkese açık değildir)
Yeni Özellikler
XML İmza güvenli doğrulama modunu konfigüre etmek için eklenmiş güvenlik niteliği
XML İmzasının güvenli doğrulama modu etkinleştirildiğinde zorlanan bireysel kısıtlamaları konfigüre etmenizi sağlamak üzere eklenen jdk.xml.dsig.secureValidationPolicy adlı yeni güvenlik niteliği java.security konfigürasyon dosyasındaki bu nitelik için öndeğer:
jdk.xml.dsig.secureValidationPolicy=\ disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ maxTransforms 5,\ maxReferences 30,\ disallowReferenceUriSchemes file http https,\ noDuplicateIds,\ noRetrievalMethodLoops Daha fazla bilgi için lütfen java.security dosyasındaki nitelik tanımına başvurun. Bkz. JDK-8151893
Serileştirme Filtre Konfigürasyonu
Serileştirme Filtrelemesi, gelen nesne serileştirme verisi akışlarının güvenliği ve dayanıklılığı geliştirmek için filtrelenmesine izin veren yeni bir mekanizmadır. Konfigüre edilirse her ObjectInputStream, seri durumdan çıkarma sırasında akış içeriklerine filtre uygular. Filtreler bir sistem özelliği ya da konfigüre edilmiş bir güvenlik özelliği kullanılarak ayarlanır. "jdk.serialFilter" düzenlerinin değeri JEP 290 Serileştirme Filtrelemesi ve <JRE>/lib/security/java.security bölümlerinde açıklanmaktadır. Filtreleme eylemleri etkinleştirilirse 'java.io.serialization' günlükçüsüne kaydedilir. Bkz. JDK-8155760
RMI Daha iyi kısıtlama kontrolü
RMI Kayıt Defteri ve Dağıtılmış Çöp Toplama, hizmet dayanıklılığını artırmak için JEP 290 Serileştirme Filtrelemesi mekanizmalarını kullanır. RMI Kayıt Defteri ve Dağıtılmış Çöp Toplama, her hizmetle kullanılması beklenen genel sınıflar için yerleşik güvenilir filtreler uygular. Sistem özelliği veya güvenlik özelliği kullanılarak ek filtre düzenleri konfigüre edilebilir. "sun.rmi.registry.registryFilter" ve "sun.rmi.transport.dgcFilter" özellik düzeni sözdizimi, JEP 290 ve <JRE>/lib/security/java.security bölümlerinde açıklanmaktadır. JDK-8156802 (herkese açık değildir)
Öndeğer olmayan kök CA'ların algoritma kısıtlamalarına bağlı olmamaları için mekanizma ekleyin
java.security dosyasında, "jdkCA" adına sahip ek bir kısıtlama jdk.certpath.disabledAlgorithms niteliğine eklendi. Bu kısıtlama, sadece algoritma lib/security/cacerts anahtar deposunda işaretli bir güven tutamacında sonlanan bir sertifika zincirinde kullanılıyorsa belirtilen algoritmanın önüne geçer. jdkCA kısıtlaması ayarlı değilse, bu durumda belirtilen algoritmayı kullanan tüm zincirler kısıtlanmıştır. jdkCA sadece DisabledAlgorithm ifadesinde bir kez kullanılabilir. Örnek: Bu kısıtlamayı SHA-1 sertifikalarına uygulamak için, şunu dahil edin: SHA1 jdkCA
Bkz. JDK-8140422
Java Geçerlilik Bitiş Tarihi
8u121 sürümü için geçerlilik bitiş tarihi 18 Nisan 2017'dır. Güvenlik açıklarını kapatan yeni bir sürüm yayınlandığında mevcut Java'nın geçerliliği sona erer. Oracle Sunucularına erişemeyen sistemler için, bu JRE'nin (sürüm 8u121) geçerliliğini sona erdiren ikincil bir mekanizma 18 Mayıs 2017 tarihinde devreye girecektir. İki koşuldan biri sağlandıktan sonra (yeni sürümün kullanılabilir olması veya geçerlilik bitiş tarihine ulaşılması), Java kullanıcılara yeni sürüme güncelleme yapmaları için ek uyarılar ve anımsatıcılar sağlar.
Hata Düzeltmeleri
Bu sürüm, güvenlik açıkları için düzeltmeler içermektedir. Daha fazla bilgi için bkz. Oracle Java SE Kritik Yama Güncellemesi Önerileri. Bu sürümde yer alan hata düzeltmelerinin listesini görmek için, JDK 8u121 Hata Düzeltmeleri sayfasına bakın.
» 8u121 Sürüm notları
Java 8 Güncelleme 111 (8u111)
Sürümde Öne Çıkanlar
Bazı etkinlikler, Windows'da JFR kayıtlarında kullanılamaz
Aşağıdaki etkinlikler Windows'da, JFR kayıtlarında sürüm 8u111 için kullanılamaz:
JDK-8063089 (herkese açık değildir)
JVM, macOS Sierra 10.12'de NullPointerExceptions oluşturur
macOS Sierra 10.12'de, kullanıcı bir ek program tarayıcıda çalışırken değiştirici tuşlara basarsa (örneğin Komut Tuşu, Üst Tuşu veya Alt Tuşu), "Dahili Hata" adlı bir hata kutusu görüntülenebilir. Ayrıca "exec simgesini macOS dock içinde gösterir. Kullanıcı ek programı yok edebilir veya bir değiştirici tuşa basmıyorken ek programı tekrar çalıştırmayı deneyebilir. Bkz. JDK-8165867.
Java Geçerlilik Bitiş Tarihi
8u111 için geçerlilik bitiş tarihi 17 Ocak 2017'dir. Güvenlik açıklarını kapatan yeni bir sürüm yayınlandığında mevcut Java'nın geçerliliği sona erer. Oracle Sunucularına erişemeyen sistemler için, bu JRE'nin (sürüm 8u111) geçerliliğini sona erdiren ikincil bir mekanizma 17 Şubat 2017 tarihinde devreye girecektir. İki koşuldan biri sağlandıktan sonra (yeni sürümün kullanılabilir olması veya geçerlilik bitiş tarihine ulaşılması), Java kullanıcılara yeni sürüme güncelleme yapmaları için ek uyarılar ve anımsatıcılar sağlar.
Hata Düzeltmeleri
Bu sürüm, güvenlik açıkları için düzeltmeler içermektedir. Daha fazla bilgi için bkz. Oracle Java SE Kritik Yama Güncellemesi Önerileri. Bu sürümde yer alan hata gidermelerin listesini görmek için, JDK 8u111 Hata Gidermeler sayfasına bakın.
» 8u111 Sürüm notları
Java 8 Güncelleme 101 (8u101)
Sürümde Öne Çıkanlar
Statik sınıf kimliği kullanıldığında, JRE 8u101 Internet Explorer (IE) tarafından tanınmaz
JRE 8u101 kullanılırken, statik sınıf kimliği bir ek program veya web başlatma uygulaması başlatmak için kullanıldığında, kullanıcılar en son JRE'yi kullanmalarını ya da en son JRE'yi (JRE 8u101) yüklemiş ve kullanıyor olsalar bile başlatmayı iptal etmelerini belirten istenmeyen bir iletişim kutusu alacaklardır. Bu özel durum yalnızca Windows ve IE'ye uygulanabilir.
http://www.oracle.com/technetwork/java/javase/family-clsid-140615.html uyarınca JRE sürümü seçimi (Aralık 2005, JDK 5u6'dan bu yana) için statik sınıf kimliğinin kullanılması önerilmez.
Bu soruna çözüm bulmak için şunlardan birini yapabilir:
Java 8 Güncelleme 131 (8u131)
Sürümde Öne Çıkanlar
- IANA Verisi 2016j
JDK 8u131 IANA saat dilimi verisi 2016j sürümünü içerir. Daha fazla bilgi için, JRE Yazılımı'nda Saat Dilimi Veri Sürümleri sayfasına bakın. - Hata Düzeltmesi: Yeni pencere sıralama modeliyle tanışın
OS X platformunda, AWT çerçevesi, çerçevelerle ilgili üst-alt ilişkisini uygulamak için yerel hizmetleri kullanırdı. Özellikle çok monitörlü ortamlarda bazı olumsuz görsel efektlere neden olurdu. Böyle bir yaklaşımın olumsuzluklarından kaçınmak için, tamamen JDK katmanına uygulanmış yeni pencere sıralama modeli sunulmuştur. Ana ilkeleri aşağıda listelenmektedir:- Pencere, en yakın üst penceresinin üzerine yerleştirilmelidir.
- Pencerenin birçok alt penceresi varsa, tüm alt pencereler aynı katmanda yer almalı ve etkin pencere zincirine ait pencerelerin üzerinde sıralanmalıdır.
- Pencere simge durumundaysa ya da simge durumuna getirme işlemi sürdüğü sırada, bu pencere için sıralama yapılmamalıdır.
- Hata Düzeltmesi: TLS el sıkışmasına ait IllegalArgumentException düzeltmesi
JDK-8173783 düzeltmesinden kaynaklanan en son sorun bazı TLS sunucuları için sorun oluşturabilir. Sorun IllegalArgumentException kaynaklı olup şu TLS el sıkışma kodu tarafından oluşturulmuştur:
java.lang.IllegalArgumentException: Sistem niteliği
jdk.tls.namedGroups(null) desteklenen eliptik eğri içermez
Sorun, sunucu eliptik eğri ad uzantısı alanını (varsa) idare eden eliptik eğri şifreleme desteği içermediğinde ortaya çıkabilir. Kullanıcılara bu sürümü yükseltmeleri tavsiye edilir. Öndeğer olarak, eliptik eğri şifreleme desteği sağlayan SunEC güvenlik sağlayıcısıyla verilen JDK 7 Güncellemeleri ve sonraki JDK aileleri. Güvenlik sağlayıcılar değiştirilmedikçe bu sürümler etkilenmemelidir. Bkz. JDK-8173783 - jdk.jar.disabledAlgorithms Güvenlik niteliğine eklenen MD5
Bu JDK sürümü, MD5 işaretli JAR dosyalarının nasıl doğrulandığını gösterir. İmzalanan JAR dosyaları MD5 kullanıyorsa, imza doğrulama işlemleri imzayı yok sayar ve JAR dosyasını imzalanmamış gibi işler. İmzalanmış aşağıdaki JAR dosyalarını kullanan uygulama türlerinde oluşabilir:- Ek Programlar ve Web Başlatma Uygulamaları
- Bağımsız veya Sunucu Uygulamaları SecurityManager etkin olarak çalışır; JAR dosyasının kod imzalayanlarına dayanılarak izin veren ilke dosyasıyla konfigüre edilmiştir.
Devre dışı bırakılan algoritmaların listesi java.security dosyasındaki jdk.jar.disabledAlgorithms güvenlik özelliğiyle kontrol edilir. Bu özellikte, devre dışı bırakılan algoritmaların bir listesi ve şifreli imzalanmış JAR dosyalarının önemli boyutları yer almaktadır.
JAR dosyasının zayıf bir algoritmayla veya anahtarla imzalanıp imzalanmadığını kontrol etmek için, bu JDK ile birlikte verilen jarsigner ikilisini kullanabilirsiniz. Zayıf bir algoritmayla veya anahtarla imzalanmış JAR dosyasında "jarsigner -verify" çalıştırılması, devre dışı bırakılan algoritma ve anahtarlar hakkında daha fazla bilgi yazdıracaktır.
Örneğin, test.jar adlı JAR dosyasını kontrol etmek için şu komutu kullanın:
jarsigner -verify test.jar
Bu örnekteki dosya MD5withRSA gibi zayıf bir imza algoritması ile imzalanmışsa, şu çıktı görüntülenir:
Jar işaretsiz olarak görülecektir çünkü şu anda devre dışı bırakılmış olan zayıf bir algoritma ile imzalanmıştır. Daha fazla detay için jarsigner -verbose (ayrıntılı) seçeneği ile tekrar çalıştırılabilir.
Verbose (ayrıntılı) seçeneği kullanılarak daha fazla detay görüntülenebilir:
jarsigner -verify -verbose test.jar
Şu çıktı görüntülenecektir:
- Signed by "CN=weak_signer" Digest algorithm: MD5 (weak) Signature algorithm: MD5withRSA (weak), 512-bit key (weak) Timestamped by "CN=strong_tsa" on Mon Sep 26 08:59:39 CST 2016 Timestamp digest algorithm: SHA-256 Timestamp signature algorithm: SHA256withRSA, 2048-bit key Konuyu belirlemek üzere, JAR dosyasının daha güçlü bir algoritma veya anahtar boyutu ile yeniden işaretlenmesi gerekecektir. Alternatif olarak, jdk.jar.disabledAlgorithms güvenlik niteliğinden uygulanabilir zayıf algoritmalar veya anahtar boyutları çıkarılarak kısıtlamalar tersine döndürülebilse de bu seçenek önerilmez. Etkilenen JAR'ları yeniden imzalamadan önce mevcut imzaların JAR dosyasından kaldırılması gerekir. Bu işlem, zip yardımcı programıyla aşağıdaki gibi yapılabilir:
zip -d test.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*.DSA'
Lütfen düzenli olarak http://java.com/cryptoroadmap adresindeki Oracle JRE ve JDK Cryptographic Roadmap konusunu, JAR dosyalarında planlanan sınırlandırmalar ve diğer güvenlik bileşenleri için kontrol edin. JDK-8171121 (herkese açık değildir) - HTTP SPNEGO bağlantısı için önbelleğe almayı kontrol edecek yeni sistem özelliği.
Yeni bir JDK uygulamasına özel sistem özelliği HTTP SPNEGO (Müzakere/Kerberos) bağlantıları için önbelleğe almayı kontrol etmek üzere başlatılıyor. HTTP SPNEGO bağlantıları için önbelleğe alma öndeğer olarak etkin kalır; bu nedenle, özellik açıkça belirtilmediyse değişen hiçbir davranış olmayacaktır. Kimlik doğrulaması için SPENGO kullanan HTTP sunucusuna bağlanıldığında ve sunucuyla hem bağlantı hem de kimlik doğrulaması başarılı olduğunda, kimlik doğrulaması bilgileri artık önbelleğe alınacak, aynı sunucuya olan diğer bağlantılar için de tekrar kullanılacaktır. Ayrıca, SPNEGO kullanan bir HTTP sunucusuna bağlanılması çoğunlukla alttaki bağlantının canlı tutulmasını ve aynı sunucuda daha fazla istek için bunun tekrar kullanılmasını gerektirir. Bazı uygulamalarda, sunucuya yapılan her yeni istekle yeni kimlik doğrulaması isteği zorlamak için HTTP SPNEGO (Müzakere/Kerberos) protokolüyle ilgili tüm önbellek işlemlerini devre dışı bırakmak tercih edilebilir.
Bu değişiklikle, artık HTTP SPNEGO bağlantılarıyla ilgili önbelleğe alma ilkesini kontrol etmeye izin veren yeni bir sistem özelliği sağlamaktayız. jdk.spnego.cache tanımlanır ve false olarak değerlendirilirse, tüm önbelleğe alma işlemi HTTP SPNEGO bağlantıları için devre dışı bırakılacaktır. Ancak, bu sistem özelliğinin false olarak ayarlanması istenmeyen yan etkilere neden olabilir:- HTTP SPNEGO bağlantıları performansı, bağlantının, sunucuyla çok sayıda iletişim alış verişi yapılmasına neden olacak her yeni istekle tekrar yetkilendirilmesi gerektiğinden, ciddi bir şekilde etkilenebilir.
- Şeffaf kimlik doğrulaması olup olmadığına ve genel Kimlik Doğrulayıcı uygulamasına bağlı olarak her yeni istek için kimlik bilgilerinin tekrar alınması gerekecektir; bu da her yeni istekte kullanıcıdan kimlik bilgilerini isteyen bir açılan pencereye neden olabilir.
- HTTP NTLM bağlantısı için önbelleğe almayı kontrol edecek yeni sistem özelliği.
Yeni bir JDK uygulamasına özel sistem özelliği HTTP NTLM bağlantısı için önbelleğe almayı kontrol etmek üzere başlatılıyor. HTTP NTLM bağlantısı için önbelleğe alma öndeğer olarak etkin kalır; bu nedenle, özellik açıkça belirtilmediyse değişen hiçbir davranış olmayacaktır. Bazı platformlarda, JDK'deki HTTP NTLM uygulaması, sistem kullanıcısı kimlik bilgilerinin sistem düzeyinde kullanıldığı şeffaf kimlik doğrulamasını destekleyebilir. Şeffaf kimlik doğrulaması olmadığında veya başarısız olduğunda, JDK kimlik bilgilerinin sadece genel kimlik doğrulayıcıdan alınmasını destekler. Sunucu bağlantısı başarılıysa kimlik doğrulaması bilgileri artık önbelleğe alınacak ve aynı sunucuyla kurulan diğer bağlantılar için tekrar kullanılacaktır. Ek olarak, HTTP NTLM sunucusuna bağlanılması çoğunlukla alttaki bağlantının canlı tutulmasından ve aynı sunucuda daha fazla istek için bunun tekrar kullanılmasından oluşur. Bazı uygulamalarda, sunucuya yapılan her yeni istekle yeni kimlik doğrulaması isteği zorlamak için HTTP NTLM protokolüyle ilgili tüm önbellek işlemlerini devre dışı bırakmak tercih edilebilir.
Bu değişiklikle, artık HTTP NTLM bağlantılarıyla ilgili önbelleğe alma ilkesini kontrol etmeye izin veren yeni bir sistem özelliği sağlamaktayız. jdk.ntlm.cache tanımlanır ve false olarak değerlendirilirse, tüm önbelleğe alma işlemi HTTP NTLM bağlantıları için devre dışı bırakılacaktır. Ancak, bu sistem özelliğinin false olarak ayarlanması istenmeyen yan etkilere neden olabilir:- HTTP NTLM bağlantıları performansı, bağlantının, sunucuyla çok sayıda iletişim alış verişi yapılmasına neden olacak her yeni istekle tekrar yetkilendirilmesi gerektiğinden, ciddi bir şekilde etkilenebilir.
- Şeffaf kimlik doğrulaması olup olmadığına ve genel Kimlik Doğrulayıcı uygulamasına bağlı olarak her yeni istek için kimlik bilgilerinin tekrar alınması gerekecektir; bu da her yeni istekte kullanıcıdan kimlik bilgilerini isteyen bir açılan pencereye neden olabilir.
- VisualVM'nin yeni sürümü
VisualVM 1.3.9 4 Ekim 2016'da yayınlandı http://visualvm.github.io/relnotes.html ve 8u131 ile bütünleştirildi. Bkz. JDK-8167485
8u131 için geçerlilik bitiş tarihi 18 Temmuz 2017'dir. Güvenlik açıklarını kapatan yeni bir sürüm yayınlandığında mevcut Java'nın geçerliliği sona erer. Oracle Sunucularına erişemeyen sistemlerde, bu JRE'nin (sürüm 8u131) geçerliliğini sona erdiren ikincil bir mekanizma 18 Ağustos 2017 tarihinde devreye girecektir. İki koşuldan biri sağlandıktan sonra (yeni sürümün kullanılabilir olması veya geçerlilik bitiş tarihine ulaşılması), Java kullanıcılara yeni sürüme güncelleme yapmaları için ek uyarılar ve anımsatıcılar sağlar.
Hata Düzeltmeleri
Bu sürüm, güvenlik açıkları için düzeltmeler içermektedir. Daha fazla bilgi için bkz. Oracle Java SE Kritik Yama Güncellemesi Önerileri. Bu sürümde yer alan hata düzeltmelerinin listesini görmek için, JDK 8u131 Hata Düzeltmeleri sayfasına bakın.
» 8u131 Sürüm notları
Java 8 Güncelleme 121 (8u121)
Sürümde Öne Çıkanlar
- IANA Verisi 2016i
JDK 8u121 IANA saat dilimi verisi 2016i sürümünü içerir. Daha fazla bilgi için, JRE Yazılımı'nda Saat Dilimi Veri Sürümleri sayfasına bakın. - Hata Düzeltmesi: OS X 10.12 Sierra'da trackpad ile metin kaydırma çok hızlı
MouseWheelEvent.getWheelRotation() yöntemi Mac OS X'te yuvarlanmış yerel NSEvent deltaX/Y etkinliğini döndürdü. En son macOS Sierra 10.12 çok küçük NSEvent deltaX/Y değerleri üretiyor ve bunların yuvarlanıp toplanması MouseWheelEvent.getWheelRotation() komutundan çok büyük değer döndürülmesine yol açıyor. JDK-8166591 düzeltmesi NSEvent deltaX/Y değerini biriktirir ve MouseWheelEvent.getWheelRotation() yöntemi yalnızca birikmiş değerin bir eşiği ve sıfır değerini aşması durumunda sıfır olmayan değerler döndürür. Bu MouseWheelEvent.getWheelRotation() spesifikasyonu ile uyumludur: "Fare tekerleğinin döndürüldüğü 'tıklama' sayısını tamsayı olarak döndürür. Fare yüksek çözünürlüklü bir tekerleği destekliyorsa kısmi bir dönüş gerçekleşebilir. Bu durumda, yöntem tam bir 'tıklama' biriktirilene kadar sıfır döndürür." Kesin tekerlek dönüş değerleri için bunun yerine MouseWheelEvent.getPreciseWheelRotation() yöntemini kullanın. Bkz. JDK-8166591 - JDK'de EC gücü öndeğerini geliştirme
EC şifrelemesi gücü öndeğerini geliştirmek için, JDK'de 224 bit altındaki EC anahtarları sertifika yolu sürecinde (jdk.certpath.disabledAlgorithms Güvenlik Özelliği aracılığıyla) ve JSSL/TLS bağlantıları (jdk.tls.disabledAlgorithms Güvenlik Özelliği aracılığıyla) devre dışı bırakılmıştır. Uygulamalar Güvenlik Özelliklerinde bu kısıtlamayı güncelleyebilir ve gerçekten gerekiyorsa daha küçük anahtar boyutlarına izin verebilir (örneğin, "EC keySize < 192"). 256 bit altındaki EC eğrileri JDK'de SSL/TLS uygulamasından kaldırıldı. Yeni Sistem Özelliği, jdk.tls.namedGroups, tercih sırasına göre EC şifreleme sistemleri için etkin adlandırılmış eğrilerin bir listesini tanımlar. Uygulamanın etkin EC eğrileri öndeğerini veya eğriler tercihini özelleştirmesi gerekiyorsa lütfen Sistem Özelliğini de buna göre güncelleyin. Örneğin:
jdk.tls.namedGroups="secp256r1, secp384r1, secp521r1"
Etkin veya özelleştirilmiş EC eğrileri öndeğerinin algoritma kısıtlamalarına uyduğunu unutmayın. Örneğin, özelleştirilmiş EC eğrileri, Java Güvenlik Özellikleriyle tanımlanmış devre dışı EC anahtarlarını tekrar etkinleştiremez. Bkz. JDK-8148516 - Yeni --javadoc için allow-script-in-comments seçeneği
Javadoc aracı, komut satırı seçeneği olarak --allow-script-in-comments belirtilmedikçe javadoc dokümantasyonu yorumlarında ve komut satırı seçeneklerinde tüm JavaScript kodu oluşumlarını artık reddedecektir. Javadoc aracı, --allow-script-in-comments seçeneğiyle dokümantasyon yorumlarında ve komut satırı seçeneklerinde JavaScript kodunu koruyacaktır. JavaScript kodu bulunursa ve komut satırı seçeneği ayarlanmazsa bir hata verilir.
JDK-8138725 (herkese açık değil) - XML İmzaları için minimum anahtar uzunluğunu 1024'e yükseltme
XML İmzası uygulamasının güvenli doğrulama modu, 1024 bitten küçük RSA ve DSA anahtarlarının dijital imzalar için yeterli güvenlikte olmadıklarından öndeğer olarak bu anahtarları kısıtlayacak şekilde geliştirildi. Ayrıca java.security dosyasına jdk.xml.dsig.SecureValidationPolicy adlı yeni bir özellik eklendi ve bu özellik güvenli doğrulama modu etkinken uygulanan farklı kısıtlamaları kontrol etmek için kullanılabilir. Güvenli doğrulama modu, javax.xml.crypto.XMLCryptoContext.setProperty yöntemiyle org.jcp.xml.dsig.secureValidation xml imzası özelliğinin true olarak ayarlanmasıyla ya da kod bir SecurityManager ile çalıştırılmasıyla etkinleştirilir. XML İmzası zayıf bir RSA veya DSA anahtarıyla oluşturulur ya da doğrulanırsa, "güvenli doğrulama etkinken 1024 bitten küçük RSA anahtarları yasaktır" veya "güvenli doğrulama etkinken 1024 bitten küçük DSA anahtarları yasaktır" mesajıyla birlikte bir XMLSignatureException oluşturulur.
JDK-8140353 (herkese açık değildir) - 1024 bitten küçük DSA anahtarlarına sahip sertifikaları kısıtlama
1024 bitten küçük DSA anahtarları yeterince güçlü değildir ve sertifika dizin yolu oluşturma ve doğrulama işleminde kısıtlanmalıdır. Bu nedenle, 1024 bitten küçük DSA anahtarları, "jdk.certpath.disabledAlgorithms" güvenlik özelliğine "DSA keySize < 1024" eklenerek öndeğer olarak devre dışı bırakıldı. Uygulamalar bu kısıtlamayı güvenlik özelliğinde ("jdk.certpath.disabledAlgorithms") güncelleyebilir ve gerçekten gerekirse daha küçük anahtar boyutlarına izin verebilir (örneğin, "DSA keySize < 768"). JDK-8139565 (herkese açık değildir) - DER şifreleme ayrıştırma koduna daha fazla denetim eklendi
Çeşitli şifreleme hatalarını yakalamak için DER şifreleme ayrıştırma koduna daha fazla denetim eklendi. Ayrıca, yapılandırılmış belirsiz uzunluk şifrelemesi içeren imzalar artık ayrıştırma sırasında IOExecption'a yol açacak. JDK sağlayıcı öndeğerleri kullanılarak oluşturulan imzalar bu değişiklikten etkilenmez. JDK-8168714 (herkese açık değildir) - URLClassLoader.newInstance için ek erişim kısıtlamaları
java.net.URLClassLoader.newInstance yöntemleri tarafından oluşturulan sınıf yükleyicileri, belirli URL'lerin yer aldığı bir listeden sınıf yüklemek için kullanılabilir. Çağıran kod bir veya daha fazla URL erişimine sahip değilse ve erişilebilen URL oluşumları gerekli sınıfı içermiyorsa, bu durumda ClassNotFoundException, veya benzeri istisna oluşur. Daha önce, URL erişimi reddedildiğinde SecurityException oluşuyordu. Eski davranışa dönülmesi gerekirse, jdk.net.URLClassPath.disableRestrictedPermissions sistem özelliği ayarlanarak bu değişiklik devre dışı bırakılabilir. JDK-8151934 (herkese açık değil) - logging.properties içerisinde yeni java.util.logging.FileHandler.maxLocks konfigüre edilebilir özelliği
java.util.logging.FileHandler özelliğine yeni "java.util.logging.FileHandler.maxLocks" konfigüre edilebilir özelliği eklendi. Bu yeni günlüğe kaydetme özelliği günlüğe kaydetme konfigürasyon dosyasında tanımlanabilir ve bir FileHandler'ın işleyebileceği maksimum eşzamanlı günlük dosyası sayısının konfigüre edilmesini sağlar. Öndeğer 100'dür. Birçok (101'den fazla) bağımsız istemci uygulamasının JDK Günlüğe Kaydetme API'sinin FileHandler ile eşzamanla olarak kullandığı büyük oranda eşzamanlı bir ortamda, sınır öndeğeri olan 100'e ulaşılabilir ve bu da FileHandler dosya kilitlerinin alınamamasına ve IO İstisnasının oluşmasına yol açar. Bu durumda, uygulama dağıtılmadan önce maksimum kilit sayısını artırmak için yeni günlüğe kaydetme özelliği kullanılabilir. Geçersiz kılınmadıysa, maxLocks (100) öndeğeri aynı kalır. Daha detaylı bilgi için java.util.logging.LogManager ve java.util.logging.FileHandler API dokümantasyonuna bakın. Bkz. JDK-8153955
JNDI uzak sınıf yükleme için geliştirilmiş koruma
Adlandırma ve dizin hizmetlerinde saklanan JNDI nesne fabrikaları üzerinden uzak sınıf yükleme, öndeğer olarak devre dışı bırakılmıştır. RMI Kayıt Defteri veya COS Adlandırma hizmet sağlayıcı ile uzak sınıf yüklemeyi etkinleştirmek için şu sistem özelliğini gerektiği gibi "true" olarak belirleyin:
com.sun.jndi.rmi.object.trustURLCodebase com.sun.jndi.cosnaming.object.trustURLCodebase JDK-8158997 (herkese açık değildir)
jarsigner -verbose -verify jar dosyasını imzalamak için kullanılan algoritmaları yazdırmalıdır
Jarsigner aracı, imzalı bir JAR dosyası oluşturmak için kullanılan algoritmaların ve anahtarların detaylarını göstermek ve ayrıca herhangi birinin zayıf kabul edildiğine dair bir gösterge sağlamak için iyileştirilmiştir.
Özellikle, "jarsigner -verify -verbose filename.jar" çağrıldığında, çeşitli nedenlerle imzalanmamış olarak kabul edilse bile imzalı JAR dosyasındaki imza ve zaman damgası (varsa) bilgilerini gösteren ayrı bir bölüm yazdırılır. Kullanılan herhangi bir algoritma veya anahtar, jdk.jar.disabledAlgorithms Güvenlik özelliğinde belirtildiği şekilde zayıf kabul edilirse "(zayıf)" olarak etiketlenir.
Örneğin:
- Signed by "CN=weak_signer" Digest algorithm: MD2 (weak) Signature algorithm: MD2withRSA (weak), 512-bit key (weak) Timestamped by "CN=strong_tsa" on Mon Sep 26 08:59:39 CST 2016 Timestamp digest algorithm: SHA-256 Timestamp signature algorithm: SHA256withRSA, 2048-bit key Bkz. JDK-8163304
Bilinen Sorunlar
TLS el sıkışmasından IllegalArgumentException
JDK-8173783'dan güncel bir sorun bazı TLS sunucular için sorunlara neden olabilir. Problem, TLS el sıkışma kodu tarafından oluşturulan IllegalArgumentException'dan kaynaklanıyor.
java.lang.IllegalArgumentException: Sistem niteliği
jdk.tls.namedGroups(null) desteklenen eliptik eğri içermez
Sorun, sunucu eliptik eğri ad uzantısı alanını (mevcut ise) idare eden eliptik eğri şifreleme desteği içermediğinde ortaya çıkabilir. Kullanıcılara bu sürümü yükseltmeleri tavsiye edilir. Öndeğer olarak, JDK 7 Güncellemeleri ve sonraki JDK aileleri eliptik eğri şifreleme desteği sağlayan SunEC güvenlik sağlayıcısı ile yüklenir. Güvenlik sağlayıcılar değiştirilmedikçe bu sürümler etkilenmemelidir. Bkz. JDK-8173783
javapackager ve fx\:deploy JRE yerine tüm JDK'yi paketliyor
Mac için Java Paketleyici'de tüm JDK'nin uygulama paketi ile paketlenerek aşırı büyük bir paketle sonuçlandığı bilinen bir hata vardır. Geçici çözüm olarak -Bruntime paket oluşturucu seçeneği kullanılabilir. Örneğin: -Bruntime=JavaAppletPlugin.plugin, istenen paketlenecek JRE için JavaAppletPlugin.plugin geçerli dizinde yer alır. Bkz. JDK-8166835
UAC'yi kapalı tutan yönetici olmayan kullanıcılar için Java Yüklemesi başarısız oluyor
Kullanıcı Erişim Kontrolü'nü (UAC) devre dışı bırakan yönetici olmayan kullanıcılar için Windows'ta Java yüklemesi uyarı veya istem görüntülenmeden başarısız olur. Yükleyici %TEMP% dizinine bir jds<sayı>.tmp dizini bırakır.
JDK-8161460 (herkese açık değildir)
Yeni Özellikler
XML İmza güvenli doğrulama modunu konfigüre etmek için eklenmiş güvenlik niteliği
XML İmzasının güvenli doğrulama modu etkinleştirildiğinde zorlanan bireysel kısıtlamaları konfigüre etmenizi sağlamak üzere eklenen jdk.xml.dsig.secureValidationPolicy adlı yeni güvenlik niteliği java.security konfigürasyon dosyasındaki bu nitelik için öndeğer:
jdk.xml.dsig.secureValidationPolicy=\ disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ maxTransforms 5,\ maxReferences 30,\ disallowReferenceUriSchemes file http https,\ noDuplicateIds,\ noRetrievalMethodLoops Daha fazla bilgi için lütfen java.security dosyasındaki nitelik tanımına başvurun. Bkz. JDK-8151893
Serileştirme Filtre Konfigürasyonu
Serileştirme Filtrelemesi, gelen nesne serileştirme verisi akışlarının güvenliği ve dayanıklılığı geliştirmek için filtrelenmesine izin veren yeni bir mekanizmadır. Konfigüre edilirse her ObjectInputStream, seri durumdan çıkarma sırasında akış içeriklerine filtre uygular. Filtreler bir sistem özelliği ya da konfigüre edilmiş bir güvenlik özelliği kullanılarak ayarlanır. "jdk.serialFilter" düzenlerinin değeri JEP 290 Serileştirme Filtrelemesi ve <JRE>/lib/security/java.security bölümlerinde açıklanmaktadır. Filtreleme eylemleri etkinleştirilirse 'java.io.serialization' günlükçüsüne kaydedilir. Bkz. JDK-8155760
RMI Daha iyi kısıtlama kontrolü
RMI Kayıt Defteri ve Dağıtılmış Çöp Toplama, hizmet dayanıklılığını artırmak için JEP 290 Serileştirme Filtrelemesi mekanizmalarını kullanır. RMI Kayıt Defteri ve Dağıtılmış Çöp Toplama, her hizmetle kullanılması beklenen genel sınıflar için yerleşik güvenilir filtreler uygular. Sistem özelliği veya güvenlik özelliği kullanılarak ek filtre düzenleri konfigüre edilebilir. "sun.rmi.registry.registryFilter" ve "sun.rmi.transport.dgcFilter" özellik düzeni sözdizimi, JEP 290 ve <JRE>/lib/security/java.security bölümlerinde açıklanmaktadır. JDK-8156802 (herkese açık değildir)
Öndeğer olmayan kök CA'ların algoritma kısıtlamalarına bağlı olmamaları için mekanizma ekleyin
java.security dosyasında, "jdkCA" adına sahip ek bir kısıtlama jdk.certpath.disabledAlgorithms niteliğine eklendi. Bu kısıtlama, sadece algoritma lib/security/cacerts anahtar deposunda işaretli bir güven tutamacında sonlanan bir sertifika zincirinde kullanılıyorsa belirtilen algoritmanın önüne geçer. jdkCA kısıtlaması ayarlı değilse, bu durumda belirtilen algoritmayı kullanan tüm zincirler kısıtlanmıştır. jdkCA sadece DisabledAlgorithm ifadesinde bir kez kullanılabilir. Örnek: Bu kısıtlamayı SHA-1 sertifikalarına uygulamak için, şunu dahil edin: SHA1 jdkCA
Bkz. JDK-8140422
Java Geçerlilik Bitiş Tarihi
8u121 sürümü için geçerlilik bitiş tarihi 18 Nisan 2017'dır. Güvenlik açıklarını kapatan yeni bir sürüm yayınlandığında mevcut Java'nın geçerliliği sona erer. Oracle Sunucularına erişemeyen sistemler için, bu JRE'nin (sürüm 8u121) geçerliliğini sona erdiren ikincil bir mekanizma 18 Mayıs 2017 tarihinde devreye girecektir. İki koşuldan biri sağlandıktan sonra (yeni sürümün kullanılabilir olması veya geçerlilik bitiş tarihine ulaşılması), Java kullanıcılara yeni sürüme güncelleme yapmaları için ek uyarılar ve anımsatıcılar sağlar.
Hata Düzeltmeleri
Bu sürüm, güvenlik açıkları için düzeltmeler içermektedir. Daha fazla bilgi için bkz. Oracle Java SE Kritik Yama Güncellemesi Önerileri. Bu sürümde yer alan hata düzeltmelerinin listesini görmek için, JDK 8u121 Hata Düzeltmeleri sayfasına bakın.
» 8u121 Sürüm notları
Java 8 Güncelleme 111 (8u111)
Sürümde Öne Çıkanlar
- IANA Verisi 2016f
JDK 8u111, IANA saat dilimi verisi 2016f sürümünü içerir. Daha fazla bilgi için, JRE Yazılımı'nda Saat Dilimi Veri Sürümleri sayfasına bakın. Bkz. JDK-8159684. - Sertifika Değişiklikleri: Yeni JCE Kodu İmzalama Kök CA
Daha uzun anahtar uzunluklarını ve daha sağlam imza algoritmalarını desteklemek amacıyla yeni bir JCE Sağlayıcı Kodu İmzalama kök sertifika yetkilisi oluşturulmuş ve sertifikası Oracle JDK'ye eklenmiştir. Bu CA'dan yayınlanan yeni JCE sağlayıcı kodu imzalama sertifikaları bu noktadan ileri doğru JCE sağlayıcılarını imzalamak için kullanılacaktır. Öndeğer olarak, JCE sağlayıcı kodu imzalama sertifikalarıyla ilgili yeni istekler bu CA'dan yayınlanacaktır.
Geçerli JCE sağlayıcısı kodu imzalama köküne ait mevcut sertifikalar doğrulanmaya devam edecektir. Ancak, bu kök CA ileride bazı noktalarda devre dışı bırakılabilir. Yeni sertifika istenmesini ve mevcut sağlayıcı JAR'larının yeniden imzalanmasını öneririz. JCE sağlayıcı imzalama süreci hakkında detaylı bilgi için, lütfen Java Şifreleme Mimarisinde Sağlayıcı Nasıl Uygulanmalı dokümantasyonuna bakın. JDK-8141340 (herkese açık değildir) - Hizmet Menüsü hizmetleri
AWT menüsü bileşenlerinin ömür döngüsü yönetimi bazı platformlarda sorun çıkarırdı. Bu düzeltme, menüler ve kapsayıcıları arasındaki durum eşzamanlamasını iyileştirmektedir. JDK-8158993 (herkese açık değildir) - HTTPS tünelleri için temel kimlik doğrulamasını devre dışı bırakma
Bazı ortamlarda, HTTPS proxy ile gerçekleştirildiğinde bazı kimlik doğrulama düzenleri istenmeyebilir. Bu nedenle, Temel kimlik doğrulama düzeni öndeğer olarak, jdk.http.auth.tunneling.disabledSchemes ağ özelliğine Temel eklenerek Oracle Java Runtime'da devre dışı bırakılmıştı. HTTPS için tünel ayarlandığında proxy'ler için gereken Temel kimlik doğrulaması artık öndeğer olarak başarılı olmayacak. Gerekirse, jdk.http.auth.tunneling.disabledSchemes ağ özelliğinden Temel kaldırılarak veya komut satırında aynı adın sistem özelliğini "" ( boş ) olarak ayarlayarak bu kimlik doğrulama düzeni tekrar etkinleştirilebilir. Ek olarak, jdk.http.auth.tunneling.disabledSchemes ve jdk.http.auth.proxying.disabledSchemes ağ özelliklerinin yanı sıra aynı adın sistem özellikleri de, sırayla HTTPS tüneli ayarlanırken ya da düz HTTP proxy ile çalıştırılırken etkin olabilecek diğer kimlik doğrulama düzenlerini devre dışı bırakmak için kullanılabilir. JDK-8160838 (herkese açık değildir) - Zayıf algoritmalar ve anahtarlarla imzalanan JAR dosyalarını kısıtlama
Bu JDK sürümü, imzalanan JAR dosyalarının nasıl doğrulandığı hakkında yeni kısıtlamaları tanıtmaktadır. İmzalanan JAR dosyaları devre dışı bırakılmış bir algoritma veya minimum uzunluğun altında bir anahtar boyutu kullanıyorsa, imza doğrulama işlemleri imzayı yok sayar ve JAR dosyasını imzalanmamış gibi işler. İmzalanmış aşağıdaki JAR dosyalarını kullanan uygulama türlerinde oluşabilir:
1. Ek Programlar ve Web Başlatma Uygulamaları
2. Bağımsız veya Sunucu Uygulamaları SecurityManager etkin olarak çalışır; JAR dosyasının kod imzalayanlarına dayanılarak izin veren ilke dosyasıyla konfigüre edilmiştir.
Devre dışı bırakılan algoritmaların listesi java.security dosyasındaki yeni jdk.jar.disabledAlgorithms güvenlik özelliğiyle kontrol edilir. Bu özellikte, devre dışı bırakılan algoritmaların bir listesi ve şifreli imzalanmış JAR dosyalarının önemli boyutları yer almaktadır.
Aşağıdaki algoritmalar ve anahtar boyutları bu sürümde sınırlandırılmıştır:- MD2 (özet veya imza algoritmasında)
- 1024 bit altındaki RSA anahtarları
JAR dosyasının zayıf bir algoritmayla veya anahtarla imzalanıp imzalanmadığını kontrol etmek için, bu JDK ile birlikte verilen jarsigner ikilisini kullanabilirsiniz. Zayıf bir algoritmayla veya anahtarla imzalanmış JAR dosyasında jarsigner -verify -J-Djava.security.debug=jar çalıştırılması devre dışı bırakılan algoritma ve anahtarlar hakkında daha fazla bilgi yazdıracaktır.
Örneğin, test.jar adlı JAR dosyasını kontrol etmek için şu komutu kullanın:
jarsigner -verify -J-Djava.security.debug=jar test.jar
Bu örnekteki dosya MD2withRSA gibi zayıf bir imza algoritmasıyla imzalanmışsa, aşağıdaki çıktı şöyle görünecektir:
jar: beginEntry META-INF/my_sig.RSA
jar: processEntry: processing block
jar: processEntry caught: java.security.SignatureException: İmza denetimi başarısız. Devre dışı bırakılmış algoritma kullanıldı: MD2withRSA
jar: done with meta!
Güncellenen jarsigner komutu standart çıktıya yazdırılacak şu uyarıyla çıkacaktır:
"İmza ayrıştırılamıyor veya doğrulanamıyor. JAR dosyası imzalanmamış olarak işlenecek. JAR dosyası artık devre dışı olan zayıf bir algoritmayla imzalanmış. Daha fazla bilgi için jarsigner komutunu hata ayıklama açık olarak tekrar çalıştırın (-J-Djava.security.debug=jar)"
Bu yayına yönelmek için JAR dosyasının daha sağlam bir algoritmayla veya anahtar boyutuyla tekrar imzalanması gerekecektir. Alternatif olarak, jdk.jar.disabledAlgorithms güvenlik niteliğinden uygulanabilir zayıf algoritmalar veya anahtar boyutları çıkarılarak kısıtlamalar tersine döndürülebilse de bu seçenek önerilmez. Etkilenen JAR dosyalarını yeniden imzalamadan önce mevcut imzaların JAR dosyasından kaldırılması gerekir. Bu işlem, zip yardımcı programıyla aşağıdaki gibi yapılabilir:
zip -d test.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'
Lütfen düzenli olarak http://java.com/cryptoroadmap adresindeki Oracle JRE and JDK Cryptographic Roadmap konusunu, JAR dosyalarında planlanan sınırlandırmalar ve diğer güvenlik bileşenleri için kontrol edin. Özellikle, lütfen geçerli planın Nisan 2017 CPU'da imzalanan JAR dosyalarındaki MD5 tabanlı imzaları sınırlandırmak olduğunu unutmayın.
JAR dosyalarınızın MD5 ile imzalanmış olup olmadığını test etmek için MD5 kodunu jdk.jar.disabledAlgorithms güvenlik özelliğine ekleyin; örn:
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
ve JAR dosyalarınızda yukarıda açıklandığı gibi jarsigner -verify -J-Djava.security.debug=jar çalıştırın.
JDK-8155973 (herkese açık değildir) - Dağıtım doğrulayıcı iletişim kutusuna uyarı mesajı eklendi
Proxy kullanıldığında veya SSL/TLS protokolleri kullanılmadığında HTTP Temel kimlik doğrulaması (kimlik bilgileri şifresiz gönderilmiştir) kullanıldığı durumlarda eklenti kimlik doğrulaması iletişim kutusuna bir uyarı eklendi:
"UYARI: Temel kimlik doğrulama düzeni kimlik bilgilerinizi açık metin olarak etkin iletecektir. Bunu gerçekten yapmak istiyor musunuz?"
JDK-8161647 (herkese açık değildir)
Bazı etkinlikler, Windows'da JFR kayıtlarında kullanılamaz
Aşağıdaki etkinlikler Windows'da, JFR kayıtlarında sürüm 8u111 için kullanılamaz:
- hotspot/jvm/os/processor/cpu_load
- os/processor/context_switch_rate
JDK-8063089 (herkese açık değildir)
JVM, macOS Sierra 10.12'de NullPointerExceptions oluşturur
macOS Sierra 10.12'de, kullanıcı bir ek program tarayıcıda çalışırken değiştirici tuşlara basarsa (örneğin Komut Tuşu, Üst Tuşu veya Alt Tuşu), "Dahili Hata" adlı bir hata kutusu görüntülenebilir. Ayrıca "exec simgesini macOS dock içinde gösterir. Kullanıcı ek programı yok edebilir veya bir değiştirici tuşa basmıyorken ek programı tekrar çalıştırmayı deneyebilir. Bkz. JDK-8165867.
Java Geçerlilik Bitiş Tarihi
8u111 için geçerlilik bitiş tarihi 17 Ocak 2017'dir. Güvenlik açıklarını kapatan yeni bir sürüm yayınlandığında mevcut Java'nın geçerliliği sona erer. Oracle Sunucularına erişemeyen sistemler için, bu JRE'nin (sürüm 8u111) geçerliliğini sona erdiren ikincil bir mekanizma 17 Şubat 2017 tarihinde devreye girecektir. İki koşuldan biri sağlandıktan sonra (yeni sürümün kullanılabilir olması veya geçerlilik bitiş tarihine ulaşılması), Java kullanıcılara yeni sürüme güncelleme yapmaları için ek uyarılar ve anımsatıcılar sağlar.
Hata Düzeltmeleri
Bu sürüm, güvenlik açıkları için düzeltmeler içermektedir. Daha fazla bilgi için bkz. Oracle Java SE Kritik Yama Güncellemesi Önerileri. Bu sürümde yer alan hata gidermelerin listesini görmek için, JDK 8u111 Hata Gidermeler sayfasına bakın.
» 8u111 Sürüm notları
Java 8 Güncelleme 101 (8u101)
Sürümde Öne Çıkanlar
- IANA Verisi 2016d
JDK 8u101, IANA saat dilimi verisi 2016d sürümünü içerir. Daha fazla bilgi için, JRE Yazılımı'nda Saat Dilimi Veri Sürümleri sayfasına bakın. Bkz. JDK-8151876. - Sertifika Değişiklikleri:
Kök CA'lara yeni DTrust sertifikaları eklendi
İki yeni kök sertifikası eklendi:- D-TRUST Root Class 3 CA 2 2009
diğer ad: dtrustclass3ca2
DN: CN=D-TRUST Root Class 3 CA 2 2009, O=D-Trust GmbH, C=DE - D-TRUST Root Class 3 CA 2 EV 2009
diğer ad: dtrustclass3ca2ev
DN: CN=D-TRUST Root Class 3 CA 2 EV 2009, O=D-Trust GmbH, C=DE
Kök CA'lara yeni Iden sertifikaları eklendi
Üç yeni kök sertifikası eklendi:
- IdenTrust Public Sector Root CA 1
diğer ad: identrustpublicca
DN: CN=IdenTrust Public Sector Root CA 1, O=IdenTrust, C=US - IdenTrust Commercial Root CA 1
diğer ad: identrustcommercial
DN: CN=IdenTrust Commercial Root CA 1, O=IdenTrust, C=US - IdenTrust DST Root CA X3
diğer ad: identrustdstx3
DN: CN=DST Root CA X3, O=Digital Signature Trust Co.
Comodo Kök CA'sı kaldırıldı
Comodo "UTN - DATACorp SGC" kök CA sertifikası, cacerts dosyasından kaldırıldı. Bkz. JDK-8141540
Sonera Class1 CA'sı kaldırıldı
"Sonera Class1 CA" kök CA sertifikası, cacerts dosyasından kaldırıldı. Bkz. JDK-8141276. - D-TRUST Root Class 3 CA 2 2009
- javax.rmi.CORBA.ValueHandler için erişim kontrolünü iyileştir
javax.rmi.CORBA.Util sınıfı, ortak işlemleri gerçekleştirmek için koçanlar ve bağlar tarafından kullanılabilen yöntemler sağlar. Ayrıca ValueHandlers için bir fabrika görevi görür. javax.rmi.CORBA.ValueHandler arayüzü, değer tiplerinin GIOP akışlarına okunması ve yazılmasını desteklemek için hizmetler sağlar. Bu yardımcı programların güvenlik farkındalığı, java.io.SerializablePermission("enableCustomValueHanlder") izninin sunulmasıyla geliştirilmiştir. Bu, javax.rmi.CORBA.Util ve javax.rmi.CORBA.ValueHandler API'lerinin kullanıcıları arasında bir güven ilişkisi oluşturmak için kullanılır.
Gerekli izin "enableCustomValueHanlder" SerializablePermission iznidir. SecurityManager ile çalıştırılan üçüncü taraf kodu yüklendi, ancak Util.createValueHandler(), çağrılırken yeni izne sahip olunmaması nedeniyle AccessControlException ile başarısız olacak.
Bu izin kontrolü davranışı JDK8u ve önceki sürümlerde "jdk.rmi.CORBA.allowCustomValueHandler" sistem niteliği tanımlanarak geçersiz kılınabilir.
Bu nedenle, bir SecurityManager yüklüyken ve aşağıdaki iki koşuldan biri karşılanmamışken javax.rmi.CORBA.Util.createValueHandler kodunu çağıran harici uygulamaların çalışabilmesi için bir konfigürasyon değişikliği gerekir:- java.io.SerializablePermission("enableCustomValueHanlder") izni, SecurityManager tarafından verilmez.
- JDK8u ve önceki sürümlerde çalışan uygulamalarda "jdk.rmi.CORBA.allowCustomValueHandler" sistem niteliği tanımlanmaz veya "false" (büyük/küçük harfe duyarlı değil) olarak tanımlanır.
"enableCustomValueHanlder" yazım hatasının Ekim 2016 sürümlerinde düzeltileceğini lütfen unutmayın. Bu ve bundan sonraki JDK sürümlerinde kullanılacak doğru SerializationPermission, "enableCustomValueHandler" olacaktır.
JDK-8079718 (herkese açık değildir) - Zaman damgası karma algoritması belirtmek için jarsigner'a destek eklendi
TSA sunucusuna gönderilecek mesaj ekini oluşturmak için kullanılan mesaj özet algoritmasını belirtmek için jarsigner'a yeni bir -tsadigestalg seçeneği eklendi. Eski JDK sürümlerde SHA-1 mesaj özet algoritması kullanılıyordu. Bu yeni seçenek belirtilmezse, JDK 7 Güncellemeleri ve sonraki JDK ailesi sürümlerinde SHA-256 kullanılır. JDK 6 Güncellemelerinde SHA-1 öndeğer olarak kalır, ancak standart çıkış akışına bir uyarı yazdırılır. Bkz. JDK-8038837 - MSCAPI Anahtar Deposu aynı adlı sertifikaları işleyebilir
Java SE Anahtar Deposu aynı diğer ada sahip sertifikalara izin vermez. Ancak Windows'da, tek anahtar deposunda yer alan birden çok sertifikaya benzersiz olmayan kolay adlar almaları için izin verilir. JDK-6483657 düzeltmesi, yapay olarak görünür diğer adları oluşturarak, Java API'siyle bu gibi benzersiz olmayacak şekilde adlandırılmış sertifikalarla çalışmayı mümkün kılar. Bu düzeltmenin, Java API'siyle aynı adlı sertifikaların oluşturulmasını sağlamadığını lütfen unutmayın. Yalnızca, 3. taraf araçlarıyla anahtar deposuna eklenmiş aynı adlı sertifikalarla uğraşmanıza izin verir. Tasarımınızın aynı adlı birden çok sertifikayı kullanmaması önerilmeye devam etmektedir. Özellikle şu cümle, Java belgelerinden çıkarılmayacaktır:
"Sorunları önlemek için, farklı olmadıkça, Anahtar Deposu'nda diğer ad kullanılması önerilmez."
Bkz. JDK-6483657. - Dağıtım Araç Kiti API yöntemleri artık JRE'yi yüklemiyor
deployJava.js'den Dağıtım Araç Kiti API installLatestJRE() ve installJRE(requestedVersion) yöntemleri ve dtjava.js'den install() yöntemi artık JRE'yi yüklemiyor. Bir kullanıcının Java sürümü güvenlik temel sınırının altındaysa, kullanıcı güncellenen bir JRE almak için java.com adresine yönlendirilir. JDK-8148310 (herkese açık değildir) - DomainCombiner, artık ProtectionDomain nesnelerini birleştirirken statik ProtectionDomain nesneleri için çalışma zamanı politikasına danışmayacak
Statik ProtectionDomain nesnelerini (2-arg oluşturucu ile oluşturulan) yetersiz izin kümesi ile kullanan uygulamalar, şimdi bu düzeltme ile bir AccessControlException alabilir. Bu uygulamalar Statik ProtectionDomain nesnelerini izin kümesi mevcut Politika tarafından genişletilecek yeni nesnelerle değiştirmeli (4-arg oluşturucuyu kullanarak) veya statik ProtectionDomain nesnesini gerekli tüm izinlerle oluşturmalıdır. JDK-8147771 (herkese açık değildir)
Statik sınıf kimliği kullanıldığında, JRE 8u101 Internet Explorer (IE) tarafından tanınmaz
JRE 8u101 kullanılırken, statik sınıf kimliği bir ek program veya web başlatma uygulaması başlatmak için kullanıldığında, kullanıcılar en son JRE'yi kullanmalarını ya da en son JRE'yi (JRE 8u101) yüklemiş ve kullanıyor olsalar bile başlatmayı iptal etmelerini belirten istenmeyen bir iletişim kutusu alacaklardır. Bu özel durum yalnızca Windows ve IE'ye uygulanabilir.
http://www.oracle.com/technetwork/java/javase/family-clsid-140615.html uyarınca JRE sürümü seçimi (Aralık 2005, JDK 5u6'dan bu yana) için statik sınıf kimliğinin kullanılması önerilmez.
Bu soruna çözüm bulmak için şunlardan birini yapabilir:
- Başlatmayı en son sürümle (8u101) çalıştırma ve uyarıyı yok sayma.
- Bu sorunu engellemek için JRE 8u101 yerine JRE 8u102 sürümünü yükleme.
- Statik sınıf kimliği yerine dinamik sınıf kimliği kullanma.
- HTML ek programı kullanırken java_version kullanma veya JNLP kullanılırken JNLP anahtar sözcüğü kullanma.