- iTerm2 3.5.11 adalah rilis yang dibangun pada 2 Januari 2025, dan pembaruan segera direkomendasikan karena adanya perbaikan keamanan kritis terkait integrasi SSH
- Cakupan dampaknya mencakup pengguna 3.5.6~3.5.10 yang menggunakan fitur integrasi SSH serta semua versi beta setelah 3.5.6
- Jika bug terjadi, input dan output akan dicatat ke
/tmp/framer.txtdi host jarak jauh, dan pengguna lain pada host jarak jauh yang sama dapat membaca file ini - Kondisinya adalah saat menggunakan
it2sshatau ketika Command di profil adalah"SSH"dan"SSH Integration"dipilih, serta Python 3.7 atau lebih baru tersedia di jalur pencarian default host jarak jauh - Pengguna harus meningkatkan ke 3.5.11 lalu menghapus
/tmp/framer.txtdi host jarak jauh yang terdampak
Cakupan Dampak dan Kondisi Terjadi
- iTerm2 3.5.11 adalah rilis yang mencakup perbaikan keamanan kritis dan disarankan untuk segera diperbarui
- Versi yang dapat terdampak adalah versi berikut yang menggunakan fitur integrasi SSH
- 3.5.6
- 3.5.7
- 3.5.8
- 3.5.9
- 3.5.10
- semua versi beta setelah 3.5.6
- Bug ini menyebabkan fitur integrasi SSH menulis input dan output ke
/tmp/framer.txtdi host jarak jauh- File ini mungkin dapat dibaca oleh pengguna lain di host jarak jauh tersebut
- Masalah terjadi ketika semua kondisi berikut terpenuhi
- menggunakan perintah
it2ssh - atau di
Settings > Profiles > General, menu pop-up Command disetel ke"SSH", dan"SSH Integration"dipilih di dialog pengaturan SSH- pengaturan
"Login Shell","Command","Custom Command"tidak termasuk dalam kondisi tersebut
- pengaturan
- Python 3.7 atau lebih baru terpasang di jalur pencarian default host jarak jauh
- menggunakan perintah
Pembaruan dan Verifikasi
- Pengguna harus segera meningkatkan ke iTerm2 3.5.11
- Di host jarak jauh yang terdampak, file
/tmp/framer.txtharus dihapus - Kode yang menulis file log pada integrasi SSH telah dihapus dan tidak akan dirilis lagi dalam rilis publik
- Nilai SHA-256 untuk file zip adalah sebagai berikut
655e32b4a9466104f1b0d8847e852515bc332bdf434801762e01b9625caa43e2
- Untuk memverifikasi file zip,
https://keybase.io/verifydapat digunakan
2 komentar
Saya kaget ketika mengecek, ternyata versiku adalah 3.4.3. Akhir-akhir ini saya jarang pakai terminal, jadi saya juga kurang memperhatikannya, dan karena itu update pun jadi jarang dilakukan.
Pendapat di Hacker News
Ini terlihat seperti kasus debugging dengan print() yang masuk ke produksi
https://github.com/gnachman/iTerm2/commit/63ec2bb0b95078a97a...
https://github.com/gnachman/iTerm2/blame/5db0f74bf647f6d53ea...
Commit yang mematikan mode verbose adalah commit ini, tepat sebelum seluruh log framer dihapus: https://github.com/gnachman/iTerm2/commit/014ba7ec40fc790f65...
Commit yang mengaktifkan mode VERBOSE ada di sini: https://github.com/gnachman/iTerm2/commit/5db0f74bf647f6d53e...
Kemungkinan saat implementasi atau debugging, mereka mengubahnya ke
VERBOSE=1lalu lupa mengembalikannya keVERBOSE=0sebelum commitconsole.infoDebugging dengan print itu sendiri tidak masalah dan ada waktunya untuk dipakai, tetapi sebaiknya ada pengaman agar tidak tertinggal tanpa sengaja. Ini kesalahan yang sangat mudah terjadi
Cukup serius bahwa akibat bug pada fitur
SSH integration, input dan output dicatat ke file/tmp/framer.txtdi host jarak jauh, dan file itu juga bisa dibaca oleh pengguna lain di host jarak jauh tersebutFile seperti ini mungkin juga masih tertinggal di mesin yang dulu pernah diakses lewat SSH, tetapi sekarang sudah tidak punya izin akses lagi
it2ssh, atau saat menu pop-up Command di Settings > Profiles > General disetel ke"SSH"dan"SSH Integration"dicentang."Login Shell","Command", dan"Custom Command"tidak termasukNamun jika Anda tipe orang yang memakai
sshsebagai perintah terminal default alih-alihbashatauzsh, kemungkinan besar Anda juga memakai banyak fitur tidak biasa di aplikasi lain, jadi Anda perlu memperhatikan permukaan serangan lain, bukan hanya iTermSaya sudah lama memakai iTerm2 dengan baik untuk pekerjaan dan keperluan pribadi, dan saya akan terus memakainya serta berniat berdonasi lagi seperti dulu
Saya selalu sedikit menghela napas saat melihat kalimat seperti “Saya sangat menyesali kesalahan ini dan akan mengambil langkah agar hal seperti ini tidak terjadi lagi”
Intinya adalah langkah apa yang akan diambil, tetapi saya juga tidak yakin apa yang perlu dilakukan agar hal seperti ini tidak terulang. Mungkin bisa dibuat alat otomatis yang menjalankan semua fitur, menangkap system call, lalu memastikan tidak ada file yang dibuka atau ditulis, tetapi untuk aplikasi GUI itu tampak terlalu sulit sampai-sampai sepertinya tidak akan dicoba. Dengan langkah yang lebih ringan dari itu, rasanya sulit menjamin hal ini tidak terjadi lagi
Secara realistis, tampaknya sulit bagi programmer untuk melakukan jauh lebih baik dari itu, jadi tidak adil jika semua tanggung jawab ditimpakan kepada satu orang ini
Namun menurut saya, singkatnya tulisan tidak berarti ia tidak memahami besarnya kesalahan. Meski begitu, saya berharap nantinya akan ada tulisan blog mendalam yang membahas detail lanjutan semacam ini
Tidak meminta maaf akan lebih buruk, dan tidak mengatakan akan mengambil langkah pencegahan juga akan lebih buruk. Kalau semua langkah sudah siap sekarang juga, justru itu aneh. Pertama-tama harus A) memperbaiki bug, B) merilis versi perbaikan, C) mengumumkan bug dan rilis perbaikannya, lalu D) melakukan analisis pascainsiden; jika semua ini dicampur jadi satu, prosesnya akan terlihat kacau
Mengklaim bisa mencegah semua bug atau semua penulisan file yang tidak disengaja juga aneh. Mustahil membuktikan bahwa sebuah program sama sekali tidak pernah menulis ke file
Titik awal yang baik adalah menghapus logging SSH seperti yang memang dilakukan, lalu meneliti metode otomatis untuk memverifikasi akses file. Dalam pengembangan macOS ada banyak alat yang jauh melampaui alat umum di ekosistem lain, jadi mungkin ada cara seperti dokumentasi teknis era 1990-an yang menentukan
NSArrayberisi path yang diizinkan untuk diakses, atau integrasi dtrace bawaan di Instruments. Menjalankannya di CI dan memastikan cakupan tes mungkin sudah mendekati yang terbaik yang bisa dilakukanSepertinya pokok perdebatannya adalah apakah “akan mengambil langkah agar hal seperti ini tidak terjadi lagi” dibaca sebagai “akan mengambil langkah sampai bisa menjamin 100% mutlak selamanya tidak akan pernah terjadi lagi”. Untuk orang-orang muda yang mudah terpengaruh, tulisan blog ini bagus sekali dan hampir tidak ada lagi yang bisa dilakukan lebih baik dari ini
Langkah yang bisa dilakukan adalah menjadikan kejadian ini pelajaran agar lebih berhati-hati saat masuk ke jalur tersebut
console.logtidak bisa di-merge, dan menurut saya itulah pendekatan yang akan saya ambilMencegah state yang tidak valid agar tidak mungkin ada adalah prinsip yang cukup berguna
Pada umumnya ini mungkin soal preferensi pribadi, tetapi pada 2025 apakah ada alasan yang sangat meyakinkan untuk memakai iTerm2 alih-alih Terminal bawaan macOS?
Saya sering mendapat rekomendasi, tetapi jadi berhati-hati karena khawatir dengan isu keamanan dan privasi seperti bug SSH kali ini
Satu lagi adalah jika tanpa sengaja menutup tab atau jendela, lalu dalam beberapa detik menekan ⌘z, jendelanya muncul kembali seolah-olah tidak pernah ditutup
Dan kontras warna minimum juga bagus. Jika tema warna terminal dan tema warna program yang sedang berjalan tercampur buruk hingga tidak bisa dibaca, iTerm dapat mendeteksinya dan otomatis menimpanya dengan warna berkontras lebih tinggi
Namun itu hanya fitur kunci bagi saya. iTerm adalah monster bongsor seperti Word dengan ribuan fitur. Tidak semua orang membutuhkan semuanya, tetapi juga tidak ada kesepakatan soal fitur mana yang dibutuhkan
Saya juga mencari
terminaldi beberapa catatan rilis macOS, tetapi tidak menemukan apa pun. Ada yang tahu informasi ini dipublikasikan di mana? Atau memang tidak dipublikasikan?[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
Saya ingin warnanya berubah menjadi biru saat SSH ke mesin kantor, dan ungu saat SSH ke mesin rumah. Saya juga mencoba melakukannya di terminal bawaan, tetapi ada masalah membingungkan tergantung bagaimana sesi berakhir, dan orang-orang merekomendasikan iTerm2 karena katanya menyelesaikan ini. Setidaknya dalam kasus saya, memang terselesaikan
Saya juga sering mendengar https://ghostty.org/ bagus, tetapi belum sempat mengeceknya
Sebagai tambahan, saya salah membaca pertanyaannya sebagai “apa saja alternatifnya”
Bagi saya, kemampuan memakai mode layar penuh dengan cara yang berbeda dari layar penuh native macOS saja sudah bernilai. Namun mungkin di dunia ini hanya ada sekitar tujuh orang yang menganggap hal itu penting
Saya sangat bersimpati pada pengembang yang mengembangkan iTerm dengan dana yang relatif kecil. Ia juga sudah menerima kritik lebih banyak dari yang semestinya karena integrasi AI
Pada saat yang sama, sekarang saya sangat khawatir apakah saya masih boleh terus memakai iTerm
Saat mengakses lingkungan HPC, aksesnya bisa saja hanya diberikan untuk periode singkat, data harus dibersihkan sendiri setelah digunakan, dan kita berharap tidak ada kebocoran data. Jika selama setahun terakhir saya menggunakan integrasi SSH iTerm saat menangani data riset pribadi, itu akan menjadi masalah. Saya mungkin harus mengirim email memalukan kepada admin untuk meminta mereka memeriksa apakah ada log dan apakah itu milik saya, lalu setelahnya harus mengumumkan bahwa data telah bocor
Saya memang memakai beberapa fitur lanjutan, tetapi sekarang jadi bertanya-tanya apakah aman memakai apa pun di luar fitur dasar. Kalau begitu, rasanya saya bisa saja memakai terminal lain. Saya belum menemukan terminal lintas platform yang terasa senative iTerm di MacOS, termasuk Ghostty
Ini mirip seperti membuang mobil hanya karena ban pernah bocor sekali. Dengan mempertimbangkan keunggulan dan fiturnya, iTerm mungkin tetap menjadi pilihan terbaik
Jika setiap individu harus memverifikasi sendiri keamanan seluruh sistem dan semua software yang digunakan, berarti organisasi itu tidak memiliki keamanan
Administrator sistem yang kompeten dan memahami keamanan dapat dengan mudah mengatur agar file yang dibuat melalui SSH tidak secara default memiliki izin yang bisa dibaca semua orang. Mereka juga bisa menambahkan mekanisme penguncian lain untuk mengisolasi file pengguna sepenuhnya, dan bahkan menonaktifkan folder yang bisa ditulis secara global seperti
/tmp/Jika ada yang menyalahkan seseorang karena memakai software yang rentan secara keamanan, seharusnya tanyakan balik mengapa sistem mereka begitu rentan secara keamanan
Beberapa tahun lalu saya melaporkan masalah iTerm2 yang membocorkan riwayat pencarian sensitif ke file konfigurasi, dan masalah itu cepat diperbaiki
Namun sampai sekarang masih bisa ditemukan orang-orang yang tanpa sengaja membocorkan riwayat pencarian di repositori dotfiles publik
[1]: https://gitlab.com/gnachman/iterm2/-/issues/8491
[2]: https://github.com/search?q=NoSyncSearchHistory+path%3A*.pli...
Saran “jangan pakai iTerm2 saja” agak sulit saya pahami
Masalah seperti ini bisa terjadi di proyek mana pun, dan mengganti alat tidak memberi perlindungan yang berarti. Justru setelah insiden seperti ini, praktik keamanan sering kali menjadi lebih kuat. Mirip lelucon lama tentang apakah akan memecat engineer yang membuat kesalahan, lalu manajernya menjawab, “Kenapa dipecat? Dia baru saja mendapat pelajaran yang tak akan terlupakan”
Melihat rekam jejak iTerm2, sepertinya tidak sering ada isu keamanan yang fatal, dan kecil kemungkinan mereka mengulangi kesalahan yang sama. Kalau itu berulang, barulah dievaluasi lagi
Aplikasi Terminal macOS mungkin terlihat berisiko lebih rendah karena lebih sederhana dan lebih jarang diperbarui. Namun karena closed source, ia tidak bisa diaudit, dan itu punya risikonya sendiri. Pada akhirnya semua alat punya trade-off, dan pilihan harus menyeimbangkan fitur yang dibutuhkan dengan potensi risikonya
Banyak orang menganggap kedua hal ini sebagai keyakinan yang masuk akal. Itu pandangan yang jauh lebih bernuansa daripada sekadar “semua proyek bisa punya bug”. Sudut pandang hitam-putih seperti itu tidak banyak membantu dalam penilaian risiko
iTerm2 terasa makin terlalu kompleks dan membengkak, dan isu keamanannya juga tampak terlalu banyak
Sudah lama saya tidak mencari emulator terminal baru di macOS, tapi sepertinya sekarang waktunya
GNU Screen juga tampaknya stagnan, jadi mungkin sudah saatnya melakukan hal yang selama ini tertunda: beralih ke tmux
Secara pribadi, saya tidak merasa iTerm2 termasuk salah satu dari keduanya
Saya belum melihat terminal lain yang menyediakan dukungan tmux setara
Apa yang kurang dari Terminal sehingga memakai aplikasi lain akan memperbaiki penggunaan sehari-hari?
Zellij adalah terminal multiplexer yang dibuat dengan Rust dan layak dilihat. Terutama karena key binding-nya mudah ditemukan, itu sangat bagus. Bentuknya mendekati TUI yang selama ini saya bayangkan
Ini hanya berlaku untuk integrasi SSH, bukan saat sekadar menjalankan
"ssh"di iTerm, kan?Di host yang saya akses dengan ssh biasa, saya tidak menemukan file
/tmp/framer.txtKondisi kedua kemungkinan besar juga terpenuhi di distro enterprise. Misalnya, RHEL 9 memasang Python 3.9 secara default