Co oznacza następujący komunikat jądra?

12

Pojawia się następujące polecenie / var / log / messages, co to znaczy?

  Feb 19 22:51:20  kernel: [  187.819487] non-matching-uid symlink following attempted in sticky world-writable directory by sh (fsuid 1001 != 0)

Zdarza się to, gdy zadanie cron miało być uruchomione.

stokrotka
źródło

Odpowiedzi:

9

Uprzywilejowany proces można oszukać w celu zastąpienia ważnego pliku (/ etc / passwd, / etc / shadow itp.) Poprzez wskazanie na niego dowiązania symbolicznego. Na przykład, jeśli wiesz, że root uruchomi program, który tworzy plik w / tmp, możesz zastawić pułapkę, zgadując, jaka będzie nazwa pliku (zazwyczaj / tmp / fooXXX, gdzie foo to nazwa programu, a XXX to ID procesu) i wypełnij / tmp potencjalnymi kandydatami wskazującymi na / etc / shadow. Później root otwiera plik w / tmp, obcina i zastępuje / etc / shadow i nagle nikt już nie może się zalogować do systemu. Istnieje pokrewny atak, który wykorzystuje warunek wyścigu między sprawdzeniem istnienia pliku tymczasowego a utworzeniem pliku.

Istnieją sposoby na uniknięcie tego problemu, w tym ostrożne korzystanie z mktemp () i mkstemp (), ale nie wszyscy programiści i użytkownicy będą świadomi tego ryzyka. W rezultacie niedawno zaproponowano łatkę na jądro Linuksa i najwyraźniej została ona zastosowana do używanego jądra. Łatka uniemożliwia następujące dowiązania symboliczne w jednej z typowych sytuacji, w których złośliwy odsyłacz mógł zostać zasadzony: katalog do zapisu na świecie z lepkim zestawem bitów, taki sposób, w jaki / tmp jest zwykle konfigurowany w systemach uniksowych. Zamiast podążać za dowiązaniem symbolicznym, próba wywołania systemowego kończy się niepowodzeniem z EACCES, a jądro rejestruje komunikat, który zobaczyłeś.

Niektóre powiązane paplaniny na liście mailingowej jądra Linux.

Kyle Jones
źródło