Může aplikace po spuštění smazat sama sebe?

hknmtt

Může aplikace po spuštění smazat sama sebe?
« kdy: 02. 11. 2022, 11:59:59 »
Je mozne aby serverova aplikacia po spusteni zmazala samu seba a bezala z pamete? Cize spustim normalne binarku najekaho http serveru ako sluzbu na pozadi a on sa pri spusteni proste zmaze z disku ale bezi normalne dalej. A ked spadne tak proste admin musi manualne na server nahrat zase binarku a spustit ju.

Pytam sa len zo zvedavosti a ako potencialna ochrana pri hacknuti serveru. Ta manualna praca mi nevadi, neporebujem mat vsetko plne automatizovane a ziskat udaje z ramky bude asi znacne narocnejsie nez z disku aj pre skuseneho cloveka.
« Poslední změna: 02. 11. 2022, 12:05:18 od Petr Krčmář »


Re:Je mozne aby sa aplikacia po spusteni na serveri zmazala?
« Odpověď #1 kdy: 02. 11. 2022, 12:03:46 »
Je to možné asi stejně, jako je možné smazat binárku jakéhokoliv jiného běžícího programu. Čili ano, je to možné.

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #2 kdy: 02. 11. 2022, 12:07:42 »
Já ještě dodám, že jako ochrana to moc nefunguje, protože root může vyčíst paměť libovolného procesu nebo celého systému třeba v /proc/.

oss

  • ***
  • 150
    • Zobrazit profil
    • E-mail
Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #3 kdy: 02. 11. 2022, 12:08:45 »
Je to mozne ale to je tak zle riesenie. Ktore ani nicomu nepomoze.

Pytam sa len zo zvedavosti a ako potencialna ochrana pri hacknuti serveru. Ta manualna praca mi nevadi, neporebujem mat vsetko plne automatizovane a ziskat udaje z ramky bude asi znacne narocnejsie nez z disku aj pre skuseneho cloveka.

Nie, na linuxe je rovnako narocne citat z RAM ako citat z disku.

RDa

  • *****
  • 1 996
    • Zobrazit profil
    • E-mail
Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #4 kdy: 02. 11. 2022, 12:23:13 »
Dokud to nespojis s nejakym triggerem na prukak* ktery zhodi danou instanci tak to nedava smysl.

(napr. pokud je pocet uzivatelu / obsazenych virtualnich terminalu vetsi nez typicka hodnota po dobu jednotek vterin, tak se provede nasilny shutdown, vyjma pripadu kdy se prihlasujes ty, a muzes tento trigger zneplatnit treba necim jako touch /dev/shm/dontkillme )


Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #5 kdy: 02. 11. 2022, 12:28:25 »
Nejak mi unika zmysel, ale ano, da sa to. Ved ked niekto hackne masinu a napr. bude chciet dat podvrhnutu binarku, tak tu povodnu predsa musi nahradit a killnut povodnu a spustit novu.

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #6 kdy: 02. 11. 2022, 12:59:58 »
Podle mě záleží na operačním systému, jeho nastavení a na tom, zda ta aplikace neobsahuje nějaké knihovny, které by se dynamicky linkovaly za běhu - pak by mohl proces po odstranění souborů selhat.

Poměrně běžně se aplikace spouštějí z read-only filesystému, což brání jak přepsání tak i odstranění aplikace.

Možnost přepsat same sebu může být zajímavá, pokud má mít aplikace možnost se sama aktualizovat.

Tazateli jde nejspíš o to aby mu aplikaci někdo neukradl nebo neokopíroval?

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #7 kdy: 02. 11. 2022, 13:09:56 »
Na Linuxu (a unixech obecně) to lze. Nicméně to, že smažete ten soubor, neznamená, že přestane existovat na disku. Souborový systém na unixech funguje tak, že máte data na disku, a na ně vede jeden nebo více ukazatelů (hard linky). Když počet ukazatelů klesne na nulu, soubor se smaže. Když spustíte aplikaci, ta běžící aplikace má na soubor hardlink, který lze najít třeba v adresáři /proc. Tj. v tu chvíli budou existovat minimálně dva odkazy. Když smažete jméno ze souborového systému (to, čemu říkáte „smazat soubor“), smaže se ten jeden link ze souborového systému, ale pořád zůstává ten druhý z běžící aplikace. Takže data na disku zůstávají – a kdo má právo číst třeba z /proc, může ten soubor pořád přečíst nebo na něj vytvořit nový odkaz (a tím zase soubor zviditelnit pod nějakým jménem v souborovém systému).

Pozor také na to, že tohle platí, když se spouští jednoduchá nativní binárka. Když budete spouštět nějaký skript, virtuální stroj nebo binárku s odkazy na další knihovny, může se stát, že přistupuje k dalším souborům a otvírá je až v průběhu toho, co aplikace běží. Takže kdybyste smazal celou aplikaci se všemi soubory, může se stát, že najednou v průběhu běhu aplikace bude chtít otevřít další soubor, který ale bude už smazaný. A čistě teoreticky by k tomu mohlo dojít i v rámci jedné binárky – že by aplikace sama svou binárku z nějakého důvodu chtěla otevřít znova na základě cesty k souboru.

Na Windows to udělat nepůjde, protože tam se při spuštění soubor zamkne.

RDa

  • *****
  • 1 996
    • Zobrazit profil
    • E-mail
Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #8 kdy: 02. 11. 2022, 13:42:08 »
Možnost přepsat same sebu může být zajímavá, pokud má mít aplikace možnost se sama aktualizovat.

Tohle uplne nejde - zapisovat do beziciho souboru se neda a typicka error hlaska je "text file busy" (segment .text je jakoze spusteny kod).

Muzete ale binarku smazat a vytvorit soubor znova.

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #9 kdy: 02. 11. 2022, 14:15:12 »
lze to, dokonce to i používáme v produkcích. Hlavní use case je připojení disku s aplikacemi přes nfs, spuštění aplikace a odpojení disku. Děláme to tak u diskless virtuálů, není pak potřeba udržovat dlouhodobé nfs spojení, snadněji se migrují mezi hosty a nemusíme mít složité mechanismy pro distribuci posledních verzí aplikace.

Ale jak píšou ostatní, dokud k tomu nemáš jasný důvod, je zbytečné to dělat, bezpečnost s tím nijak nezvedneš a je to zbytečně komplikované.

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #10 kdy: 02. 11. 2022, 16:18:21 »
lze to, dokonce to i používáme v produkcích. Hlavní use case je připojení disku s aplikacemi přes nfs, spuštění aplikace a odpojení disku. Děláme to tak u diskless virtuálů, není pak potřeba udržovat dlouhodobé nfs spojení, snadněji se migrují mezi hosty a nemusíme mít složité mechanismy pro distribuci posledních verzí aplikace.
To je ale trochu něco jiného – to spoléháte na to, že soubor aplikace se nahraje do paměti nebo zůstane v NFS cache. Ale obecně odpojení disku je jiná operace než smazání souboru.

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #11 kdy: 03. 11. 2022, 09:06:44 »
lze to, dokonce to i používáme v produkcích. Hlavní use case je připojení disku s aplikacemi přes nfs
Ano, aj my sme to tak robili volakedy u nasich app. Ked bola nova verzia, tak sa len prepisala na servri, a uzivatelom sa dalo echo, ze ked vypnu/zapnu program, tak budu mat novu verziu.

Re:Může aplikace po spuštění smazat sama sebe?
« Odpověď #12 kdy: 03. 11. 2022, 12:22:00 »
.