Strasidelny log na firewallu
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Sobota Říjen 2 18:31:40 CEST 2004
On Tue, 28 Sep 2004, Vlada Macek wrote:
> dnes jsem nasel v poste zpravu od logchecku na firewallu (486DX2, Debian
> Woody), ze nasel cosi nezvykleho v logu. Iptables mi loguji pod levelem
> debug a vsechny kern.=debug zpravy mam presmerovane do specialniho
> souboru kernel.firewall, ktery logcheck ignoruje. Nasledujici zprava ale
> nachazi uprostred dlouhe rady ---MARK--- v messages!
>
> Sep 28 11:05:30 gate kernel: C=X.X.X.X DST=81.0.233.82 LEN=48 TOS=0x00
> PREC=0x00 TTL=127 ID=52471 DF PROTO=TCP SPT
> =1072 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
Rekl bych, ze asi nejverohodnejsi vysvetleni je toto:
Jadro uklada hlasky, co patri do logu (generovane printk()), do kruhoveho
bufferu. Ten se muze zaplnit, cili zapisovaci ukazatel predbehne o cele
kolo cteci ukazatel. A je problem. Existujici implementace se zda, ze
tento problem resi tak, ze prepise dosud neprectena data a umele popostrci
cteci ukazatel za prepsane misto. Takze to pravdepodobne vzniklo tak,
ze se kruhovy buffer ucpal a precnivajici hlaska prepsala kus teto
inkriminovane. V prepsanem kusu bylo zaroven inicialni <L>, kde L je
cislice urcujici zavaznost hlaseni, cili klogd dostal hlasku, ktera
byla uriznuta, a navic ji na zacatku chybelo zminene <L>, takze si
domyslel nejakou implicitni hodnotu a proto to skoncilo v messages a ne
v kernel.firewall.
Napada mne, ze by jadro mohlo tuto skutecnost (preteceni bufferu) nejak
indikovat. Take by mohlo nejak resit situaci, kdy od nabotovani posle
do logu vic nez ULONG_MAX-delta znaku (v praxi to asi tak moc nehrozi,
protoze aby to nastalo po 1-rocnim uptimu, tak by se muselo denne
logovat > 10 MiB, ale stejne...), protoze pak se promenne v printk.c
otoci kolem dokola a nektere testy na nerovnost se rozsypou.
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux