Menu
O mnie Kontakt

Kacper Szurek w swoim najnowszym filmie na YouTube porusza niezwykle ważny temat związany z bezpieczeństwem programowania oraz ryzykiem, jakie niesie ze sobą zaufanie do nieznanego kodu. W filmie przedstawia sytuację, w której otwieramy katalog na naszym dysku, a w nim plik 'sekret.txt', który zawiera wrażliwe informacje. Gdy otwieramy folder w edytorze Visual Studio Code, jesteśmy pytani o zaufanie do jego autorów. Kacper wskazuje, że wielu użytkowników nie zdaje sobie sprawy, jakie konsekwencje niesie ze sobą udzielenie zgody na zaufanie do tego folderu. Rzeczywiście, złośliwy kod może umożliwić atakującym dostęp do danych, które powinny pozostać poufne.

W filmie Kacper symuluje atak, pokazując, jak po kliknięciu na przycisk zaufania, zawartość pliku 'sekret.txt' zostaje natychmiast wysłana do złośliwego serwera kontrolowanego przez przestępców. Ponadto, wyjaśnia, że przyczyną tego automatycznego działania jest plik 'tasks.json', który przypisuje różne zadania do otwieranych folderów. W nim zawarte są niebezpieczne komendy, które mogą być wykonane bez świadomej interakcji użytkownika, co stawia pod znakiem zapytania nasze poczucie bezpieczeństwa podczas korzystania z takich narzędzi jak Visual Studio Code.

Kacper zwraca również uwagę na fakt, że poprzez niewłaściwe ustawienia w pliku 'tasks.json', potencjalni atakujący mogą ukryć działania złośliwego kodu. Dzięki parametrowi 'reveal' ustawionemu na 'never', użytkownik nigdy nie zobaczy nowego okna terminala, które mogłoby ostrzec go przed niebezpiecznymi komendami. To pokazuje, jak łatwo można paść ofiarą cyberataków, nawet gdy mamy wrażenie, że działamy w bezpiecznym środowisku.

Warto także zaznaczyć, że Kacper planuje uruchomić sprzedaż swojego pierwszego kursu dotyczącego bezpieczeństwa programistycznego. Kurs 'Bezpieczny programista' ma być dostępny nie tylko dla programistów, ale również testerów i każdego, kto pragnie poznać podstawy bezpieczeństwa aplikacji webowych. Z przebogaty materiału składającego się z 17 godzin nagrań oraz ponad 100 praktycznych ćwiczeń, Kacper jest pewny, że pomoże wściągnąć uczestników w świat bezpiecznego kodowania.

Na zakończenie Kacper przypomina, że nawet prosta interakcja z nowym folderem może prowadzić do tragedii, a brak ostrożności w obliczu nowego kodu jest ogromnym błędem. Na moment pisania tego artykułu film Kacpra Szurka osiągnął 16061 wyświetleń oraz 778 polubień, co pokazuje, że temat ten zyskuje coraz większą uwagę wśród społeczności zainteresowanej bezpieczeństwem IT. Warto podążać za jego kanałem, aby być na bieżąco z najlepszymi praktykami w dziedzinie bezpieczeństwa w programowaniu.

Toggle timeline summary

  • 00:00 Wprowadzenie do koncepcji ukrytego folderu na dysku.
  • 00:14 Wyjaśnienie konsekwencji nieautoryzowanego dostępu do twoich plików.
  • 00:29 Pobieranie nieznanego kodu z internetu.
  • 00:44 Omówienie komunikatu Visual Studio Code o zaufaniu autorom folderów.
  • 01:12 Demonstrowanie, jak dane mogą być wyciekane z tajnego pliku.
  • 01:42 Dyskusja na temat potencjalnych poleceń używanych przez napastników.
  • 01:56 Wprowadzenie do nadchodzącego kursu bezpieczeństwa.
  • 02:52 Podkreślenie roli tasks.json w wykonywaniu poleceń.
  • 04:10 Zrozumienie, jak polecenia są automatycznie wykonywane.
  • 04:45 Niebezpieczeństwo wykorzystywania prostych działań użytkownika.
  • 05:48 Manipulowanie sekretnego pliku w celu demonstrowania kradzieży danych.
  • 06:35 Potencjalne ryzyka związane z przeciąganiem i upuszczaniem kodu w Visual Studio Code.
  • 07:05 Instrukcje dotyczące zarządzania ustawieniami zaufania do środowiska pracy.
  • 07:11 Ostatnie przemyślenia na temat znaczenia zrozumienia zaufania do folderów.

