| View previous topic :: View next topic |
| Author |
Message |
kneczaj Apprentice

Joined: 13 Oct 2006 Posts: 169 Location: Zamosc
|
Posted: Fri Sep 19, 2008 5:47 am Post subject: [SECURITY] Zarządzanie pamięcią w Linuksie |
|
|
Powiedzmy, że użytkownik "janek" otwiera firefoksa. Czy janek może za pomocą innej aplikacji zobaczyć jakie dane znajdują się w pamięci RAM zarezerwowanej dla firefoksa? Czy inny użytkownik zalogowany w tym samym czasie może podejrzeć za pomocą odpowiednich aplikacji co znajduje się w pamięci zarezerwowanej dla firefoksa uruchomionego przez janka? Czy użytkownik root ma takie uprawnienia? Mówiąc "innych aplikacji" chodzi mi o aplikacje specjalnie stworzone w celu odczytywania surowych danych z pamięci, respektujące jednak zabezpieczenia systemu Linux.
Oczywiście chodzi mi o "surowe" dane. Wiadomo, że każde dane mają jakąś strukturę, ale załóżmy, że osoba próbująca odczytać to co znajduje się w pamięci RAM ma odpowiednią wiedzę tak aby odtworzyć całą strukturę danych na podstawie odczytu "surowych" danych z pamięci RAM.
Arfrever: Ortografia |
|
| Back to top |
|
 |
Raku Bodhisattva


Joined: 28 Feb 2004 Posts: 2375 Location: Poland
|
Posted: Fri Sep 19, 2008 8:24 am Post subject: Re: [SECURITY] Zarządzanie pamięcią w Linuksie |
|
|
| kneczaj wrote: | | Powiedzmy, że użytkownik "janek" otwiera firefoksa. Czy janek może za pomocą innej aplikacji zobaczyć jakie dane znajdują się w pamięci RAM zarezerwowanej dla firefoksa? Czy inny użytkownik zalogowany w tym samym czasie może podejżeć za pomocą odpowiednich aplikacji co znajduje się w pamięci zarezerwowanej dla firefoksa uruchomionego przez janka? |
Tak. Jest cała masa tych aplikacji o wspólnej nazwie exploit.
| Quote: | | Czy użytkownik root ma takie uprawnienia? Mówiąc "innych aplikacji" chodzi mi o aplikacje specjalnie stworzone w celu odczytywania surowych danych z pamięci, respektujące jednak zabezpieczenia systemu Linux. |
Tak, root ma takie uprawnienia. _________________ raku
Powered by Archlinux  |
|
| Back to top |
|
 |
kneczaj Apprentice

Joined: 13 Oct 2006 Posts: 169 Location: Zamosc
|
Posted: Fri Sep 19, 2008 8:31 am Post subject: |
|
|
| Quote: | | Tak. Jest cała masa tych aplikacji o wspólnej nazwie exploit. |
Chodzi mi raczej o to czy exploity uruchamiane z uprawnieniami zwykłego użytkownika (nie roota) mogą coś odczytać z obszaru pamięci, którego używa program uruchomiony z uprawnieniami innego użytkownika. Oczywiście to wszystko nie wykorzystują, żadnych bugów w kernelu. |
|
| Back to top |
|
 |
SlashBeast Moderator


Joined: 23 May 2006 Posts: 2727
|
Posted: Fri Sep 19, 2008 9:24 am Post subject: |
|
|
| Na chłopski rozum nie mogą, ale dla pewności możesz używać grsecurity+pax |
|
| Back to top |
|
 |
ncl n00b

Joined: 24 Oct 2006 Posts: 42
|
Posted: Fri Sep 19, 2008 10:32 am Post subject: |
|
|
| Quote: | | Chodzi mi raczej o to czy exploity uruchamiane z uprawnieniami zwykłego użytkownika (nie roota) mogą coś odczytać z obszaru pamięci, którego używa program uruchomiony z uprawnieniami innego użytkownika. Oczywiście to wszystko nie wykorzystują, żadnych bugów w kernelu. |
Czy nie taki jest wlaśnie sens tej całej zabawy z exploitami?
Użytkownik A uruchamia exploit dla programu działającego z (e)uidem użytkownika B. Jasne, że może mieć wtedy dostęp do pamięci tego procesu. Nawet więcej. Jeśli ma możliwość wykonania własnego kodu w kontekście tego procesu to "staje się" użytkownikiem B i ma jego wszystkie uprawnienia. |
|
| Back to top |
|
 |
kneczaj Apprentice

