Kdo mi cmare do souboru ?
Dan Lukes
dan at obluda.cz
Tue May 26 07:45:58 CEST 2020
Zareaguju takhle v jednom emailu na vsechny tri dopisy, at toho
konferenci nelita moc.
> Problém nastáva pri ukončení spojenia na klienta, vtedy deamom (a nie
> hneď) zapíše do mailoxu čo s nim robil (aj len pri čítaní zapisuje
> príznak čítania)
> a ak sú dva deamony tak si mailbox navzájom prepisujú. Zrejme
> programátori nepredpokladali rôzne deamony (aj od roznych výrobcov) do
> jedného mailboxu.
Novy email muze prijit kdykoliv. Bez zamkovani (ci jineho rizeni
pristupu k souboru) by to neslo, a IMAP-UW zamyka.
Problem sice nejak s konkurencnim pristupem souvisi, ale nejak
netricialne. Zapsany binarni bordel byl identifikovan jako segment SSL
komunikace. K datum v tyhle podobe aplikace obvykle pristup nema a
nemuze je tedy "prostou chybou" zapsat. Pri "proste" chybe zamkovani by
si to sice prepisovali, ale porad "formatove korektnimi" daty.
Odhad "naslepo" je, ze (zrejme pri reseni zamkovani) aplikace uzavre
deskriptor sitoveho spojeni standardnim systemovym close() - nikoliv
volanim SSL funkce. Nasledne aplikace otevre maillbox a system ji vrati
volny deskriptor - ten, co byl prave uvolnen, tedy ten, ktery si SSL
knihovna stale drzi v internich datech jako deskriptor otevreneho SSL
spojeni. No a nekdy pozdeji do nej ta knihovna zapise.
> riadiaci blok v maiboxe ... imap-uw ho robí binárny.
Do textoveho MBOXu nemuze a imap-uw to nedela. To by tam MTA uz nemusel
byt schopen pridat dalsi email. V tomhle problem neni, do textoveho MBOX
souboru IMAP-UW dava data textove.
> napadl mne prográmek inotifywait, který používám. Nicméně ten dokáže
> odchytit jen patřičnou změnu (vytvoření/update) nějakého souboru.
> Jak ale zjistit, kdo do něj zrovna zapisuje - možná hned zkusit zavolat lsof
> či něco podobného, třeba se to stihne a něco prozradí.
Sice rikam, ze nejdriv potrebuju zjistit kdo a pak teprve hledat proc,
ale nakonec to druhy budu stejne potrebovat, takze stejne budu
potrebovat chytit ten konkretni zapis, abych sestrelil to co ho dela a
nasledne v coredumpu hledat co se delo a jak tomu napriste zabranit.
Pokud prijdu na to jak udelat tohle, nejspis to pujde pouzit i pro
detekci "kdo".
Ja vim jak to v nejhorsim vyresit. Proste budu muset patchnout libc nebo
kernel a u zapisu zkontrolovat, jestli nezapisuju na pozici nula
sledovaneho souboru nezadouci blbosti. A pokud ano, tak to sestrelit.
Ale potrebna uprava neni uplne trivialni a strasne se mi do toho nechce.
Doufal jsem, ze existuje neco hotovyho nebo prinejmensim snadneji
upravitelnyho. Treba v ramci auditingu, o kterym moc nevim co umi.
> pro IMAP / POP3 server bych z vlastni zkusenosti doporucil Dovecot
Zatim se mi nechtelo ho zkoumat. Na to co potrebuju je zbytecne
komplexni. Mozna me ale situace nakonec donuti.
Kazdopadne diky vsem za napady, pokdu byste jeste na neco narazili,
klidne dejte vedet, jestli se fakt budu muset hrabat v kernelu, tak to
mi bude jeste nejakou dobu trvat, nez se do toho dokopu ...
Dan
More information about the Users-l
mailing list