Накладочка закладочка вышла... Ой, щас поправим другую заложим.
«Пакет смерти» для сетевых карт Intelhttp://habrahabr.ru/post/168607/
Сетевой инженер Кристиан Кильхофнер (Kristian Kielhofner), купив новые серверы для обработки VoIP-трафика, столкнулся с неприятной проблемой. Серверы периодически падали без видимой причины. Но самое странное, что на серверах иногда отключался Ethernet-контроллер. Отключался в прямом смысле: система некоторое время работала нормально, но после обработки определённого количества трафика интерфейс выдавал аппаратную ошибку и обрывал связь, а восстановление работы было возможно только после холодной перезагрузки.
Кристиан провёл небольшое исследование и нашёл ряд сообщений о том, что у других пользователей тоже бывают проблемы с контроллерами Intel 82574L, говорили, что у них баги в EEPROM, ASPM и т.д. Кристиан с коллегами потратил несколько месяцев на поиск причин, почему в их случае контроллеры выдавали ошибку. В конце концов, им удалось докопаться до сути.
Инженер начал исследовать с помощью Wireshark содержимое пакетов, которые проходили через сетевую карту непосредственно перед отключением интерфейса — и обнаружил некоторую закономерность. Последний пакет всегда был ответом 100 Trying по протоколу SIP, он всегда был определённой длины и всегда поступал после запроса INVITE конкретного производителя IP-телефонов.
Кристиан говорит, что в пятницу вечером поднял на уши спецов из компании, продавшей ему телефоны этой марки. Он предоставил им доказательства и потребовал ответа. Они собрались все вместе, чтобы проверить баг, сделали тестовую конфигурацию на разных серверах и разных моделях телефонов — и смогли воспроизвести его! Правда, баг проявлялся не на всех моделях серверов и телефонов. После долгого анализа, в конце концов, всё-таки удалось выявить конкретный пакет, из-за которого падал интерфейс Ethernet. Это оказался полученный INVITE, а не 100 Trying.
Для проверки взяли программу tcpreplay, изолировали INVITE от телефона — и отправили этот пакет на сетевую карту. Трюк сработал.
Каждый может проверить работу «пакета смерти» на своей сетевой карте Intel, установив виртуальную машину и отправив оттуда пакет с помощью tcpreplay, или можно это сделать с другого компьютера по локальной сети. «Пакет смерти» срабатывает под любыми ОС, независимо от настроек файрвола, если только файрвол не блокирует на уровне OSI 2/3.
Содержимое пакета
Кстати, Кристиан довёл анализ до логического завершения и выяснил, какие конкретно байты превращают любой пакет в «пакет смерти» для Ethernet-карты Intel.
Отключение интерфейса происходит, если по адресу 0x47f находится значение 2 или 3.
Байт 0x47f = 32 HEX (2 ASCII)
Байт 0x47f = 33 HEX (3 ASCII)
Если там 4, то всё OK.
Подходит любой пакет: HTTP POST, ICMP echo-request и проч. например, на веб-сервере можно сконфигурировать ответ 200 таким образом, что он будет «убивать» сетевые интерфейсы на клиентских машинах.
Кристиан Кильхофнер говорит, что занимается сетями 15 лет и никогда не видел ничего подобного. Он уже связался с инженерами Intel, и они подтвердили, что действительно, это баг в прошивке EEPROM на контроллерах 82574L.
Комментарии
Чем отличается баг от закладки ?
Баг - это само так вышло, недопроверили.
Не обязательно, часто это предумышленное допущение о невозможности данной ситуации, но закон Мерфи всегда свое возьмет.
Критерия четкого нет.
Главное, нет доказательств умысла. Значит - случайность. Все дружно этому верим!
нет доказательства умысла - начит нельзя с уверенностью утверждать, что умысел был. Или что его не было.
Производитель не знает об этой особенности изделия и не воспользуется ей в час "Ч".
баг - о, йа не знал!
закладка или фича - так было задумано с самого начала.
Ну вот если бы по этому пакету прошивка бы вообще слетала и карточка дохла, тогда можно было бы предположить ... да и модель только одна подвержена, правда это пока, вообщем надо считывать пзу карт и в дебагер.
есть такой глючный чип realtek. сколько я с ним намучался )))
А он не глючный, он просто дешевый и не умеет нихрена.
на простых людях это как-то сказывается? или это информация для узких специалистов, коих на АШ просто каждый второй?
Да, может сказаться.
Если Ваш компьютер оборудован сетевой картой имеющей уязвимость, то злоумышленник может в любой момент отключить Вам сеть.
какой же это злоумышленник, благодетель это!
Это значит, что энная часть компов в случае БП будет превентивно отключена от сети. Ну, а если внутри есть другие такие заморочки, то и выведена из строя.
Да и зачем они? Электричества-то всё равно не будет :-)))
Вот гады! Лучше б динамомашины для ноутов повсеместно в компьютерные лабазы завезли. Тут в одном флаконе и спорт, и надежда на автономность, и динамо!
> Каждый может проверить работу «пакета смерти» на своей сетевой карте Intel, установив виртуальную машину и отправив оттуда пакет с помощью tcpreplay
А что, энтузиасты ещё не выложили в сеть программку, которая бы дропала компьютер по адресу? Было бы весело.
Как не выложили? Обижаете!
Спасибо!
я заметил такую закономерность, обычно мелкая электроника производства на территории американии где-то через год даёт дубу, что переводчики что подобное из относительно редкого, а всякие мп3 плееры и огрызки с смартфонами и подобным в этом особо не замечены.
Особенно весело было, когда с интервалом в пару дней в рэйд массиве полетело два одинаковых винта поставленных одновременно. %)
Если в рейде, особенно пятом полетел один винт, то на осташиеся резко возрастает нагрузка, и очень вероятно что если не заменить первый, и не произвести ребилд рейда, что тоже дает нехилую нагрузку, вылетит второй, поэтому грамотные люди предпочитают либо просто зеркалку, либо рейд 6, либо raid-dp.
все просто, только час посидеть и посмотреть.
Подобная история произошла у нас лет 10 назад, на каком именно железе не помню - на определенной последовательности данных в них менялся определенный байт. Тоже хрен поймаешь такое. Чем сложнее техника, тем загадочнее баги. Еще лично сталкивался с приколом, когда еще были сетки x.25 по телефонным сетям, модем не устанавливал соединение с неродным блоком питания. Т.е. все параметры у блока такие же, другой модем с ним работает, а этот нет. Меняешь блок притания - все ок.
6 больших военных путеров. (больших это не то слово, если память не изменяет шкаф в метрах, ширина 1. длинна 6, высота 2.5, таких 6 штук на один путер), есть локальная сеть, оптика, на одном из путеров в блоке управления висела ошибка, все поменяли, ничего не помогает. Через недельку один товарищ заметил, что на совершенно другом путере немного занижено напряжени на "сетевой карточке" (прим, размеры смотри выше), покрутил до номинала, ошибка в блоке управления другого путера пропала. Чем сложнее система, тем необьяснимее ошибки и методы их устранения.
Создаётся впечатление, что скоро дойдёт до того, что инжинеры в отношении техники, станут как медики в отношении организма: "хрен его знает как оно работает, но таблеточки попейте, обычно помогает")
так оно уже и есть давно. по крайней мере софт по этому пути уже с 90х пошел. одни написали глючный и неповоротливый язык, другие на нем пишут еще более раздутые и неповоротливые программы. в итоге нужны более мощные машинки и тонны заплаток для глючного софта )))
Ну с софтом-то понятно (аналог - психология, где ваще с научностью туго), а вот аппаратная часть... Глядишь, физиологи догонят в понимании организма инжинеров, человек-то остаётся прежним, а машины усложняются.
А аппаратная часть это тоже микроконтроллер(тот же процессор) и программы.
Уровень сложности подобной техники уже зашкаливает за способности одного человека охватить все очобенности системы целиком. Поэтому либо шаманство (тпа холодной перезагрузки), либо долгое, нудное и очень дорогое разбирательство в сути проблемы. И если шаманство сильно дешевле, то будут использовать его.
> Кристиан Кильхофнер говорит, что занимается сетями 15 лет и никогда не видел ничего подобного.
Он просто не имеет их готовить. (c) У меня были сервера с интеловскими сетевыми чипами на матери, и был с ними забавный глюк - раз в неделю ни с того ни с сего kernel panic. Расследование заняло несколько недель и показало, что на матери из 2 сетевух одна была на чипе 82575EB, а другая на 82575E. (Вот на фига, такой зоопарк спрашивается?) И вот та, которая 82575EB при работе с MTU = 9000 периодически выбивала систему.
И не у меня одного. - http://forum.mikrotik.com/viewtopic.php?f=2&t=58329
Intel - это не святая церковь )) даже скорее наоборот )) интеллектуальная деградация - она всех касается.