Aracılığıyla paylaş


GitHub Copilot modernizasyonuyla değerlendirme kapsamını anlama

Bu makalede GitHub Copilot modernizasyonunun uygulama değerlendirme özelliğinin neleri algılayabileceğiniz açıklanmaktadır. Değerlendirme iki temel özelliği kapsar:

  • Modernleştirme yolculuğunuz için kritik olan üç etki alanı arasında sorun algılama:

    • Buluta hazır olma: Dosya sistemi kullanımı, kimlik bilgileri yönetimi, mesajlaşma hizmetleri, veritabanı bağlantıları, kapsayıcılama boşlukları, oturum işleme, uzaktan iletişim desenleri ve daha fazlası dahil olmak üzere 16 endişe kategorisini tanımlar.
    • Java yükseltmesi: Eski Java sürümlerine, OSS destek sonu çerçevelerine (Spring Boot, Spring Cloud, Jakarta EE), yüzlerce kaldırılan veya kullanım dışı API'ye ve Ant gibi eski derleme araçlarına bayrak ekler.
    • Güvenlik: ISO/IEC 5055 standardından alınan ve ekleme güvenlik açıklarını (SQL, LDAP, XPath, OS komutu), sabit kodlanmış kimlik bilgilerini ve şifreleme anahtarlarını, eşitleme sorunlarını, kaynak yaşam döngüsü sorunlarını ve diğer yüksek etkili CWE'leri kapsayan 42 güvenlik zayıflığını algılar.
  • Uygulama anlama: Eski kod temelleri için değerlendirme kullanımda olan bağımlılıkları ve teknolojileri ortaya çıkardığından, geçişe başlamadan önce uygulamanızın neye dayandığından net bir şekilde yararlanabilirsiniz.

Aşağıdaki bölümlerde her etki alanı için sorun kapsamı ayrıntılı olarak açıklanmaktadır.

Etki alanı: buluta hazır olma