Joined: 13 Oct 2006 Posts: 169 Location: Zamosc
|
Posted: Fri Sep 19, 2008 10:46 am Post subject: |
|
|
| Quote: | | Użytkownik A uruchamia exploit dla programu działającego z (e)uidem użytkownika B. Jasne, że może mieć wtedy dostęp do pamięci tego procesu. Nawet więcej. Jeśli ma możliwość wykonania własnego kodu w kontekście tego procesu to "staje się" użytkownikiem B i ma jego wszystkie uprawnienia. |
Czy to jest zgodne ze wszystkimi zabezpieczeniami Linuksa? Jakoś nie wierzę, że da się tak uruchomić program bez specjalnych hacków. Jeśli jednak da się to zrobić to powiedz jak. |
|
| Back to top |
|
 |
Crenshaw Guru


Joined: 23 Jun 2004 Posts: 469 Location: Poland
|
Posted: Fri Sep 19, 2008 10:53 am Post subject: |
|
|
| kneczaj wrote: | | Quote: | | Użytkownik A uruchamia exploit dla programu działającego z (e)uidem użytkownika B. Jasne, że może mieć wtedy dostęp do pamięci tego procesu. Nawet więcej. Jeśli ma możliwość wykonania własnego kodu w kontekście tego procesu to "staje się" użytkownikiem B i ma jego wszystkie uprawnienia. |
Czy to jest zgodne ze wszystkimi zabezpieczeniami Linuksa? Jakoś nie wierzę, że da się tak uruchomić program bez specjalnych hacków. Jeśli jednak da się to zrobić to powiedz jak. |
Sprawdź co to znaczy "exploit".  |
|
| Back to top |
|
 |
ncl n00b

Joined: 24 Oct 2006 Posts: 42
|
Posted: Fri Sep 19, 2008 10:57 am Post subject: |
|
|
| Nie no myślalem że zeszliśmy już na temat exploitów. Zakładamy, że skoro dla określonego programu jest napisany exploit to ma on jakąś lukę którą da się wykorzystać. Linux nie wiele ma wtedy do powiedzenia. Chyba, że masz poinstalowane jakieś grsecurity czy inne sprawy. To znacznie zwiększa bezpieczeństwo ale jeśli już exploit zadziała to jest jak powyżej. |
|
| Back to top |
|
 |
kneczaj Apprentice

Joined: 13 Oct 2006 Posts: 169 Location: Zamosc
|
Posted: Fri Sep 19, 2008 1:36 pm Post subject: |
|
|
Są różne wersję "złośliwych" programów na linuksa niektóre nie wykorzystują żadnych luk bezpieczeństwa i aby działać poprawnie muszą być uruchamiane świadomie. Mimo, że należą do grupy "złośliwych" mają pozytywne znaczenie dla rozwoju systemu jak np ten rootkit
http://osnews.pl/rootkit-dla-linuksa-na-licencji-gplv2/
EDIT: Jeszcze dwa pytania:
1. Czy program A może czytać dane programu B z pamięci ram (oczywiście nie przez przypadek) jeśli oba programy są uruchomione przez tego samego użytkownika.
2. Mam dwie aplikacje: demona i klienta który korzysta z tego demona. Demon służy do przechowywania bardzo ważnych danych w pamięci ram (przy wczytywaniu są odszyfrowywane), a klient pobiera od niego te dane jeśli są potrzebne. Czy bezpieczniej jest uruchamiać demona z prawami roota (być może trudniejszy dostęp do zarezerwowanej dla demona pamięci) czy raczej jest to wszystko jedno czy demon uruchamiany jest jako root czy jako ten sam użytkownik, który uruchamia aplikację kliencką? |
|
| Back to top |
|
 |
ncl n00b

Joined: 24 Oct 2006 Posts: 42
|
Posted: Fri Sep 19, 2008 3:59 pm Post subject: |
|
|
ad 1. poczytaj o pamięci wirtualnej
ad 2. nie znam szczegółów, ale ogólna zasada jest zawsze taka, że to co nie musi to nie powinno chodzić jako root |
|
| Back to top |
|
 |
kneczaj Apprentice

Joined: 13 Oct 2006 Posts: 169 Location: Zamosc
|
Posted: Fri Sep 19, 2008 7:44 pm Post subject: |
|
|
| Quote: | | ad 1. poczytaj o pamięci wirtualnej |
Mówiąc pamięć ram chodziło mi także o pamięć wirtualną, gdyż pamięć wirtualna jest rozszerzeniem ramu i widziana jest przez programy jako ram. Napisałem 'pamięć ram' aby odróżnić ją od pamięci masowych jak twarde dyski czy nośniki wymienne, na których w wielu przypadkach operacje o które pytałem są jak najbardziej możliwe, jeśli tylko uprawnienia danych plików na to pozwalają.
| Quote: | | ad 2. nie znam szczegółów, ale ogólna zasada jest zawsze taka, że to co nie musi to nie powinno chodzić jako root |
Chodzi mi o to żeby w razie gdyby ktoś włamał się na konto zwykłego użytkownika nie mógł w żaden sposób odczytać informacji przechowywanych w pamięci wspomnianego demona. Wydaje mi się, że generalnie trudniej jest się włamać na konto root'a niż na konto zwykłego użytkownika, a więc jeśli demon jest uruchamiany przez root'a to dane które przechowuje on w pamięci są bezpieczniejsze. A może nie ma żadnej różnicy? Oczywiście pomijam tu bezpieczeństwo wspomnianej aplikacji klienckiej, gdyż to inna kwestia, którą wiem jak rozwiązać. |
|
| Back to top |
|
 |