Transcription

Na początku wyobraźmy sobie, że na twoim dysku otwartym znajduje się katalog sekret, a w nim plik sekret.txt. Tutaj znajdują się jakieś tajne dane, które nie chcemy, aby trafiły w niepożądane ręce. Jeżeli ktoś będzie w stanie poznać zawartość tego pliku, to oznacza to, że raczej na 100% jest również w stanie poznać zawartość dowolnego pliku czy folderu na naszym komputerze. Teraz pobieramy jakiś kod z internetu. Nie wiemy, kto jest jego twórcą, ale interesuje nas, jak wygląda ten kod. Przeciągamy więc pobrany folder do Visual Studio Code, aby go otworzyć. I co? Wtedy program pyta nas, czy ufamy autorom tego folderu. I dużo osób nie rozumie, dlaczego Visual Studio Code zadaje właśnie takie pytanie. Czy ufamy autorom danych plików? Spróbuję ci wytłumaczyć, dlaczego to pytanie jest istotne. Po prawej stronie mam tutaj otwarty kanał Discorda. Symulujemy, że jest to kanał należący do przestępców, którzy chcą ukraść zawartość naszego tajnego pliku. Zaraz zobaczysz, że gdy tylko wyrażę zgodę i kliknę w niebieski przycisk, to automatycznie pojawi się tutaj kolejna wiadomość i w jej treści podanie zostana zawartość naszego tajnego pliku. Sprawdźmy, jak to wygląda. Klikam w niebieski guzik i co? I automatycznie została wysłana zawartość tego pliku do serwera kontrolowanego przez atakujący. Równocześnie możesz tutaj zauważyć, że otworzyło mi się nowe okno terminala. Tutaj znajduje się komenda, która została zdefiniowana wcześniej przez przestępców. To właśnie ta komenda jest odpowiedzialna za kradzież zawartości pliku secret.txt i wysłania jej na ten konkretny kanał na Discordzie. Skoro oglądasz ten materiał, to pewno interesujesz się bezpieczeństwem. 18 września rozpoczynam sprzedaż mojego pierwszego technicznego kursu. Bezpieczny programista. To szkolenie nie tylko dla programistów, ale również dla testerów o programowanie i wszystkich innych osób, które chcą poznać podstawy bezpieczeństwa aplikacji webowych. Zatem niezależnie, czy jesteś programistą, testerem, czy może po prostu chcesz się przewranżowić, to kurs dla ciebie. 17 godzin nagrań, 170 lekcji i ponad 100 ćwiczeń praktycznych, które pozwolą ci wejść w świat bezpieczeństwa. Wszystko oczywiście tłumaczone prostym i zrozumiałym językiem. Zapisz się więc na listę oczekujących, aby otrzymać powiadomienie o starcie sprzedaży. Link znajdziesz w opisie tego filmu. Do zobaczenia. Ale jak to możliwe, że to wszystko stało się automatycznie? Przecież ja kliknąłem tylko, że ufam autorom tego folderu, a nie, że chcę automatycznie uruchamiać jakieś komenty. Wszystko to z powodu specjalnego pliku. Visual Studio Code wspiera katalog, który nazywa się .vscode. W tym katalogu może się znajdować plik tasks.json. W tym pliku definiujemy zadania, które mogą zostać wykonane, kiedy tylko użytkownik otworzy dany projekt, czyli otworzy dany folder. Tutaj definiujemy nazwę tego konkretnego zadania. W naszym wypadku jest to buildproject, aby zmylić programistę, że jest to jakieś istotne zadanie. I te zadania możemy też uruchomić ręcznie. Wystarczy na klawiaturze wcisnąć kombinację ctrl plus shift plus p i wpisać w tym oknie tekst run task. Następnie z listy wybieramy zadanie, które zostało wcześniej zdefiniowane w tym pliku. W naszym wypadku jest to po prostu buildproject. I zauważ, kiedy wybrałem to nasze zadanie po raz kolejny, została wykonana komenda, która jest zdefiniowana w pliku tasks.json. Jeszcze gdy przyjdziemy teraz do serwera kontrolowanego przez atakujący, widać tutaj ponownie, że jeszcze raz została wysłana zawartość tego pliku. Ponieważ zawartość tego pliku nie zmieniła się, mamy dwie takie same wiadomości. Ale jak to się stało, że ta komenda została uruchomiona automatycznie? To dlatego, że w tym zadaniu zdefiniowaliśmy dodatkowy parametr run on ustawiony na wartość folder open. Jak widzisz, kiedy najadę na niego myszką, to Visual Studio Code automatycznie podpowiada mi, co to znaczy. Tak możemy dowiedzieć się, że kiedy zadanie ma ustawioną taką wartość, zostanie uruchomione automatycznie. Kiedy tylko zostanie otwarty folder z danym zadaniem. To dlatego, kiedy tylko kliknęliśmy niebieski guzik, to ta komenda została wykonana automatycznie bez naszej dodatkowej zgody. Możesz teraz pomyśleć, ok, ale ja się na to nie nabiorę, ponieważ kiedy tylko to zadanie było wykonywane, to od razu zauważyłaś, że otworzyło się nowe okno terminala. Na pewno byś je przerwała, przerwał wykonywanie tej złośliwej komendy. Niestety nie mam dla ciebie dobrych informacji, ponieważ w tym pliku tasks.json możemy jeszcze zdefiniować dodatkowe parametry i jednym z nich jest reveal ustawione na wartość never. Jak można wyczytać z opisu, kiedy ustawimy tą wartość na never, to wtedy nie zostanie otworzone nowe okno terminala. W ten sposób potencjalny atakujący może ukryć wykonywanie komendy, która jest wykonywana właśnie podczas otwarcia edytora. Zapiszmy sobie to zadanie i wyłączmy teraz Visual Studio Code. Teraz zmienimy jeszcze zawartość naszego tajnego pliku, np. wpisując tutaj same jedynki, aby pokazać Ci, że rzeczywiście zawartość tego pliku jest wysyłana do serwera kontrolowanego przez atakujących. Otwieram teraz jeszcze raz Visual Studio Code, no i wtedy program automatycznie otworzy mi wcześniej otwarty projekt. Zauważ, że kiedy tylko otworzę Visual Studio Code, to automatycznie powinna się tu pojawić nowa wiadomość wysłana przez bota z zawartością naszego tajnego pliku. Uruchamiam więc Visual Studio Code i co się dzieje? Praktycznie od razu pojawia mi się tutaj zawartość naszego tajnego pliku. Zauważ, że tym razem w oknie terminala nie ma jakiejś zawartości, która mogłaby wzbudzić naszą czujność. To dość przerażające, bo może się okazać, że tylko przeciągając jakiś folder czy kawałek kodu do Visual Studio Code i wciskając niebieski guzik, ktoś może np. zarazić nasz komputer złośliwym oprogramowaniem lub wykraść jakieś nasze tajne pliki. Co ciekawe, można też przejść i sprawdzić, jakim folderom już w przeszłości zaufaliśmy. Ponownie wciskam kombinację klawiszy CTRL plus SHIFT plus P, tym razem wybieram opcję Manage Workspace Trust i tutaj otwiera mi się okno i na samym dole tej podstrony widzimy, jakie foldery już są przez nas zaufane. Więc jeżeli ponownie otworzysz dany folder w Visual Studio Code, to wtedy aplikacja już nie zapyta cię, czy ma zaufać zawartości tego folderu. Od razu wykona jakiś kod, jeżeli tylko jest on zdefiniowany w pliku tasks.json. Tutaj też możemy usunąć jakiś folder z zaufanych, klikając w guzik X po prawej stronie. Warto więc sprawdzić, jakim folderom nadaliśmy takie uprawnienia.