Jak mogę sprawdzić, czy duża paczka w repozytorium git jest bezpieczna?

9

Patrzę konkretnie na hełm emacsa , który ma następujące właściwości:

  • ma tysiące zobowiązań
  • jest w dużej mierze obsługiwany przez jednego użytkownika
  • opiekun nie ma innych profili (media społecznościowe itp.), które udało mi się znaleźć w kilku wyszukiwaniach
  • jest aktywnie utrzymywany (dzisiaj)

Ponieważ mam zamiar zainstalować na komputerze dowolny kod, który będzie używany w moim edytorze tekstów, chciałem sprawdzić, czy został on poddany procesowi recenzji. Chciałbym powiedzieć „cóż, jest to oprogramowanie typu open source”, ale naprawdę nie jestem w stanie samodzielnie kontrolować całego kodu. Chciałbym założyć, że inni członkowie społeczności go sprawdzili, ale jeden z nich jest prawdopodobnie fałszywy, a dwa z nich są aktualne. Czy brakuje mi innych strategii?

Dla przypomnienia, wektor jest prosty: „open source” nie ma aż tak wielkiego znaczenia, jeśli współpracownik pracuje na koncie typu out-out lub jeśli nie ma procesu recenzji.

djechlin
źródło
6
Weryfikuj ” to duże słowo. W zwykłym znaczeniu tego słowa myślę, że odpowiedź brzmi: „Nie masz (nie możesz)”. Możesz śledzić działania związane z programowaniem biblioteki i sprawdzać podpisy cyfrowe itp., Ale wierzę, że nic nie jest pewne.
Drew
3
Dobre pytanie. FWIW, kod dostarczany z Emacsem jest sprawdzany (za pośrednictwem listy mailingowej emacs-diffs), ale jeśli ktoś przyczyni się do dodania luki w zabezpieczeniach, jestem pewien, że byłby w stanie to zrobić bez zauważenia. Oczywiście zdziwiłbym się, gdyby w Emacsie i tak nie było już wielu dużych dziur w zabezpieczeniach, więc nie jestem pewien, na ile to może być problem. Myślę więc, że aby uzyskać bardziej pewną odpowiedź, należy skupić się na konkretnych prostych zagrożeniach (np. Powinno być dość łatwo sprawdzić, czy kod wykonuje jakiś rodzaj ukrytego nadzoru).
Stefan
2
Opiekun
Tom
1
@Stefan, myślałem tylko o kontroli na miejscu. Z mojego punktu widzenia mapatomsmożna go umieścić w grupie „niebezpiecznej” razem z start-process, evali funcall. Oczywiście byłyby fałszywe alarmy, ale jeśli pakiet nie korzysta z żadnej z tych funkcji, można go z dużą pewnością oznaczyć jako nieszkodliwy.
abo-abo
1
Trzeba dodać nowe make-process, a także call-process, dbus-<foo>, make-network-stream, a następnie vc-do-command, vc-git-command.... A jeśli umieścisz evala funcallw kategorii „niebezpieczne”, a następnie większość / wszystkie pakiety są niebezpieczne.
Stefan

Odpowiedzi:

7

Krótka odpowiedź brzmi: jeśli nie przeczytasz kodu samodzielnie, bierzesz dużo zaufania. Powiedziawszy, że ufanie projektowi pochodzącemu z wcześniejszego SCM jest nieco bezpieczniejsze niż projekt, który został pobrany na przykład bezpośrednio z Wiki Emacs . Jednak zasadniczo ufasz autorowi pakietu, że nie obrócisz się w zło i nadużyjesz możliwości uruchamiania dowolnego kodu podczas sesji Emacsa.

Jest kilka rzeczy, które mogą sprawić, że poczujesz się bezpieczniej:

  • Trzymaj się popularnych pakietów

Podczas gdy popularne pakiety nie otrzymują automatycznie większej oceny, fakt, że mają więcej użytkowników, oznacza, że ​​szanse na wykrycie złośliwego zachowania, zanim wpłynie ono na Ciebie, wzrosną.

  • Spójrz na metryki kodu

Na github możesz uzyskać dość dobry widok historii wkładu projektów. Nawet jeśli główny autor dokonuje większości zatwierdzeń, mając szeroką gamę autorów, pokazuje, że istnieją inne osoby, które są aktywnie zainteresowane stabilnością i skutecznością kodu.

  • Wolę GNU ELPA i MELPA Stable od repozytoriów śledzących HEAD (MELPA) lub zezwalających na niezweryfikowane zgłoszenia (Marmolada)

Chociaż życie na krawędziach ma pewien urok dla tych, którzy chcą mieć najnowsze błyszczące funkcje, oznacza to, że możesz być pierwszym, który zaakceptuje najnowsze zatwierdzenie w swoim środowisku. Nawet jeśli nie jest złośliwy, możesz otrzymać pakiet w stanie ciągłego przepływu, podczas gdy „oficjalne” wydanie będzie przynajmniej pobieżnie przejrzane. Na przykład pakiety GNU ELPA zostaną zatwierdzone tylko przez użytkowników emacs-devel z uprawnieniami do zatwierdzania.

Ostatecznie jestem pewien, że w pewnym momencie nastąpi naruszenie bezpieczeństwa przez system pakietów, nawet jeśli jest to tylko eksperyment koncepcyjny. To może być punkt, w którym możesz polegać na swoich regularnych kopiach zapasowych.

stsquad
źródło
1
Marmolada jest kiepskim archiwum, jeśli chodzi o „zaufanie”. Pozwala każdemu przesłać dowolne paczki pod dowolną nazwą, bez zerowej weryfikacji lub recenzji. I to nie jest dokładnie dobrze utrzymane (wystarczy spojrzeć na liczbę otwartych problemów).
lunaryorn
@lunaryorn: Dobra uwaga, zmienię odpowiedź.
stsquad
@lunaryorn MELPA ma jeszcze więcej otwartych problemów niż repozytorium elmarmalade, więc wątpię, żeby to był użyteczny wskaźnik.
wasamasa
@stsquad Jedyną rzeczą, jaką daje MELPA Stable, są oznaczone wydania rzeczy, które i tak trafiłyby do MELPA, więc nie widzę, jak to jest bezpieczniejsze niż używanie Marmalade.
wasamasa
1
@wasamasa Przepraszamy, mój komentarz został źle sformułowany. Liczba nie mówi dużo, na pewno, ale otwarte kwestie mówiąc: jest zerowa reakcja na nowe problemy, nie ma żadnych komentarzy, nawet etykiet lub zadań. Marmolada faktycznie nie żyje.
księżycowy