TIL o pingu: https://unix.stackexchange.com/questions/592911/how-does-ping-work-on-fedora-without-setuid-and-capabilities
Ta flaga == no_new_privs?
Co najmniej dla rzeczy z run_as_shadow możesz zrobić to w odwrotnej kolejności. (Trochę nie rozumiem, do czego służa aplikacje bez run_as_shadow.)
Możesz chcieć wiedzieć o istnieniu qubes (mimo że jest w zupełnie innym miejscu na skali kompromisu między utrudnianiem życia a tym przed czym chce chronić).
Na Twoim miejscu zastanawiałbym się nad zrobieniem czegoś prawie że odwrotnego. I tak w tym setupie który masz musisz bardzo dobrze rozumieć skąd każdy jeden kawałek środowiska graficznego/shella/... czyta swoją konfigurację. Może więc zamiast tego odpalać całe środowisko graficzne jako shadow user i je tak skonfigurować, żeby (a) bardzo łatwo było dostać shella jako normal user (b) wszystkie aplikacje odpalały się w jakichś mniejszych sandboxach?
BTW. Przed kilkoma innymi uchroniło Cię to, że bwrap zawsze ustawia no_new_privs (https://man7.org/linux/man-pages/man2/prctl.2.html) nawet jak nie musi. To też powoduje, że w środku tego co zostanie odpalone przez midlaunch bity SUID i SGID oraz file capabilities nie są respektowane, więc np. `ping` nie będzie działał.
No ale teraz masz zatrzęsienie innych plików konfiguracyjnych, które intencjonalnie pozwalają na coś podobnego: .xsession pozwala uruchomić inny window manager (i normalnie nie istnieje), pliki konfigurujące twoje środowisko graficzne pozwalają zmienić to co się odpala jak klikniesz "terminal" (i raczej chcesz je móc edytować, bo typowe środowiska graficzne to robią).
Napastnik może też zostawić uruchomiony program, który będzie ptrace()ował twoje shelle albo który, gdy zostanie odpalony terminal, zabije go i odpali od razu złośliwy terminal.
Jest tam też chyba dość sporo sytuacji, gdzie dowolny użytkownik tego systemu może eskalować do roota wynikających z wyścigów na systemie plików.
Np. `useradd` nie jest zbyt ostrożny w tym jak tworzy katalog: https://github.com/shadow-maint/shadow/blob/master/src/useradd.c#L2293. Jeśli użytkownik (którego $HOME nie ma +t) odpali tworzenie użytkownika-cienia, i między między mkdir() z 2365 a chown() z 2387 zmieni nazwę .shadow-home, a na jego miejsce wsadz symlink dokądkolwiek ten chown zmieni właściciela tego symlinka.
Midlaunch odpala `bwrap`a jako root. W związku z tym bind mounty przezeń wykonywane będą używały uprawnień roota do trawersowania katalogów, więc pozwala użytkownikowi podmontować sobie w widocznym miejscu coś z katalogu, w którym on sam nie ma +x. Gdzieś wcześniej sprawdzasz czy właściwy użytkownik ma dostęp, no ale znowu to może być symlink który podmienię pomiędzy tym wywołaniem access a odpaleniem się bbwrapa. (Trochę nie rozumiem, czemu to nie uruchamia bwrapa jako użytkownik-cień.)
Jeśli sysctl protected_hardlinks (https://www.kernel.org/doc/Documentation/sysctl/fs.txt) nie jest włączony, chmid pozwala kraść pliki: można podmienić plik na hardlink do cudzego pliku pomiędzy weryfikacją właściciela a chmodem.
No i jeśli midlaunchowi każe podmontować coś na /sbin/runuser, to on to bardzo chętnie mi odpali jako root.
@anedroid Żadne skuteczne (cała zabawa w to, że wpisanie hasła jest "ważne" tylko w tym samym terminalu niewiele daje).
Model w którym wymaganie hasła w sudo w czymkolwiek pomaga to model, w którym ofiara jest nieaktywna (a więc sama nie używa sudo) po tym jak napastnik uzyskał dostęp (no i przed tym jak został wykryty).
The physics of why the first clock in America failed
The first clock in the Americas was an abject failure.
Little did everyone know that gravitation was to blame.
https://bigthink.com/starts-with-a-bang/physics-first-clock-america-failed/
Wydaje mi sie, ze to co robisz tym plikom nie zapobiega zrobieniu `mv ~/.bashrc ~/.smietnik`
A skad wiesz, ze odpalasz ten emulator terminala (ze nie podmienilem konfiguracji menu twojego srodowiska graficznego, zeby odpalal cos zlosliwego zamiast niego)? A skad wiesz, ze twoj caly window manager nie zostal podmieniony na cos zlosliwego (przez np. ~/.xsession)?
> Może również wstawić parametr --failsafe aby uruchomić /bin/bash.
No to atakujący też może to zrobić i poprzekierowywać stdio tego basha.
Jestem silnie przekonany, ze z midlaunch da sie zrobic cos moralnie ekwiwalentnego, ale bede mial czas dopiero wieczorem.
@anedroid I tego rodzaju rzeczom się _nie da_ przeciwdziałać. Jeśli atakujący ma kontrolę nad tym kawałkiem środowiska, przez które dokonujesz wszystkich swoich interakcji, to może je dowolnie zmieniać i podglądać.
echo > ~/midsu << EOF
#!/bin/bash
exec /usr/bin/midsu zrób_coś_złośliwego
EOF
chmod +x ~/midsu
echo 'export PATH=$HOME:$PATH' >> ~/.bashrc
Z podobnej beczki, qmapshack jest wygodnym narzędziem do tworzenia/edytowania tras w gpx. (Wspominam o tym, bo zdarzało mi się używać umapa do rysowania tras; teraz raczej używam qmapshack do tego i później umapa żeby je komuś pokazać.)
@anedroid nie chodzi mi o to jak działa, ale o opis tego skąd napastnik zaczyna i jakiego celu ma nie móc osiągnąć, który normalnie może.
Jeśli napastnik zaczyna z możliwości wykonywania kodu jako podstawowy użytkownik, to czemu np. nie może wsadzić do $PATH katalog ze złośliwym midsu, które następnym razem gdy je uruchomisz wyśle mu wszystkie dane z konta-cienia?
@anedroid opisz proszę przed jakimi napastnikami to ma chronić
Were there lawsuits when last provider of 2G stopped being one?
Body horror
Huh. I just took a piece of black sewing thread (should be about as visible as a small gauge needle, I'd guess) and managed to poke myself in the eye with it without noticing anything other than slight distortion in field of view in the process. When I hold it hanging down from my eyebrow, I can't notice it's there at all unless it moves.
Do you think this is somehow unrepresentative or that I'm different?
@kuba Nieno, chyba nie twierdzisz że zabarwienie ich na nowo nie zmienia koloru?
I enjoy things around information theory (and data compression), complexity theory (and cryptography), read hard scifi, currently work on weird ML (we'll see how it goes), am somewhat literal minded and have approximate knowledge of random things. I like when statements have truth values, and when things can be described simply (which is not exactly the same as shortly) and yet have interesting properties.
I live in the largest city of Switzerland (and yet have cow and sheep pastures and a swimmable lake within a few hundred meters of my place :)). I speak Polish, English, German, and can understand simple Swiss German and French.
If in doubt, please err on the side of being direct with me. I very much appreciate when people tell me that I'm being inaccurate. I think that satisfying people's curiosity is the most important thing I could be doing (and usually enjoy doing it). I am normally terse in my writing and would appreciate requests to verbosify.
I appreciate it if my grammar or style is corrected (in any of the languages I use here).