用個小技巧,趁你不備,rm -rf你的電腦
大家回想一下,你是不是遇到過這種情況:有時候,你訪問一個網(wǎng)站,它突然給你下載了一個東西。特別是當你用 Chrome 的時候,瀏覽器直接就自動給你下載到“下載”文件夾里面去了,如下圖所示:
而大多數(shù)時候,你只是把 Chrome 的這個提示關掉了,并沒有去主動刪除它下載的這個文件。于是這個自動下載的文件就留在了你的“下載”文件夾里面。
你想,我只要不去執(zhí)行它,就不會有什么問題。但事實真的是這樣嗎?我們看看下面這張圖。
- python3 -m pip install requests
簡單又熟悉的命令,我們都執(zhí)行了無數(shù)次。今天卻翻車了。電腦被格式化了。
問題出在哪里?問題出在這里:
當我們執(zhí)行python3 -m pip install xxx的時候,Python 會在你當前運行這個命令的文件夾下面尋找有沒有一個叫做 pip.py 的文件。如果有這個文件的話,那么你執(zhí)行python3 -m pip install xxx相當于執(zhí)行python3 pip.py install xxx。如果這個pip.py文件里面有惡意代碼,那么你就翻車了。
惡意用戶如果想攻擊 Python 開發(fā)者,就可以自己做一個 Python 相關的網(wǎng)站,當用戶訪問網(wǎng)站的時候,悄悄下載一個 pip.py 到你的電腦上。如果有人碰巧在下載文件夾里面執(zhí)行了 python3 -m pip install xxx想安裝某個庫,那么此時就會觸發(fā)惡意攻擊代碼,從而讓你中招。
特別是遇到不會科學上網(wǎng)的用戶,他們直接使用 pip 常常會出現(xiàn)網(wǎng)絡超時的問題,于是惡意網(wǎng)站“友好”地給他們提供.whl包的官方下載地址。用戶一看,是官方地址,放松了警惕。這樣一來,用戶用瀏覽器從官網(wǎng)下載這個包時,正好也是下載到了“下載”文件夾里面。于是很多用戶順理成章地,直接
- cd ~/Downloads
- python3 -m pip install xxx.whl
于是悲劇就發(fā)生了。