Rust Coreutils 0.9.0: daha az tehlikeli, daha hızlı

kapanış bildirimi

Bu makale İngilizce olarak da mevcuttur. Teknik yardımla tercüme edildi ve yayınlanmadan önce editoryal olarak gözden geçirildi.

Uutils/coreutils geliştiricileri, Rust'ta yazılmış GNU Core Utilities'in yeni uygulamalarının 0.9.0 sürümünü yayımladı. Sürüm esas olarak harici denetim sonrasında güvenlik iyileştirmeleri, daha az tehlikeli kod ve sıfır kopyalama prosedürleri aracılığıyla daha hızlı G/Ç yolları getiriyor. Yeni sürüm ayrıca WebAssembly, Windows ve Cygwin desteğini de genişletiyor.

Duyurudan sonra devamını okuyun

uutils/coreutils, Rust'taki klasik GNU Çekirdek Yardımcı Programlarını yeniden uygular. Proje, Unix ve Linux sistemleri için çok sayıda standart araç sağlar; bunlar arasında şunlar yer almaktadır: ls, cp, mv, rm, cat VE sort. Amaç, Rust aracılığıyla bellek güvenliğini ve sürdürülebilirliğini geliştirirken, GNU benzerleriyle mümkün olan en yüksek uyumluluğu elde etmektir.

Sürümün odak noktası Zellic şirketi tarafından yapılan denetime dayanan güvenlik iyileştirmeleridir. Denetçiler dosya sisteminde esas olarak TOCTOU (Kontrol Zamanı, Kullanım Zamanı) güvenlik açıklarını ve son durum sorunlarını buldu. TOCTOU boşlukları yarış koşullarıdır: Bir dosyanın durumu, kontrol ile fiili kullanımı arasında değişebilir ve istismar edilebilecek olan da tam olarak bu boşluktur.

Bakımcılar, atanan 44 CVE'nin klasik bellek hatalarını açıklamadığına dikkat çekiyor. Bunun yerine denetim, GNU Coreutils ile karşılaştırıldığında bazı durumlarda güvenlikle ilgili olabilecek davranış farklılıklarını ortaya çıkardı. Tasarım gereği sürüm 0.9.0 bu bulguların çoğunu kapatıyor.

Bu amaçla proje, adı verilen yeni bir modülü tanıtıyor. uucore::safe_copy kopyalama işlemlerini TOCTOU saldırılarına karşı koruyan bir tane. Özyinelemeli işlemler bile cp, mv VE chmod Yeterli koruma mekanizmalarına sahip olun. rm gibi sorunlu rota spesifikasyonlarıyla daha sağlam çalışır. . VE .. etrafında. nohup dosyayı ekler nohup.out artık kısıtlayıcı erişim haklarına sahip 0600 A.E. chroot yeni kök ortamına geçmeden önce kullanıcı ve grup kimliklerini çözümler.

Ekip aynı zamanda güvenli olmayan kod yüzdesini de azaltmaya devam ediyor. Paylaşılan araçlar, testler ve kitaplıklardaki çok sayıda yer artık güvenli olmayan bellek veya sistem erişimi gerektirmiyor. Proje birçok alanda daha önce kullanılan kütüphanelerin de yerini alıyor nix VE libc Başından sonuna kadar rustix. Bu, güçlü bir şekilde yazılmış Rust arayüzleri aracılığıyla sistem çağrıları sağlar ve böylece bir dizi tipik hata kaynağının önüne geçer. Değişiklik, diğer hususların yanı sıra, id, tr, timeout, sort, wc, tail, cp VE who.

Duyurudan sonra devamını okuyun

Linux altında yeni sıfır kopyalı veri yolları daha fazla hız sağlar. Artık birçok araç sistem çağrılarından daha fazla yararlanıyor splice(), tee() VE pipe()verileri doğrudan çekirdek arabellekleri arasında aktarmak için. Veriler artık sürecin adres alanından geçmediğinden hafıza erişimleri ve CPU yükü azalır. Diğer şeylerin yanı sıra, bundan faydalanmalısınız cat, wc, head, tail, cp, tee, yes VE unexpand. İçin unexpand Geliştiriciler %7,5 civarında bir hız artışı iddia ediyor. Ayrıca cp VE tee boru verilerini işlerken fark edilir derecede daha hızlı çalışır.

Proje, GNU uyumluluğu konusunda yoğun bir şekilde çalışmaya devam ediyor. GNU Coreutils 9.11 artık 9.10 yerine referans olarak kullanılıyor. GNU test paketindeki başarısız testlerin sayısı 21'den 56'ya çıkar, ancak tasarım gereği regresyon yoktur. Bunun nedeni, GNU'nun pakete eklediği ve uutils'in henüz tam olarak geçemediği 25 yeni testte yatmaktadır. Ek uyumluluk endişeleri giderir numfmt, date, tr, cksum, factor, head, stat VE sort.

Değişiklikler özellikle kapsamlı numfmt dışarı. Araç artık sayısal değerleri daha kesin bir şekilde biçimlendiriyor, bilimsel gösterimi reddediyor ve yerel ayarlara uyuyor LC_NUMERIC ondalık ayırıcı için. Yuvarlama, işaretleme ve çok baytlı son ek işlemede de değişiklikler vardır.

Ayrıca ls çok sayıda düzeltme ve ekleme alır. Sembolik bağlantıları, sürüm sıralamasını ve özyinelemeli dizin listelemeyi kapsarlar. Geliştiriciler aynı zamanda diğer programların da kullanabilmesi için kodu yeniden yapılandırdılar. ls çıktısını mutlaka standart çıktıya yönlendirmeden bir kitaplık olarak entegre edilebilir. Proje örnek olarak Nushell kabuğunu gösteriyor.

Sürüm 0.9.0 aynı zamanda platform desteğini de geliştiriyor. Araçlar ln, dd, mktemp VE tty artık WebAssembly uygulamalarının tarayıcı dışındaki işletim sistemi işlevlerine standartlaştırılmış erişimine olanak tanıyan WebAssembly Sistem Arayüzü (WASI) ile de çalışıyorlar. Ek olarak geliştiriciler Windows, MSYS2 ve Cygwin desteğini geliştiriyor ve OpenBSD'ye geçiş üzerinde çalışmaya devam ediyor. Son olarak, şimdi de düşünün numfmt VE du Ondalık ayırıcı için bölgesel ayarlar LC_NUMERIC.

Güncellemeyle ilgili tüm ayrıntıları GitHub proje sayfasındaki sürüm notlarında bulabilirsiniz.


(fo)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir