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