Alan adı Kategori Algılama Özeti Neden Önemlidir?
cloud-readiness credential-migration Sabit kodlanmış AWS kimlik bilgilerini (aws_access_key_id, aws_secret_access_keyAWS Gizli Dizi Yöneticisi kullanımını ve Spring Cloud Vault gibi ekli gizli dizi yönetimi kitaplıklarını) algılar. Güvenlik: Sabit kodlanmış erişim bilgileri ve satıcıya özgü gizli depolar yüksek düzeyde savunmasızdır. Bulutta yerel uygulamalar, kimlik bilgisi hırsızlığını önlemek için merkezi, kimlik tabanlı güvenlik gerektirir.
cloud-readiness region-configuration Kod veya yapılandırma dosyalarında sabit kodlanmış AWS bölge tanımlayıcılarını (aws.region, AWS_REGION) tanımlar. Taşınabilir -lik: Sabit kodlama coğrafyaları, uygulamayı belirli bir satıcının fiziksel altyapısına bağlayarak genel dağıtımı ve dayanıklılığı engeller.
cloud-readiness storage-migration AWS S3 SDK kullanımını (demetler, nesneler, önceden imzalanan URL'ler), S3 TransferManager ve Google Cloud Storage istemci kitaplıklarını algılar. Güvenilirlik ve Hizalama: Bu bağımlılıklar sizi bir satıcının nesne depolama alanına kilitler ve hedef platformun yerel depolama hizmetleriyle çalışmaz.
cloud-readiness messaging-service-migration Amazon SQS/SNS, Kafka, RabbitMQ (AMQP), ActiveMQ (Artemis), IBM MQ, TIBCO EMS, Solace PubSub+, Amazon Kinesis, Apache Pulsar ve Google Cloud Pub/Sub için bağımlılıkları ve bağlantı dizelerini belirler. Ölçeklenebilirlik ve Güvenilirlik: Eski mesajlaşma aracıları genellikle bulut ortamlarında yatay ölçeklendirmeyi ve yüksek kullanılabilirliği engelleyen sabit uç noktaları ve disk tabanlı kalıcılığı kullanır.
cloud-readiness database-migration MongoDB, MySQL, PostgreSQL, MSSQL, Cassandra, MariaDB, Oracle, Db2, Sybase ASE, Firebird, SQLite, Google Firestore ve Google Cloud Spanner için bağlantı dizelerini, sürücüleri ve zaman aşımı ayarlarını algılar. Güvenilir -lik: Kendi kendine yönetilen veya yerel olmayan veritabanlarında otomatik bulut ölçeklendirmesi eksiktir. Sabit kodlanmış zaman aşımları ve sabit yeniden deneme aralıkları, kısmi kesintiler sırasında engellemeye ve "yeniden deneme fırtınalarına" neden olabilir.
cloud-readiness file-system-management Yerel depolama erişimi için göreli/mutlak yolların, giriş yollarının (/home/), file:// şemaların ve standart Java GÇ/NIO veya Apache Commons GÇ çağrılarının kullanımını tanımlar. Durumsuzluk: Bulut kapsayıcıları geçici niteliktedir. Yerel bir dosya sistemine yazmak, örnek yeniden başlatmaları veya ölçeklendirme işlemleri sırasında veri kaybına yol açar; kalıcı verilerin dışlanması gerekir.
cloud-readiness local-credential Özellik veya XML dosyalarında Java KeyStore (.jks) dosyalarına, KeyStore.load yöntem çağrılarına ve düz metin parolalarına (password, pwd) bayrak ekler. Güvenlik Riski: Yetkisiz kişiler uygulama ortamına veya yapılandırma dosyalarına erişiyorsa, düz metin veya yerel dosyalarda depolanan hassas malzemenin güvenliği kolayca tehlikeye girebilir.
cloud-readiness configuration-management Uygulama ayarları için , , dışSystem.getenvSystem.getProperty.properties/.xml dosyaları ve Windows Kayıt Defteri erişimini algılar./.ini Dışlaştırma: İşletim sistemine özgü depolama alanı veya yerel dosyalar büyük ölçekte yönetilemez ve tüm örneklerde kod değişiklikleri olmadan dinamik olarak güncelleştirilemez.
cloud-readiness session-management Nesnelerdeki veri depolamayı ve web tanımlayıcılarında HttpSession "dağıtılabilir" etiketinin kullanımını tanımlar. Ölçeklenebilir -lik: Standart HTTP oturumları bulut ölçeklendirme için uygun değildir; durum, örnekler arasındaki trafik kaydırmaları sırasında veri kaybını önlemek için dağıtılmış bir önbellekte dışlanmalıdır.
cloud-readiness remote-communication Sıkı bir şekilde bağlanmış protokolleri (CORBA, RMI, JCA), güvenli olmayan HTTP/FTP protokollerini, Java Posta API'sini, doğrudan Yuva/NIO kanalı kullanımını ve sabit kodlanmış URL'leri algılar. Bulut Uyumluluğu ve Güvenlik: Sıkı bir şekilde bağlanmış etkileşimler ölçeklenebilirliği engeller. Güvenli olmayan protokoller ve sabit kodlanmış URL'ler dinamik bulut ağı ortamlarında savunmasız ve kırılgandır.
cloud-readiness jakarta-migration NoSQL, JPA, Data, WebSockets ve JAX-RS için Jakarta/Java EE'ye özgü API'lerin ve JBoss EAP, WebLogic veya WebSphere'den sunucuya özgü yapıtların kullanımını algılar. Desteklenebilirlik: Bulutta yerel çalışma zamanına geçiş için modern Jakarta ad alanlarıyla uyumlu hale getirme ve taşınabilirlik sağlamak için özel uygulama sunucusu bağımlılıklarını kaldırma gerekir.
cloud-readiness containerization Dockerfile'in yokluğunu veya apt-get upgrade, küçük harfli sözdizimi ve sözdizimi boşlukları gibi sorunlu Dockerfile yönergelerini belirler. Güvenilir -lik: Kapsayıcı derlemelerinde standartlaştırma, kararlı, yeniden üretilebilir dağıtımlar ve görüntülerin farklı ortamlarda tahmin edilebilir şekilde davranmasını sağlamak için gereklidir.
cloud-readiness scheduled-job-migration AWS Lambda işleyicilerini, Google Cloud Functions'ı, Quartz Scheduler bağımlılıklarını ve Spring Batch işleme iş akışlarını tanımlar. Bulut İşlem Hizalaması: Zamanlanmış işler ve sunucusuz işlevler, altyapı ek yükünü azaltmak için hedef buluta ait olay odaklı ve sunucusuz işlem modellerini kullanacak şekilde yeniden düzenlenmelidir.
cloud-readiness apm-migration New Relic, Elastic APM ve Dynatrace için eklenmiş APM aracılarını ve kitaplıklarını tanımlar. Gözlemlenebilirlik: Bu araçlar, yönetilen bir ortamdaki telemetri, gecikme süresi ve sistem durumu verilerini düzgün bir şekilde yakalamak için belirli bir bulut platformu tümleştirmesi gerektirir.
cloud-readiness auth-migration SAML/OpenSAML, OAuth 2.0, OpenID, Spring Security, LDAP kullanımı ve eski web formu kimlik doğrulama desenlerini algılar. Modern Kimlik: Eski web formu ve LDAP kimlik doğrulaması, modern talep tabanlı bulut kimliği sağlayıcılarının esnekliğinden ve güvenlik özelliklerinden (MFA, SSO) yoksun.
cloud-readiness os-compatibility Windows'a özgü Dynamic-Link Kitaplıkları (.dll dosyaları) üzerindeki proje bağımlılıklarını tanımlar. Taşınabilir -lik: DLL'ler işletim sistemine özgüdür ve standart Linux tabanlı bulut kapsayıcı ortamlarında çalışmaz. Bunları platformlar arası paylaşılan kitaplıklarla değiştirmeniz gerekir.

Etki alanı: java-upgrade

Alan adı Kategori Algılama Özeti Neden Önemlidir?
java-upgrade java-version-upgrade LTS olmayan Java sürümlerinin (9, 10, 12-16, 19, 20) ve eski sürümlerin (1.x ile 8 ve 11) kullanımını tanımlar. Güvenlik ve Destek: Eski ve LTS dışı sürümler bilinen güvenlik açıklarını içerir ve altyapıyı saldırılara açık bırakarak uzun süreli bakım güncelleştirmeleri içermez.
java-upgrade framework-upgrade OSS desteğinin sonuna ulaşan Spring Boot, Spring Cloud, Spring Framework ve Jakarta EE sürümlerini algılar. Desteklenebilirlik: Güncel olmayan çerçeveler güvenlik düzeltmelerini almayı durdurarak uygulamayı bir güvenlik riski haline getirir ve modern buluta özel araçlarla uyumsuz hale getirir.
java-upgrade deprecated-apis JBoss, Seam 2, WebLogic ve WebSphere'den , sun.misc.BASE64, Thread.stop yöntemleri ve özel kancalar da dahil olmak üzere SecurityManageryüzlerce kaldırılmış veya kullanım dışı API'yi kataloglar. Kararlılık ve Taşınabilirlik: Kaldırılan API'lerin kullanılması modern JVM'lerde çalışma zamanı kilitlenmelerine neden olur. Özel satıcı kancaları (WebLogic/JBoss iç öğeleri gibi) uygulamanın standart çalışma zamanları arasında taşınabilir olmasını engeller.
java-upgrade build-tool Ant (build.xml) veya Eclipse'e özgü proje yapılandırmaları (WTP/JEM özellikleri) gibi eski derleme sistemlerini tanımlar. Otomasyon: Eski araçlar, modern CI/CD işlem hatlarıyla verimli tümleştirme için gereken standart kuralları ve bağımlılık yönetimini içermez.

Etki alanı: Güvenlik (ISO 5055 destekli)

ISO/IEC 5055 , bir yazılım ürününün iç yapısını iş açısından kritik dört faktöre göre ölçmeye yönelik bir ISO standardıdır: Güvenlik, Güvenilirlik, Performans Verimliliği ve Bakım. Bu faktörler, bir yazılım sisteminin ne kadar güvenilir, güvenilir ve dayanıklı olduğunu belirler. Özünde ISO 5055 , "90% üretim sorununa neden olan 8% kusuru bulup önlemeyi" amaçlıdır. ISO 5055, her kalite özelliği altında en kritik ve etkili CWE'leri tanımlar: Güvenilirlik, Performans Verimliliği, Güvenlik ve Bakım. GitHub Copilot modernizasyonu için, aşağıdaki tabloda gösterildiği gibi ISO 5055'te tanımlanan güvenlik üzerinde seçilmiş CWE'lere karşı algılama yaparsınız.

CWE_ID Başlık Açıklama
CWE-22 Bir Yol Adının Kısıtlı Dizinle Yanlış Sınırlandırılması ('Yol Geçişi') Ürün, kısıtlanmış üst dizin altında bulunan bir dosya veya dizini tanımlamak amacıyla bir yol adı oluşturmak için dış girdiyi kullanır. Ancak, yol adının kısıtlı dizin dışında çözümlenmesine neden olabilecek özel öğeleri düzgün bir şekilde nötrleştirmez.
CWE-23 Göreli Yol Geçişi Ürün, kısıtlanmış bir dizin içinde bir yol adı oluşturmak için dış girdiyi kullanır, ancak .. gibi dizileri etkisiz hale getirmekte başarısız olur ve bu dizin dışında çözülmesine neden olabilir.
CWE-36 Mutlak Yol Geçişi Ürün, kısıtlanmış bir dizin içinde bir yol adı oluşturmak için dış giriş kullanır, ancak /abs/path gibi mutlak yol dizilerini etkisiz hale getirmeyi başaramaz, bu da bu dizinin dışında çözümlenmesine neden olabilir.
CWE-77 Bir Komutta Kullanılan Özel Öğelerin Hatalı Nötrleştirilmesi ('Komut Ekleme') Ürün, dışarıdan etkilenen girişi kullanarak bir komut oluşturur, ancak aşağı akış bileşenine gönderilen istenen komutu değiştirebilecek özel öğeleri nötrleştirmez.
CWE-78 İşletim Sistemi Komutunda Kullanılan Özel Öğelerin Hatalı Nötrleştirilmesi ('OS Komut Ekleme') Ürün, dışarıdan etkilenen girişi kullanarak bir işletim sistemi komutu oluşturur, ancak aşağı akış bileşenine gönderilen hedeflenen işletim sistemi komutunu değiştirebilecek özel öğeleri etkisiz hale getiremiyor.
CWE-88 Bir Komuttaki Bağımsız Değişken Sınırlayıcılarının Yanlış Nötrleştirilmesi ('Bağımsız Değişken Ekleme') Ürün, ayrı bir bileşen için bir komut dizesi oluşturur, ancak bu dizedeki bağımsız değişkenleri, seçenekleri veya anahtarları düzgün bir şekilde sınırlandırmaz.
CWE-79 Web Sayfası Oluşturma Sırasında Girişi Yanlış Nötrleştirme ('Siteler Arası Betik Oluşturma') Ürün, diğer kullanıcılara sunulan bir web sayfası olarak kullanılan çıktıya yerleştirmeden önce kullanıcı tarafından denetlenebilir girişi etkisiz hale getiremiyor.
CWE-89 SQL Komutunda Kullanılan Özel Öğelerin Hatalı Nötrleştirilmesi ('SQL Ekleme') Ürün, dışarıdan etkilenen girişi kullanarak bir SQL komutu oluşturur, ancak komutu değiştirebilecek öğeleri etkisiz hale getiremezse, girişlerin normal veriler yerine SQL söz dizimi olarak yorumlanması sağlanır.
CWE-564 SQL Enjeksiyonu: Hibernate Kullanıcı tarafından denetlenen girişle oluşturulan dinamik SQL deyimlerini yürütmek için Hibernate kullanmak, bir saldırganın deyimin anlamını değiştirmesine veya rastgele SQL komutları çalıştırmasına izin verebilir.
CWE-90 LDAP Sorgusunda Kullanılan Özel Öğelerin Hatalı Nötrleştirilmesi ('LDAP Ekleme') Ürün, dışarıdan etkilenen girişi kullanarak bir LDAP sorgusu oluşturur, ancak aşağı akış bileşenine gönderilen hedeflenen sorguyu değiştirebilecek öğeleri etkisiz hale getiremiyor.
CWE-91 XML Ekleme (Blind XPath Ekleme olarak da bilinir) Ürün, XML'de kullanılan özel öğeleri düzgün bir şekilde nötrleştirmez ve saldırganların işlemeden önce söz dizimini, içeriği veya komutları değiştirmesine olanak sağlar.
CWE-99 Kaynak Tanımlayıcılarının Yanlış Denetimi ('Kaynak Ekleme') Ürün girişi alır, ancak hedeflenen denetim alanının dışındaki bir kaynak için tanımlayıcı olarak kullanmadan önce doğru şekilde kısıtlamaz.
CWE-130 Uzunluk Parametresi Tutarsızlığının Yanlış işlenmesi Ürün, biçimlendirilmiş bir iletiyi veya yapıyı ayrıştırır, ancak ilişkili verilerin gerçek uzunluğuyla tutarsız bir uzunluk alanını yanlış işler.
CWE-259 Sabit Kodlanmış Parola Kullanımı Ürün, kendi gelen kimlik doğrulaması veya dış bileşenlerle giden iletişim için kullanılan sabit kodlanmış bir parola içerir.
CWE-321 Sabit Kodlanmış Şifreleme Anahtarı Kullanımı Ürün sabit kodlanmış, değiştirilemez bir şifreleme anahtarı kullanır.
CWE-434 Tehlikeli Türe Sahip Dosyanın Sınırsız Karşıya Yüklenmesi Ürün, ortamı içinde otomatik olarak işlenen tehlikeli dosya türlerinin karşıya yüklenmesine izin verir.
CWE-456 Değişkenin Başlatılması Eksik Ürün kritik değişkenleri başlatmaz ve yürütme ortamının beklenmeyen değerler kullanmasına neden olur.
CWE-457 Başlatılmamış Değişkenin Kullanımı Kod başlatılmamış bir değişken kullanır ve bu da öngörülemeyen veya istenmeyen sonuçlara yol açar.
CWE-477 Eski İşlevin Kullanımı Kod, kullanım dışı veya kullanımdan kaldırılmış işlevleri kullanarak etkin olarak gözden geçirilmiyor veya bakımlı olmadığını gösteriyor.
CWE-502 Güvenilmeyen Verilerin Seri Durumdan Çıkarılması Ürün, güvenilmeyen verileri deseralize ederek, elde edilen verilerin yeterince geçerli olup olmadığını doğrulamadan işleme tabi tutar.
CWE-543 Çoklu İş Parçacıklı Bağlamda Eşzamanlılık Kontrolü Olmadan Singleton Tasarımının Kullanımı Ürün, uygun eşitleme olmadan çok iş parçacıklı bir ortamda kaynak oluştururken singleton deseni kullanır.
CWE-567 Çoklu İş Parçacığı Bağlamında Paylaşılan Verilere Senkronize Edilmemiş Erişim Ürün, statik değişkenler gibi paylaşılan verileri iş parçacıkları arasında düzgün bir şekilde eşitleyemiyor ve tanımsız davranışa yol açıyor.
CWE-570 İfade Her Zaman Yanlış Ürün, her zaman false olarak değerlendirilen bir ifade içerir.
CWE-571 İfade Her Zaman Doğru Ürün, her zaman true olarak değerlendirilen bir ifade içerir.
CWE-606 Döngü Koşulu için Doğrulanmamış Girdi Ürün, döngü koşulları için kullanılan girişleri düzgün bir şekilde denetlemediğinden, aşırı döngü nedeniyle potansiyel olarak hizmet reddine yol açabilir.
CWE-643 XPath İfadeleri İçinde Verilerin Yanlış Nötrleştirilmesi ('XPath Ekleme') Ürün, BIR XML veritabanı için dinamik olarak XPath ifadesi oluşturmak için dış giriş kullanır, ancak bu girişi nötrleştiremiyor.
CWE-652 XQuery İfadeleri İçinde Verilerin Yanlış Nötrleştirilmesi ('XQuery Ekleme') Ürün, bir XQuery ifadesini dinamik olarak oluşturmak için dış girişi kullanır, ancak bu girişi doğru şekilde nötrleştiremez.
CWE-662 Yanlış Eşitleme Ürün, birden çok iş parçacığının veya sistemlerin düzgün eşitleme olmadan paylaşılan kaynağa erişmesine izin verir ve bu da eşzamanlı erişim sorunlarına neden olabilir.
CWE-665 Yanlış Başlatma Ürün bir kaynağı başlatmıyor veya yanlış başlatıyor, bu da erişildiğinde kaynağı potansiyel olarak beklenmeyen bir durumda bırakabilir.
CWE-667 Hatalı Kilitleme Ürün, bir kaynak üzerindeki kilidi doğru bir şekilde edinmez veya bırakmaz, bu da beklenmeyen durum değişikliklerine yol açar.
CWE-672 Süre Sonu veya Yayından Sonra Bir Kaynakta İşlem Ürün süresi dolduktan, serbest bırakıldıktan veya iptal edildikten sonra kaynağa erişir veya bu kaynak üzerinde çalışır.
CWE-681 Sayısal Türler Arasında Yanlış Dönüştürme Veriler tür dönüştürme sırasında atlanabilir veya beklenmeyen değerlere çevrilebilir ve bu da hassas bağlamlarda kullanıldığında tehlikeli olabilir.
CWE-682 Yanlış Hesaplama Ürün, daha sonra güvenlik açısından kritik kararlar veya kaynak yönetiminde kullanılan yanlış sonuçlar üreten bir hesaplama gerçekleştirir.
CWE-732 Kritik Kaynak için Yanlış İzin Ataması Güvenlik açısından kritik bir kaynağın izinleri, istenmeyen aktörlerin okumasına veya değiştirmesine olanak tanıyan bir şekilde belirtilir.
CWE-772 Etkin Yaşam Süresinden Sonra Kaynağın Eksik Serbest Bırakılması Ürün, etkin ömrü sona erdikten sonra bir kaynağı serbest bırakmaz ve artık gerekli değildir.
CWE-775 Etkin Yaşam Süresinden Sonra Dosya Tanımlayıcısının veya Tanıtıcının Eksik Sürümü Ürün artık gerekmeyen bir dosya tanımlayıcısını veya tanıtıcıyı serbest bırakamıyor.
CWE-778 Yetersiz Kayıt Ürün, güvenlik açısından kritik bir olayı kaydedemiyor veya günlüğe kaydederken önemli ayrıntıları atlar.
CWE-783 İşleç Önceliği Mantığı Hatası İfade, işleç önceliği nedeniyle yanlış mantık kullanıyor.
CWE-789 Aşırı Boyut Değerine Sahip Bellek Ayırma Ürün, beklenen sınırlar içinde olduğundan emin olmadan güvenilmeyen, büyük boyutlu bir değere göre bellek ayırır.
CWE-798 Sabit Kodlanmış Kimlik Bilgilerinin Kullanımı Ürün, parola veya şifreleme anahtarı gibi sabit kodlanmış kimlik bilgileri içerir.
CWE-820 Eksik Eşitleme Ürün, erişimi eşitlemeye çalışmadan paylaşılan bir kaynağı eşzamanlı olarak kullanır.
CWE-821 Yanlış Eşitleme Ürün paylaşılan bir kaynağı eşzamanlı olarak kullanır ancak erişimi doğru şekilde eşitlemez.
CWE-835 Ulaşılamayan Çıkış Koşuluyla Döngü ('Sonsuz Döngü') Ürün, ulaşılamayan bir çıkış koşuluna sahip bir yineleme veya döngü içerir.
CWE-611 XML Dış Varlık Referansının Yanlış Kısıtlanması Ürün, hedeflenen denetim alanı dışında çözümlenen URI'ler içeren varlıkları içeren XML belgelerini işler.
CWE-1057 Beklenen Data Manager Bileşeni Dışında Veri Erişim İşlemleri Ürün, tasarım gereği gerekli olan ayrılmış, merkezi bir veri yöneticisi bileşenini atlayan veri erişim işlemleri gerçekleştirir.

Sonraki Adımlar