ncl n00b

Joined: 24 Oct 2006 Posts: 42
|
Posted: Sat Sep 20, 2008 12:50 pm Post subject: |
|
|
ad 1. Ok, nie doczytałem znowu tego w nawiasie (nie przez przypadek). Tak więc może, np. korzystając z ptrace. Jak uruchamiasz gdb to nie potrzebujesz roota nie?
ad 2. Nie i kropka Program nie zyskuje na bezpieczeństwie przez to, że jest uruchomiony z uprawnieniami roota. Za to spada ogólne bezpieczeństwo twojego systemu. Zobacz, że większość programów dbających o bezpieczeństwo nawet jeśli z pewnych względów musi być uruchomiona z uprawnieniami roota to zrzuca te uprawnienia najszybciej jak to możliwe i przechodzi na specjalengo użytkownika z minimalnymi prawami (patrz apache). |
|
| Back to top |
|
 |
master66 n00b


Joined: 27 Mar 2008 Posts: 36 Location: Kraków
|
Posted: Sat Sep 20, 2008 4:55 pm Post subject: |
|
|
| To ja jeszcze pytanko od siebie: jak mozna sprawdzic z poziomu kodu zrodlowego programu, ile pamieci wirtualnej wykorzystuje jakis proces? Pytam, bo kiedys mialem napisac taki monitor na jakies laborki na studia i jakos nie moglem sie tego doszukac w zadnej ksiazce czy dokumentacji a jedyne co znalazlem to strukturka rusage i jej pochodne ale tam mi zawsze 0 pokazywalo i lipa... |
|
| Back to top |
|
 |
ncl n00b

Joined: 24 Oct 2006 Posts: 42
|
Posted: Sat Sep 20, 2008 7:29 pm Post subject: |
|
|
man getrusage: | Quote: | | The structure definition shown at the start of this page was taken from 4.3BSD Reno. Not all fields are meaningful under Linux. In Linux 2.4 only the fields ru_utime, ru_stime, ru_minflt, and ru_majflt are maintained. Since Linux 2.6, ru_nvcsw and ru_nivcsw are also maintained. | Może dlatego?
Można odczytać z /proc. Ale oprócz tego, że zwykle będzie działać pod linuksem ma raczej same wady . |
|
| Back to top |
|
 |
kneczaj Apprentice

Joined: 13 Oct 2006 Posts: 169 Location: Zamosc
|
Posted: Sun Sep 21, 2008 5:24 pm Post subject: |
|
|
| ncl wrote: | ad 2. Nie i kropka Program nie zyskuje na bezpieczeństwie przez to, że jest uruchomiony z uprawnieniami roota. Za to spada ogólne bezpieczeństwo twojego systemu. Zobacz, że większość programów dbających o bezpieczeństwo nawet jeśli z pewnych względów musi być uruchomiona z uprawnieniami roota to zrzuca te uprawnienia najszybciej jak to możliwe i przechodzi na specjalengo użytkownika z minimalnymi prawami (patrz apache). |
Czyli najlepiej wzorem apache uruchamiać program na prawach specjalnego dedykowanego mu użytkownika. |
|
| Back to top |
|
 |
Yatmai Veteran


Joined: 12 Nov 2005 Posts: 1501 Location: Kraków
|
Posted: Sun Oct 05, 2008 11:37 am Post subject: |
|
|
Tak, żeby czegoś nie napsuł
A propos zaglądania do pamięci innego programu w przypadku gdy oba lecą z tego samego usera, jesteście pewni, że tak bezkarnie mogą sobie zaglądać w notatki?
Bo z tego co wiem, pomijając exploity, to takie zabawy kończą się segfaultem. _________________ Desktop: [Ath64 X2 2GB DDR2 GF76GT] [amd64] [2.6.29-gentoo] [nVidia] [KDE 3.5.10]
Lapek: [HP nc6000] [i686] [2.6.29-ARCH] [ati-open] [KDE 3.5.10] |
|
| Back to top |
|
 |
|