Jakie środki ostrożności należy podjąć w związku z plikami .deb znajdującymi się w Internecie?

29

Pewnego dnia przeglądałem sieć i natknąłem się na kilka miejsc, w których chciałem pobrać .debpliki - a ponieważ są one instalowane przez roota (i jako takie mają „moce” i możliwości roota), nie byłem pewny tego.

jrg
źródło

Odpowiedzi:

32

Rzeczy do rozważenia:

  • Jak dobrze znana jest strona? Na przykład, czy był to przypadkowy blog pokryty reklamami, czy był to przypadkowy użytkownik na jakimś forum, czy też była to dobrze znana, szanowana strona?

  • Co twierdzi, że instaluje? Na przykład, czy twierdzi, że instaluje jądro lub zestaw ikon, ale czy ma tylko 1 MB?

  • Jak „ważne” jest to, że masz w tym zawartość .deb?

Sposoby bezpiecznego testowania rzeczy:

Używam arkose( jest w standardowych repozytoriach Zainstaluj Arkose ) piaskownicy z moimi debsami (i innymi rzeczami) - używam go mniej więcej tak:

sudo arkose -n -c "cd $PWD; $SHELL"

Co to ma dać mi „piaskownicy” (inaczej znany jako „Yay mogę zepsuć!”) Z dostępem kopiowanie przy zapisie do wszystkiego na moim komputerze, w tym moim katalogu domowym - więc jeśli paskudny paskudny .debrobi sudo rm -rf /*, I DON „UTRACIE DANYCH!

Kolejną rzeczą, która nie jest wystarczająco zestresowana, jest tworzenie kopii zapasowych . Są bardzo pomocne i mamy wiele pytań na ten temat.

Krótko mówiąc, upewnij się, że o tym pomyślisz, a nie tylko pobieraj losowe pliki deb i instaluj je.

jrg
źródło
2
Otwórz za .debpomocą rolki pliku, aby zobaczyć, co jest w środku. Chociaż muszę powiedzieć, że pobrałem losowy deb od losowego użytkownika w losowym wątku na forach Ubuntu, aby naprawić moje problemy z drukarką, zadziałało.
Uri Herrera
20

Jeśli pobierasz pakiet z niezaufanych lub wątpliwych źródeł, bądź paranoikiem. Na popularnych forach takich jak ubuntuforums.org, jeśli użytkownik opublikuje swój pierwszy post zawierający tylko krótki tekst w stylu „zainstaluj to, działa dla mnie!”, A następnie link, bądź ostrożny z tym linkiem i / lub instrukcjami.

Jeśli to możliwe, nie używaj pakietów binarnych, zwłaszcza z niezaufanych źródeł. Uzyskaj źródło (w przypadku oficjalnych pakietów Ubuntu można to zrobić apt-get source package-name) i spójrz na to.

Jeśli pakiet jest mały, warto go przeanalizować. Wolę korzystać z terminala za to, bo wtedy mają szybki dostęp do innych narzędzi wiersza polecenia potężny jak ls, find, file, less, vim, grep, sed,dpkg i wiele innych. Skorzystaj z uzupełniania tabulatorów (tj. Uderzania w Tabcelu wykonania poleceń i nazw plików), to naprawdę oszczędza czas!

Aby pobrać plik .deb, możesz użyć przeglądarki, ale skopiowanie łącza, a następnie użycie wgetjest szybsze, ponieważ możesz już z nim eksperymentować.

$ mkdir /tmp/foo && cd /tmp/foo
$ wget http://nl.archive.ubuntu.com/ubuntu/pool/main/n/nvidia-common/nvidia-common_0.2.35_amd64.deb

Następnie nadszedł czas, aby sprawdzić sam plik. less(przez lesspipe) może zapewnić szybki przegląd zawartości pliku. Klawisze strzałek, strona w górę / w dół, strona główna / koniec mogą być przydatne do nawigacji, Qzamykanie programu.

$ less nvidia-common_0.2.35_amd64.deb
nvidia-common_0.2.35_amd64.deb:
 new debian package, version 2.0.
 size 10802 bytes: control archive= 1877 bytes.
     197 bytes,    11 lines   *  config               #!/bin/sh
     703 bytes,    16 lines      control              
     741 bytes,    10 lines      md5sums              
     163 bytes,     9 lines   *  postinst             #!/bin/sh
     206 bytes,     8 lines   *  postrm               #!/bin/sh
     827 bytes,    38 lines   *  preinst              #!/bin/sh
     263 bytes,    14 lines   *  prerm                #!/bin/sh
     365 bytes,    12 lines      templates            
 Package: nvidia-common
 Version: 1:0.2.35
 Architecture: amd64
 Maintainer: Ubuntu Developers <[email protected]>
 Installed-Size: 156
 Pre-Depends: dpkg (>= 1.15.7.2)
 Depends: python2.7 | python2.6, python (>= 2.7.1-0ubuntu2), python (<< 2.8), debconf (>= 0.5.00) | debconf-2.0, pciutils, python-apt
 Conflicts: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
 Replaces: nvidia-180-modaliases, nvidia-185-modaliases, nvidia-current-modaliases
 Section: admin
 Priority: optional
 Description: Find obsolete NVIDIA drivers
  This package will find obsolete NVIDIA drivers in use,
  detect the hardware and recommend the most appropriate
  driver.
 Python-Version: 2.6, 2.7

*** Contents:
drwxr-xr-x root/root         0 2011-09-07 11:06 ./
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/doc/
drwxr-xr-x root/root         0 2011-09-07 11:06 ./usr/share/doc/nvidia-common/
-rw-r--r-- root/root      1174 2011-09-07 11:07 ./usr/share/doc/nvidia-common/changelog.gz
-rw-r--r-- root/root       466 2011-06-24 14:45 ./usr/share/doc/nvidia-common/copyright
...

Następnie uzyskasz przegląd zależności pakietu i jakie pliki może zawierać. Czas wyodrębnić pliki i przeanalizować zawartość za pomocą dpkg-deb. Pierwsze polecenie wyodrębnia drzewo plików w nowo utworzonym katalogu fs, drugie polecenie wyodrębnia je, DEBIANponieważ nie określono innego obiektu docelowego:

$ dpkg-deb -x nvidia-common_0.2.35_amd64.deb fs
$ dpkg-deb -e nvidia-common_0.2.35_amd64.deb

Użyjemy lessponownie przeanalizować zawartość skryptów instalacyjnych (czyli pliki, które będą używane / uruchamianych podczas instalacji (i usuwania). prerm, preinst, postrm, postinstSą skrypty uruchamiane przed / po usunięciu / instalacji, które są najważniejsze pliki do analizy Do przełączania się między plikami używaj :ni :p. Naciskając przycisk =, otrzymujesz aktualną nazwę pliku i numer linii oraz liczbę plików znajdujących się na liście.

$ less DEBIAN/*

Jeśli skrypty pakietu wyglądają rozsądnie, czas przeanalizować zainstalowaną zawartość (użyj uzupełniania tabulatorami). W przypadku skryptów powłoki i skryptów interpretowanych (takich jak Python) analiza jest łatwiejsza (zakładając, że znasz język).

$ less fs/usr/bin/nvidia-detector    # fs<TAB><TAB>/usr/ <TAB><TAB>bin ...
$ less fs/usr/lib/nvidia/pre-install
$ ls -la fs/usr/lib     # quickly check the directory contents, my memory is weak
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 .
drwxr-xr-x 5 peter peter 100 2011-09-07 11:06 ..
drwxr-xr-x 2 peter peter  60 2011-09-07 11:06 nvidia
drwxr-xr-x 3 peter peter  60 2011-09-07 11:06 python2.6
drwxr-xr-x 3 peter peter  60 2011-09-07 11:06 python2.7
$ # I conclude: python2.6 is not a symlink to python2.7
$ less fs/usr/lib/python2.7/dist-packages/NvidiaDetector/*
press 'v' to open an editor (e.g. nano, vim) to get syntax highlighting if preferable

Zwróć szczególną uwagę na pliki konfiguracyjne, szczególnie jeśli używają katalogów takich jak /etc/init(dla skryptów startowych) lub /etc/modprobe.d(opcje ładowania modułów jądra).

W przypadku plików binarnych lddmoże dać wyobrażenie o tym, do czego można użyć programu. Poniższy program wygląda jak program graficzny korzystający z OpenGL.

$ ldd /usr/bin/glxgears
    linux-vdso.so.1 =>  (0x00007fff7d3ff000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007fa2ead11000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa2eaa8d000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa2ea754000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa2ea3b5000)
...

Po upewnieniu się, że opakowanie wygląda prawidłowa, można przejść na zainstalowanie go w VirtualBox bootowanie z CD live jak i pracy ps aux, top, strace -f -o logfile.txt programnamedo dalszej analizy.

Lekensteyn
źródło