Roman Terleev wrote:
 Игорь, такая трабла... По непонятной причине свалился упс,
 предположительно в 3 ночи по местному времени... Что интересно, как я
 писал ранее, даже спрашивал - если работает упс без глюков более 140
 дней, нормально ли это :)
 Естественно я не знал ничего, юзера не беспокоили.
 Глюки стали наблюдаться когда пришел утром на работу - перестал
 эксплорер открывать сайты.. Стал грешить на вирусню виндузятины и
 прочее.. Стал копать где и что.. Тут позвонил юзер и сказал что
 проблема на диалапе, я насторожился и решил статистику упса
 поглядеть, ввел "oopsctl stat" и тут мертвая тишина... Висит консоль. Глянул
 "ps ax"-ом а процессик то висит, даже не свалился, а top-ом не
 видать(или не заметил)... Погорячился я и прибил его, снова запустил, потом думаю
 надо было все сведения собрать и сюда выставить..
 Ну да ладно, забил я на это, но потом полчаса спустя моча в голову
 шарахнула, и решил логи посмотреть, отчего и почему он свалился. Вот
 привожу кусочки логов непонятные моему мозгу. Просьба к вам,
 расказать что это.

Wed May 26 09:13:22 2004  [0x6a464020]parse_http_request(): Unrecognized method 
`SEARCH'.
Wed May 26 09:13:42 2004  [0x6a4cc028]parse_http_request(): Unrecognized method 
`SEARCH'.
Wed May 26 09:14:05 2004  [0x6a4d8031]parse_http_request(): Unrecognized method 
`SEARCH'.
Wed May 26 09:14:06 2004  [0x6a3bc016]parse_http_request(): Unrecognized method 
`SEARCH'.
^^^^^^^^^^^^^^^^^^^^^^^^ вообще непонятно. что это? з.ы. я про луп.

Вот это и есть причина такоего поведения oops. Поясняю, зараженная машинка
с вирусом пытается найти других жертв по той же самой уязвимости.
Идет запрос с методом `SEARCH' (скорее всего это какое нибудь очередное расширение
протокола от MS) в качестве URL посылается очень длинная строка 38кб расчитанная
на переполнение буфера. Oops такого метода не знает (его нет в стандарте
протокола http1.1) и почему то от этой строки ему становиться очень плохо.


Сам запрос выглядит так:
SEARCH /\x90\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02
\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02\xb1\x02
[Skip 38kb]
\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90
\\x90\\x90HTTP/1.0


Solution: блокировать зараженные машинки, пока не вылечат заразу в сеть
не подключать.

Для получения IP адреса этих машин небольшой патчик на run_client.c

Кстати apache 2.0.49 отбрасывает запросы больше 8190 байт, может тоже ввести
такое ограничение и отбрасывать на более ранней стадии такие запросы?


кусок лога apache:
[Wed May 26 11:19:32 2004] [error] [client 217.42.85.27] request failed: URI too long (longer than 8190)
[Wed May 26 18:02:19 2004] [error] [client 217.121.20.121] request failed: URI too long (longer than 8190)


--
20, Karl Marx Avenue,       Phone:  +7-3832-462484
Russia, Novosibirsk 630092  E-mail: [EMAIL PROTECTED]
--- run_client.c.orig   Thu Apr 29 20:45:18 2004
+++ run_client.c        Wed May 26 18:02:20 2004
@@ -1202,7 +1202,9 @@
     else if (!strcasecmp(src, "OPTIONS"))
         rq->meth = METH_OPTIONS;
     else {
-        my_xlog(OOPS_LOG_SEVERE, "parse_http_request(): Unrecognized method `%s'.\n", 
src);
+       char *s = my_inet_ntoa(&rq->client_sa);
+       my_xlog(OOPS_LOG_SEVERE, "parse_http_request() %s : Unrecognized method 
`%s'.\n",s,src);
+       free(s);
         *p = ' ';
         return (-1);
     }

Дати відповідь електронним листом