Kısa cevap: Pek çok durumda, Vim bu tür saldırılara karşı savunmasızdır (metni Metin modunda yapıştırırken).
Kavramın ispatı
Bağlantılı makaleyi bir başlangıç noktası olarak kullanarak, metnin orta kısmını gizlemek için HTML yayılma öğelerini ve CSS'yi kullanarak, yalnızca ls -la
geçici görüntüleyicinin görebilmesi için hızlı bir şekilde aşağıdaki kodla bir web sayfası oluşturabildim . kaynak). Not: ^[
Escape karakteri ve ^M
satır başı karakteridir. Yığın Değişimi, kullanıcı girişini temizler ve CSS kullanarak içeriğin gizlenmesine karşı korur, bu nedenle konseptin kanıtını yükledim .
ls ^[:echom "This could be a silent command."^Mi -la
Ekleme modundaysanız ve bu metni Vim terminaline yapıştırdıysanız (bazı niteleyiciler ile aşağıya bakın) göreceksiniz, ls -la
ancak :messages
komutu çalıştırırsanız , gizli Vim komutunun sonuçlarını görebilirsiniz.
Savunma
O Normal modda kalmasını sağlamak için kullanarak yapıştırmak için en iyisi bu saldırıya karşı savunmak "*p
veya "+p
. Normal modunda, p bir kasadan Utting metin, (gizli kısmı dahil) tam metin yapıştırılır. Bu aynı :set paste
ayarlanmış (hatta ) ayar modunda olmaz .
Parantezli macun modu
Vim'in son sürümleri, bu tür kopyala yapıştır saldırısını azaltan köşeli ayraç modunu destekler . Sato Katsura, “Braketli hamur desteği Vim 8.0.210'da ortaya çıktığını ve en son 8.0.303 versiyonunda (2 Şubat 2017'de yayımlandı) düzeltildiğini” açıkladı.
Not: Anladığım kadarıyla, parantez macun modu desteği ile Vim sürümleri gerekmektedir kullanarak yapıştırırken sizi korumak Ctrl- Shift- V(çoğu GNU / Linux masaüstü ortamları), Ctrl- V(MS Windows) Command- V(Mac OS X), Shift- Insertya da bir fare Orta tıklama.
Test yapmak
Daha sonra Lubuntu 16.04 masaüstü bilgisayardan bazı testler yaptım ancak sonuçlarım kafa karıştırıcı ve sonuçsuzdu. Bunun sebebini her zaman GNU ekranını kullandığımdan farkettim, ancak ekranın , braketli yapıştırma modunu etkinleştirmek / devre dışı bırakmak için kullanılan kaçış sırasını filtrelediği ortaya çıktı (bir yama var, ancak bir zamanda gönderildiği gibi göründü. proje aktif olarak sürdürülmedi). Testlerimde, Vim veya terminal emülatörünün braketli pasta modunu destekleyip desteklemediğinden bağımsız olarak, Vim çalışırken GNU ekranı üzerinden çalışırken konseptin kanıtı her zaman çalışır.
Daha fazla test yapmak yararlı olacaktır, ancak şu ana kadar, terminal emülatörü tarafından braketli yapıştırma modu desteğinin, Kanıt Kanıtlarımı engellediğini - GNU ekranı ilgili kaçış dizilerini engellemediği sürece. Bununla birlikte, nneonneo kullanıcısı, parantez içindeki macun modundan çıkmak için kaçış dizilerinin dikkatli bir şekilde hazırlanabileceğini bildiriyor .
Vim'in güncel bir sürümüyle bile, Kullanıcı Bilgilendirme *
( Ctrl- R*) yazarak Kayıt modundayken kullanıcı tarafından yapıştırıldığında, Proof of Concept'in her zaman işe yaradığını unutmayın . Bu aynı zamanda girilen ve yapıştırılan giriş arasında ayrım yapabilen GVim için de geçerlidir. Bu durumda Vim, kayıt içeriğinin içeriğine güvenmesini kullanıcıya bırakmaktadır. Bu nedenle, asla güvenilmeyen bir kaynaktan yapıştırırken bu yöntemi kullanmayın (sık sık yaptığım bir şey - ama şimdi kendimi değil, kendimi eğitmeye başladım).
İlgili Bağlantılar
Sonuç
Metin yapıştırırken Normal modunu kullanın ( +
veya *
kayıt defterinden).
… Veya Emacs kullanın. İyi bir işletim sistemi olduğunu duydum. :)