PortGPT: Araştırmacılar bir yapay zekaya güvenlik yamalarını otomatik olarak desteklemeyi nasıl öğretti?


Eski yazılım sürümlerini güvende tutmak çoğu zaman yeni sürümlerdeki yamaların desteklenmesi anlamına gelir. Bu, özellikle Linux çekirdeği gibi büyük açık kaynaklı projeler için rutin fakat sıkıcı bir iştir. Yeni bir araştırma çalışması, bu işi otomatik olarak yapmak için geniş bir dil modeli kullanan bir araç geliştirdi.

Çin, Amerika Birleşik Devletleri ve Kanada’dan bir araştırmacı ekibi, güvenlik yamalarını ana hat şubelerinden yazılımın eski sürümlerine geçirme sürecini otomatikleştirmek için tasarlanmış bir yapay zeka sistemi olan PortGPT’yi yarattı. Yöntemlerini, geliştiricilerin yamaları manuel olarak uyarlarken kullandıkları akıl yürütme adımlarını kopyalama girişimi olarak tanımlıyorlar.

PortGPT destek güvenlik yamaları

PortGPT’nin iş akışı

Eski kod yeni düzeltmelere ihtiyaç duyduğunda

Açık kaynaklı projeler, istikrarı ve uzun vadeli kullanıcıları desteklemek için farklı dalları korur. Ana dalda bir hata veya güvenlik açığı giderildiğinde bakımcıların bu düzeltmeyi kararlı ve uzun vadeli destek sürümlerine taşıması gerekir. Destekleme adı verilen bu süreç zaman alabilir ve genellikle kodun sürümler arasında nasıl değiştiğinin anlaşılmasını gerektirir.

Geliştiriciler normalde sürümleri karşılaştırır, kod geçmişini izler ve uyumluluğu sağlamak için ayarlamalar yapar. Ancak kod tabanları büyüdükçe bu sürecin ölçeklendirilmesi zorlaşır. Pek çok proje, manuel çabaya ve uzman bilgisine dayanır; bu da yama dağıtımını yavaşlatır ve eski sistemlerin gereğinden uzun süre açıkta kalmasına neden olabilir.

PortGPT’nin yazarları, önceki otomasyon araçlarının sözdizimi veya yapı açısından katı kurallara uyduğunu ve kod beklenmedik şekillerde geliştiğinde sıklıkla başarısız olduklarını belirtiyor. Yeniden adlandırılan işlevler veya taşınan dosyalar gibi küçük farklılıklar bile bunları durdurabilir. Ekip, daha çok insan bakıcıya benzer şekilde mantık yürütebilecek bir şey inşa etmek için yola çıktı.

Yapay zekaya bir geliştirici gibi düşünmeyi öğretmek

PortGPT, bir dizi özel araç aracılığıyla kodla etkileşime giren geniş bir dil modeli etrafında oluşturulmuştur. Bu araçlar, kaynak dosyalara erişmesine, kod geçmişini görüntülemesine, işlevleri bulmasına ve yamaları adım adım uygulamasına olanak tanır.

Araştırmacılar, insan geliştiricilerin yedekleme görevlerini nasıl yerine getirdiğini gözlemledi ve ardından PortGPT’ye benzer yetenekler kazandırdı. Örneğin, yapay zeka eski sürümde bir işlev bulamazsa, işlevin ne zaman tanıtıldığını veya yeniden adlandırıldığını görmek için Git geçmişini arayabilir. Bir yama derlenmezse, çalışmasını iyileştirmek ve tekrar denemek için derleyici hata mesajlarını kullanabilir.

Çalışmanın ortak yazarlarından biri olan Zhaoyang Li, Help Net Security’ye, amacının yama otomasyonuna daha önceki kural tabanlı araçların başaramadığı bir düzeyde mantık ve uyumluluk kazandırmak olduğunu söyledi. Li, “PortGPT, öncelikle LLM tabanlı uyarlamanın güvenilirliğini ve muhakeme doğruluğunu geliştirmek için Git geçmişini entegre ediyor” dedi.

Li, bu entegrasyonun sistemin yamaların nerede ve nasıl uygulanacağı konusunda daha akıllı kararlar almasına yardımcı olduğunu ekledi. Yapay zeka, geçmiş değişiklikleri takip ederek daha yeni yamaları eski kod sürümleriyle hizalayabilir, yeniden adlandırılmış değişkenleri veya aksi halde hatalara neden olabilecek yeniden konumlandırılmış mantığı tanımlayabilir.

PortGPT’nin süreci iki aşamada gerçekleşir. İlk olarak, yamanın “iri parça” olarak bilinen her bir parçasını hedef sürüme uyacak şekilde uyarlar. Değişikliğin hâlâ geçerli olup olmadığını kontrol eder, ilgili simgeleri arar ve destekleyici kod parçacıklarını toplar. İkinci olarak, uyarlanmış tüm parçaları birleştirir, yamayı kod tabanına uygular ve bir derleme testi gerçekleştirir. Hatalar varsa sistem bunları analiz eder ve yamayı ayarlar.

