Ini memiliki pengaruh yang sangat besar karena kelemahan yang telah lama diketahui dalam Win32 API.
Program muncul di Win32 melalui CreateProcess()panggilan sistem. Ini dapat digunakan dalam beberapa cara. Orang-orang yang berasal dari latar belakang Unix, Linux, atau OS / 2 biasanya akan menganggapnya sebagai mengambil dua argumen terpisah untuk program (file gambar) untuk muncul dan perintah ekor untuk lolos ke proses baru, karena nama file dan argumen vektor / perintah ekor. adalah dua hal terpisah dalam API sistem operasi tersebut. Tetapi pada kenyataannya panggilan sistem dapat dipanggil dalam bentuk alternatif dengan nama program dan argumen yang dihancurkan bersama dalam satu string besar. CreateProcess()akan mencoba untuk memisahkan nama file program dari ekor perintah.
Masalahnya adalah ia melakukan ini dengan secara progresif membelah string menjadi dua pada setiap karakter spasi berturut-turut, sampai bagian kiri cocok dengan file atau direktori. Banyak program Win32 akan mencoba memberikan string seperti C:\Program Files\Contoso\TakeOver.exe StackExchange.comke pemanggilan sistem. Ini akan menjalankan program yang tepat - C:\Program Files\Contoso\TakeOver.exe- dengan ekor perintah yang benar - StackExchange.com- sampai pada titik di mana beberapa orang yang berbahaya datang dan membuat C:\Programfile seperti yang Anda lakukan.
Pada saat itu, panggilan sistem akhirnya mencoba menjalankan file gambar program C:\Programdengan ekor perintah Files\Contoso\TakeOver.exe StackExchange.com. Surga membantu Anda jika C:\Programsebenarnya gambar program yang dapat dieksekusi.
Ini adalah kelemahan umum, dan itu berlaku untuk setiap nama file program yang berisi spasi dalam kombinasi dengan program apa pun yang menggunakan One Big String untuk menelurkan program lain. Tetapi kasus paling umum yang terkena dampak ini adalah semua program yang hidup di bawah C:\Program Files\dan sejumlah besar program Win32 yang menggunakan pendekatan One Big String.
Sudah terlambat untuk mengubah API Win32. Sudah terlambat satu dekade yang lalu. Dan Microsoft tidak dapat mengubah semua program yang ditulis oleh orang lain yang meneruskan satu string besar, bukan dua CreateProcess(). Jadi Microsoft membuat Windows memeriksa, pada login pengguna, untuk keberadaan C:\Programdan menampilkan peringatan yang Anda lihat.
Dan, seperti yang Anda lihat, ada peringatan "Keamanan" dalam dokumen Win32 Microsoft yang memberitahu pengembang untuk tidak menulis program menggunakan pendekatan One Big String, yang telah ada di sana selama beberapa tahun sekarang.
Bacaan lebih lanjut