iTerm2 kritik güvenlik güncellemesini duyurdu
(iterm2.com)- iTerm2 3.5.11, 2 Ocak 2025’te derlenen bir sürüm ve SSH entegrasyonuyla ilgili kritik bir güvenlik düzeltmesi nedeniyle hemen güncellenmesi öneriliyor
- Etki alanı, SSH entegrasyonu özelliğini kullanan 3.5.6~3.5.10 sürümleri ile 3.5.6 sonrasındaki tüm beta sürümlerinin kullanıcılarını kapsıyor
- Hata oluştuğunda giriş ve çıkışlar uzak ana makinedeki /tmp/framer.txt dosyasına kaydediliyor ve aynı uzak ana makinedeki diğer kullanıcılar bu dosyayı okuyabiliyor
- Koşullar,
it2sshkullanılması veya profilde Command ayarının"SSH"olması ve"SSH Integration"seçeneğinin seçilmiş olması; ayrıca uzak ana makinenin varsayılan arama yolunda Python 3.7 veya üstü bulunması - Kullanıcılar 3.5.11’e yükselttikten sonra etkilenen uzak ana makinelerde
/tmp/framer.txtdosyasını silmeli
Etki alanı ve oluşma koşulları
- iTerm2 3.5.11, kritik bir güvenlik düzeltmesi içeren bir sürüm ve hemen güncellenmesi öneriliyor
- Etkilenebilecek sürümler, SSH entegrasyonu özelliğini kullanan şu sürümler:
- 3.5.6
- 3.5.7
- 3.5.8
- 3.5.9
- 3.5.10
- 3.5.6 sonrasındaki tüm beta sürümleri
- Hata, SSH entegrasyonu özelliğinde giriş ve çıkışların uzak ana makinedeki
/tmp/framer.txtdosyasına yazılmasına neden oluyor- Bu dosya, uzak ana makinedeki diğer kullanıcılar tarafından okunabiliyor olabilir
- Sorun, aşağıdaki koşulların tümü doğru olduğunda ortaya çıkıyor
it2sshkomutu kullanılıyor- veya
Settings > Profiles > Generaliçinde Command açılır menüsü"SSH"olarak ayarlanmış ve SSH ayarları iletişim kutusunda"SSH Integration"seçilmiş"Login Shell","Command","Custom Command"ayarları bu koşula dahil değil
- Uzak ana makinenin varsayılan arama yolunda Python 3.7 veya üstü kurulu
Güncelleme ve doğrulama
- Kullanıcılar hemen iTerm2 3.5.11 sürümüne yükseltmeli
- Etkilenen uzak ana makinelerde
/tmp/framer.txtdosyası silinmeli - SSH entegrasyonunda log dosyası yazan kod kaldırıldı ve yeniden herkese açık bir sürümde yayınlanmayacak
- zip dosyasının SHA-256 değeri şöyle:
655e32b4a9466104f1b0d8847e852515bc332bdf434801762e01b9625caa43e2
- zip dosyasını doğrulamak için
https://keybase.io/verifykullanılabilir
2 yorum
Şaşırıp kontrol ettim de sürümüm 3.4.3 çıktı. Son zamanlarda terminali çok kullanmadığım için de ilgilenmedim, bu yüzden güncellemeler de pek düzenli yapılmıyor.
Hacker News yorumları
Üretime print() ile debug konmuş bir vaka gibi görünüyor
https://github.com/gnachman/iTerm2/commit/63ec2bb0b95078a97a...
https://github.com/gnachman/iTerm2/blame/5db0f74bf647f6d53ea...
verbose modunu kapatan commit, tüm framer loglarını kaldırmadan hemen önceki şu commit: https://github.com/gnachman/iTerm2/commit/014ba7ec40fc790f65...
VERBOSE modunu açan commit ise bu: https://github.com/gnachman/iTerm2/commit/5db0f74bf647f6d53e...
Muhtemelen uygulama ya da debug sırasında
VERBOSE=1yapıp commit’ten önceVERBOSE=0’a geri döndürmeyi unuttuconsole.infokullanıyoruzprint ile debug yapmanın kendisi sorun değil ve gerekli olduğu zamanlar var; ama yanlışlıkla geride bırakılmaması için koruma koymak iyi olur. Gerçekten çok kolay yapılan bir hata
SSH integrationözelliğindeki bir bug yüzünden giriş ve çıkışın uzak host’taki/tmp/framer.txtdosyasına kaydedilmesi ve bu dosyanın uzak host’taki diğer kullanıcılar tarafından okunabilmesi oldukça ciddiEskiden SSH ile bağlanılan ama artık erişim hakkı olmayan makinelerde de böyle dosyalar kalmış olabilir
it2sshkomutu kullanılmış olmalı ya da Settings > Profiles > General altında Command açılır menüsü"SSH"olarak ayarlanmış ve"SSH Integration"işaretlenmiş olmalı."Login Shell","Command","Custom Command"buna dahil değilYine de
bashveyazshyerine varsayılan terminal komutu olaraksshkullanan biriyseniz, başka uygulamalarda da birçok sıra dışı özellik kullanıyor olma ihtimaliniz yüksek; bu yüzden yalnızca iTerm’i değil, diğer saldırı yüzeylerini de dikkate almalısınıziTerm2’yi uzun süredir iş ve kişisel kullanım için memnuniyetle kullanıyorum; kullanmaya devam edeceğim ve eskiden yaptığım gibi tekrar bağış yapmayı düşünüyorum
“Bu hatadan derin pişmanlık duyuyoruz ve bunun bir daha yaşanmaması için önlemler alacağız” gibi cümleleri görünce her zaman biraz iç geçiriyorum
Asıl mesele hangi önlemler olduğu; böyle bir şeyin tekrar yaşanmaması için ne yapılması gerektiğini de pek bilmiyorum. Tüm özellikleri çalıştırıp sistem çağrılarını yakalayarak dosya açıp yazmadığını kontrol eden otomatik bir araç yapılabilir belki, ama GUI uygulamalarında bu o kadar zor görünüyor ki denemeye bile kalkışılmayacak gibi. Bundan daha hafif önlemlerle tekrar olmayacağını garanti etmek zor geliyor
Gerçekçi olarak programcıların bundan çok daha iyisini yapması zor görünüyor; o halde tüm sorumluluğu bu tek kişiye yüklemek adil değil
Ancak kısa yazılmış olması, hatanın büyüklüğünü anlamadığı anlamına gelmez bence. Yine de bu tür takip ayrıntılarını ele alan derinlemesine bir blog yazısının daha sonra gelmesini beklerim
Özür dilemese daha kötü olurdu; tekrarını önlemek için önlem alacağını söylemese de daha kötü olurdu. Şu anda tüm önlemler hazır olsaydı bu daha da tuhaf olurdu. Önce A) bug’ı düzeltmek, B) düzeltmeyi yayınlamak, C) bug’ı ve düzeltme sürümünü duyurmak, ardından D) post-mortem yapmak gerekir; bunları birbirine karıştırmak süreci dağınık bir yaklaşım gibi gösterir
Tüm bug’ları ya da tüm istenmeyen dosya yazmalarını engelleyebileceğini iddia etmek de tuhaf olur. Dosyaya asla yazılmadığını kanıtlamak imkânsız
İyi bir başlangıç noktası, gerçekten yaptıkları gibi SSH loglamasını silmek ve dosya erişimini doğrulayacak otomasyon yöntemlerini araştırmak. macOS geliştirmede, ekosistemin ortak araçlarının çok ilerisinde birçok araç var; erişime izin verilen yolların
NSArray’ini belirtmeye dair 1990’lardan kalma teknik dokümanlar ya da Instruments’ın yerleşik dtrace entegrasyonu gibi yöntemler olabilir. Bunu CI’da çalıştırıp test kapsamı sağlamak, yapılabileceklerin en iyisine yakın olurTartışma noktası, “bunun bir daha yaşanmaması için önlemler alacağız” ifadesini “%100 kesinlikle ve sonsuza kadar bir daha olmayacağını garanti edene kadar önlem alacağız” diye okuyup okumamak gibi görünüyor. Genç ve kolay etkilenen insanlara söylemek gerekirse, bu blog yazısı gayet iyi ve burada daha iyi yapılabilecek pek bir şey yok
Alınabilecek önlem, bu olaydan ders çıkarıp o yola girerken daha dikkatli olmayı sağlamaktır
console.logvarsa merge edilememesi için linter kullanmaktan bahsedilmişti; ben de tam olarak böyle bir yaklaşım seçerdimGeçersiz bir durumun var olmasını engellemek oldukça faydalı bir ilke
Büyük ölçüde kişisel tercih meselesi olabilir ama 2025’te macOS’un varsayılan Terminal’i yerine iTerm2 kullanmak için gerçekten güçlü ve ikna edici bir neden var mı?
Çok önerildi ama bu SSH hatası gibi güvenlik ve gizlilik sorunları beni endişelendirdiği için temkinliydim
Bir diğeri de yanlışlıkla bir sekmeyi ya da pencereyi kapatsam bile birkaç saniye içinde ⌘z’ye basınca pencerenin hiç kapatılmamış gibi geri gelmesi
Ayrıca minimum renk kontrastı da iyi. Terminal renk temasıyla çalışan programın renk teması kötü biçimde karışıp okunamaz hâle geldiğinde, iTerm bunu algılayıp otomatik olarak daha yüksek kontrastlı renklerle üzerine yazabiliyor
Ama bunlar sadece benim kilit özelliklerim. iTerm, Word gibi binlerce özelliği olan şişkin bir canavar. Herkesin hepsine ihtiyacı yok ama hangi özelliklere ihtiyaç olduğu konusunda da bir uzlaşı yok
Birkaç macOS sürüm notunda da
terminaldiye aradım ama hiçbir şey bulamadım. Bu bilginin nerede yayımlandığını bilen var mı? Yoksa yayımlanmıyor mu?[1] https://developer.apple.com/documentation/macos-release-note...
[2] https://support.apple.com/en-us/120283
[3] https://support.apple.com/en-in/109035
[4] https://support.apple.com/en-us/106337
Şirket makinesine SSH yapınca mavi, ev makinesine SSH yapınca mor olmasını istiyordum. Varsayılan Terminal’de de denemiştim ama oturumun nasıl bittiğine göre kafa karıştıran bir sorun vardı; insanlar iTerm2’nin bunu çözdüğünü söyledi. En azından benim durumumda gerçekten çözdü
https://ghostty.org/ için de çok iyi şeyler duydum ama henüz deneme fırsatım olmadı
Bu arada, soruyu yanlışlıkla “alternatifler neler” diye okumuşum
Benim için yerel macOS tam ekranından farklı bir tam ekran modunu kullanabilmek bile değerli. Gerçi dünyada bunu önemseyen yaklaşık yedi kişi olabilir
iTerm’i görece az parayla geliştiren geliştiriciyle derinden empati kuruyorum. Yapay zeka entegrasyonu yüzünden zaten gereğinden fazla eleştiri aldı
Aynı zamanda şu an iTerm’i kullanmaya devam edip edemeyeceğim konusunda ciddi biçimde endişeliyim
HPC ortamlarına bağlanırken erişim yetkim sadece kısa süreli olabilir, kullanım sonrası verileri bizzat temizlemem gerekebilir ve veri sızıntısı olmayacağı beklentisi vardır. Geçen yıl boyunca kişisel veri içeren araştırma verileriyle çalışırken iTerm’in SSH entegrasyonunu kullansaydım zor durumda kalırdım. Yöneticilere log olup olmadığını ve bana ait olup olmadığını kontrol etmelerini isteyen mahcup bir e-posta göndermek, ardından da verinin sızdığını açıklamak zorunda kalabilirdim
Bazı gelişmiş özellikleri de kullanıyorum ama artık temel işlevlerin ötesini kullanmanın doğru olup olmadığını sorguluyorum. Öyleyse başka bir terminal kullanmak daha iyi olabilir. Ghostty dahil, MacOS’ta iTerm kadar yerel hissettiren bir çapraz platform terminali henüz bulamadım
Bir lastik bir kez patladı diye arabayı çöpe atmaya benziyor. Sahip olduğu avantajlar ve özellikler düşünüldüğünde iTerm hâlâ en iyi seçenek olabilir
Bir kişinin tüm sistemin ve kullandığı tüm yazılımların güvenliğini bizzat doğrulaması gerekiyorsa, o kurumda güvenlik yok demektir
Güvenlik bilgisi olan yetkin bir sistem yöneticisi, SSH ile bağlanıp oluşturulan dosyaların varsayılan olarak herkes tarafından okunabilir yetkilere sahip olmamasını kolayca ayarlayabilir. Kullanıcı dosyalarını tamamen izole eden başka kilitler de koyabilir ve
/tmp/gibi küresel olarak yazılabilir klasörleri tamamen devre dışı bırakabilirBiri güvenlik açığı olan bir yazılım kullandınız diye sizi eleştirirse, onların sisteminin neden bu kadar güvenliğe açık olduğunu sormalısınız
Birkaç yıl önce iTerm2’nin hassas arama geçmişini ayar dosyasına sızdırması sorununu bildirmiştim ve bu sorun hızlıca düzeltilmişti
Ama bugün bile herkese açık dotfiles depolarında arama geçmişini istemeden sızdıran insanlar bulmak mümkün
[1]: https://gitlab.com/gnachman/iterm2/-/issues/8491
[2]: https://github.com/search?q=NoSyncSearchHistory+path%3A*.pli...
“iTerm2’yi hiç kullanmayın” önerisini pek anlayamıyorum
Bu tür sorunlar herhangi bir projede ortaya çıkabilir; aracı değiştirmek anlamlı bir koruma sağlamaz. Hatta böyle olaylardan sonra güvenlik uygulamalarının daha da güçlendiği sık görülür. Hata yapan mühendisi kovup kovmayacağına dair eski şakada, yöneticinin “Neden kovayım? Az önce unutamayacağı bir ders aldı” diye cevap vermesine benzer
iTerm2’nin geçmişine bakınca kritik güvenlik sorunlarının sık yaşandığı izlenimi vermiyor; aynı hatayı tekrarlayacak gibi de görünmüyor. Tekrarlanırsa o zaman yeniden değerlendiririz
macOS Terminal uygulaması daha basit ve daha seyrek güncellendiği için daha düşük riskli görünebilir. Ama kapalı kaynak olduğu için denetlenemez ve bunun da kendi riski vardır. Sonuçta her araçta ödünleşimler var; seçim, ihtiyaç duyulan özelliklerle olası riskler arasındaki dengeye göre yapılmalı
Pek çok kişi bu iki inanca makul şekilde sahip. “Her projede hata olabilir” demekten çok daha nüanslı bir bakış açısı. Böyle siyah-beyaz bir yaklaşım risk değerlendirmesinde pek işe yaramaz
iTerm2 giderek fazla karmaşık ve şişkin hale geldi; güvenlik sorunları da fazla gibi görünüyor
macOS’te yeni bir terminal emülatörü bakmayalı uzun zaman oldu ama artık zamanı gelmiş gibi
GNU Screen de durmuş gibi göründüğünden artık tmux’a geçmeyi ertelediğim işi yapmalıyım
Şahsen iTerm2’nin bu ikisinden birine girdiğini düşünmüyorum
Aynı düzeyde tmux desteği sunan başka bir terminal henüz görmedim
Başka bir uygulama kullanınca günlük kullanımı iyileştirecek şekilde Terminal’de eksik olan ne var?
Zellij, Rust ile yazılmış bir terminal çoklayıcısı; göz atmaya değer. Özellikle tuş kısayollarının kolay keşfedilebilmesi çok iyi. TUI’de hayalini kurduğum şeye yakın
Bu yalnızca SSH entegrasyonu için geçerli, iTerm’de yalnızca
"ssh"çalıştırılan durum için değil mi?Normal ssh ile bağlandığım host’larda
/tmp/framer.txtdosyasını bulamadımİkinci koşulun kurumsal dağıtımlarda da çoğunlukla sağlanması muhtemel. Örneğin RHEL 9’da Python 3.9 varsayılan olarak kurulu geliyor