Bu yaklaşım, PortGPT’nin yalnızca önceden tanımlanmış dönüşüm kurallarına dayanmak yerine bağlamı ve geri bildirimi kullanmasına olanak tanır. Kod ilişkileri hakkında akıl yürütebilir, kodun ne zaman taşındığını anlayabilir ve depo geçmişinden eksik ayrıntıları çıkarabilir.

Hikayeyi anlatan sayılar

Ekip, mevcut destekleme çalışmalarından elde edilen yaklaşık iki bin yama üzerinde PortGPT’yi test etti. Bu yerleşik veri kümelerinde yüzde 89,15’lik bir başarı oranı elde ederek FIXMORPH ve TSBPORT gibi diğer otomatik araçlardan daha iyi performans gösterdi. Sistem, C, C++ ve Go programları genelinde 146 karmaşık vakadan oluşan daha sert, kendi kendine oluşturulmuş bir veri kümesinde vakaların yüzde 62,33’ünde başarılı oldu.

Gerçek dünya performansını kontrol etmek için araştırmacılar, eğitim verilerinin kesilmesinden sonra yayınlanan Linux ve Ubuntu yamalarına PortGPT’yi uyguladılar. Araç, Linux 6.1 kararlı dalında 18 yamadan dokuzunu başarıyla destekledi. Dokuzunun tamamı daha sonra Linux topluluğu tarafından kabul edildi ve bu, yapay zeka tarafından oluşturulan yamaların pratik standartları karşıladığını gösterdi.

Ekip ayrıca birden fazla CVE için 16 yamadan 10’unu destekleyen Ubuntu güncellemeleri üzerinde testler gerçekleştirdi. Bu sonuçlar, PortGPT’nin, özellikle insan kaynaklarının sınırlı olduğu durumlarda, uzun vadeli şubeleri güncel tutma konusunda bakımcılara yardımcı olabileceğini göstermektedir.

Yapay zekanın hala mücadele ettiği yer

PortGPT’nin güçlü sonuçları kısmen olgun açık kaynak projelerinde mevcut olan yapılandırılmış, yüksek kaliteli verilere dayanmaktadır. Li, tutarlı taahhüt bilgileri olmayan depolarla çalışırken performansın düşebileceğini belirtti. “Temel olarak Linux çekirdeğine odaklanan deneylerimizde, taahhüt meta verileri genel olarak yüksek kalitede olduğundan önemli sorunlarla karşılaşmadık” dedi. “Eksik mesajlar veya kesintiye uğramış taahhütler gibi zayıf veya tutarsız taahhüt geçmişine sahip depolarda, PortGPT’nin performansı eksik veya yanıltıcı bağlamsal bilgiler nedeniyle düşebilir.”

Bu sınırlamanın yapay zekaya özgü olmadığını ekledi. Li, “Bu sınırlama aslında insan bakıcıların deneyimlerine benzer, çünkü zayıf geçmiş kayıtlar çoğu zaman yedekleme görevlerini daha zor ve daha az güvenilir hale getiriyor” dedi.

Diğerleri başarısız olduğunda neden işe yarıyor?

Kural tabanlı sistemlerden farklı olarak PortGPT, kod yedeklemeyi bir akıl yürütme sorunu olarak ele alır. Dil modelinin kod bağlamını yorumlama ve doğrulama araçlarından gelen geri bildirimlere yanıt verme yeteneğini kullanır. Sistem Git farklarına erişebilir ve bunları özetleyebilir, sürümler arasındaki işlev değişikliklerini izleyebilir ve hataları düzeltmek için derleyici geri bildirimini kullanabilir.

Araştırmacılar ayrıca bir yamanın doğrudan uygulanamayacağını tespit edecek mekanizmalar da tasarladılar. Bir dosya yolu değiştiyse PortGPT, yeniden adlandırılan veya benzer dosyaları arar. Bağlam satırları eşleşmezse düzenleme mesafesi ölçüsünü kullanarak en yakın kod bloğunu hesaplar. Yalnızca birkaç başarısız denemeden sonra bağlam satırlarını otomatik olarak düzeltir ve tekrar dener.

Bunun yazılım güvenliği açısından anlamı nedir?

PortGPT hâlâ araştırma aşamasında olsa da başarısı, yapay zekanın açık kaynaklı yazılım için yama yönetimini nasıl değiştirebileceğinin ipuçlarını veriyor. Yedeklemeyi otomatikleştirmek, eski sistemler için güvenlik açığının açığa çıkması ile yama kullanılabilirliği arasındaki süreyi azaltabilir. Ayrıca, uzun vadeli destek dağıtımlarına bağımlı olan güvenlik ekiplerinin, büyük manuel iş yükleri olmadan bunları güncel tutmasına da yardımcı olabilir.

Çalışma aynı zamanda büyük dil modellerinin yazılım bakımı için otonom aracılar olarak kullanılmasına yönelik daha geniş bir eğilimin altını çiziyor. PortGPT gibi araçlar, kod anlama, sürüm kontrolü farkındalığı ve geri bildirim döngülerini entegre ederek yapay zekanın gerçek geliştirme iş akışlarına nasıl katılabileceğini gösterir.



Source link