Космическая кухня
Космическая кухня

Как зажигаются звёзды

Здравствуйте, гость ( Вход | Регистрация )

entry Mar 3 2011, 23:11
В софте, обеспечивающем работу сервера, исправлено несколько критических ошибок. Вопреки традиции, моей вины в этих ошибках нет.

Перед самым Новым годом была обнаружена забавная уязвимость в PHP — при преобразования некоторых чисел, например 2.2250738585072012e-308, из строчной записи в числовую интерпретатор наглухо зависал. Со временем интерпретатор прибивался по таймауту, но ресурсы процессора расходовались вхолостую. Если на сайте был ввод вещественных чисел, то легко можно было саботировать работу сайта, отправляя ему такие числа. Сайт ГЛ вроде бы не был подвержён этой уязвимости, но всё равно я вздохнул спокойно только когда ошибка была исправлена через несколько дней, как только разработчики отошли от празднования и сползлись на работу.

Самое смешное, что эта же ошибка (точнее очень на неё похожая) вернулась обратно — через месяц она была обнаружена в Java. В отличие от PHP, существовал способ завесить OGS — нужно было прислать приказ, содержащий 2.2250738585072012e-308 на месте любого числового нецелого параметра. Например: D Hung 2.2250738585072012e-308 0 0 0 0. И сервер завис бы, пока кто-нибудь его не прибил бы. Злоумышленник, разумеется, не остался бы безнаказанным, но пострадало бы немало игроков.

К счастью, добрые люди нашли, как изготовить костыль для исправления этой проблемы, который и был приспособлен к серверу. Через неделю тихо и незаметно появился официальный патч от Оракла, а ещё через неделю -— и обновление Java. К сожалению, OpenJDK не торопился с исправлением этой ошибки — наконец в Убунту обновление приехало позавчера, спустя месяц после обнаружения ошибки. Что и позволило освободиться от временного костыля.

Между тем, я обнаружил, что сервер уже несколько лет использовал жаву, установленную не из репозитория, а следовательно, не обновляемую автоматически. Во времена рождения ГЛ это имело смысл — OpenJDK был ещё очень сырой. С тех пор сервер переехал с 32 бит на 64, жава сменилась с 5-й версии на 6-ю, несколько раз обновлялась Убунта. Теперь в ней установлен OpenJDK, который ничем (с точки зрения OGS) не уступает проприетарной жаве. Поэтому теперь OGS исполняется на OpenJDK (собственно, уже почти месяц — и никаких проблем замечено не было).

Заодно исправлено несколько мелких ошибок конфигурации: команда CONTINUE переименована в #CONTINUE (код не был рассчитан однострочную команду, позже это нужно исправить), добавлены описания команд PLAYERS и REGISTRY.

 
« Предыдущий · Космическая кухня · Следующий »
 
ВПВСЧПС
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31


Ссылки моего Блога


Поиск по моему Блогу