Архив автора: vlad

Критические уязвимости во всех процессорах

Я как-то сразу не осознал насколько все плохо. Уязвимости Meltdown и Spectre оказались намного серьезнее, чем это могло показаться на первый взгляд.

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

Объяснение от меня:
Процессор знает телефон Путина. Мы хотим вычислить его поциферно. Мы выкладываем десять листков бумаги на пол, на каждом из них написана цифра — предполагаемая первая цифра. Мы говорим процессору: если 100 поделить на 0 == 666, то пометь, пожалуйста, первую цифру телефона крестиком. Процессор начинает вычислять 100 / 0, а пока он этим занимается, чтобы не терять времени он делает более быструю операцию — узнает телефон, берет его первую цифру и заносит свой виртуальный карандашик над листком. Права доступа при этом не проверяются — это более долго, это можно сделать и потом.

Деление завершается с ошибкой, и поток, задавший неудобный вопрос будет убит. Но можно успеть создать ребенка, он же не будет ответственен за родителя, верно? Ребенок смотрит на десять одинаковых, непомеченных листков, и начинает командовать процессору метить поочередно все листки крестиком. Только к пометке одного из листков процессор будет готов, остальные будут метиться медленнее — их нет в кеше. Таким образом из побочного эффекта в виде скорости доступа мы можем получить информацию о чужом участке оперативки. К чему это приводит известно на примере Heartbleed.

На физическом уровне вместо операции записи (пометить крестиком) используется операция чтения (просто посмотреть на то что написано на листке). На моей машине воспроизводится. Уязвимо тотально все, что осталось целым пока непонятно. Железного фикса не сделать, как выпускать новые поколения процессоров я пока не понял. Софтовый фикс состоит в том, что после каждого прерывания зачищать кеш. Падение производительности при этом катастрофическое (5-30%).

Пока что не понятно можно ли воспроизвести эту дыру через javascript, но скорее всего можно. Так что уязвимы все устройства, где есть браузеры. Особо уязвимы хостеры виртуалок, потому что изоляции между виртуалками больше не существует.

Исходные статьи дублирую здесь: spectre, meltdown.

Пущинская новогодняя олимпиада 2017

Неделю назад провели нашу очередную олимпиаду. На этот раз по новым правилам, но вроде бы получилось неплохо. Самая сильная сюжетная линия из всех, которые у нас были, да и самих задач целых 12 штук. 3 города — Пущино, Дубна и Дмитров. В двух лигах из трех Пущино победило.

Отказывало все подряд, все некритично. Условия пришлось заливать на ftp сервер, что могло быть чревато, если бы мой сайт не был бы в white листе цензоров целиком. Уже после олимпиады починил в nginx’е отправку больших client_body_size. Это не лимит php, это что-то в nginx’e и wordpress’e.

Также после олимпиады я узнал, что одна из участниц написала несколько решений на бейсике, и они не скомпилировались. Еще бы — не настроено же совсем. Хотя наверное на какой-то из установок оно у меня и работало — я ни разу не проверял. С джавой было то же самое, только на ней еще никто не писал. С учетом того что девочка писала онлайн из дома, и у нее в конце каждой программы была пауза, то я ей пересчитал баллы вручную неофициально. Вся цель нашей олимпиады в том чтобы ловить подобных детей и показывать им каким интересным может быть этот мир. Шестой класс, надеюсь она еще вернется с нормальным языком.

Еще я первый раз увидел участника из четвертого класса. Не знал что так бывает, но времени у него, конечно, еще много.

О последних нескольких неделях

Случился неожиданный форс-мажор из-за гранта. Пришлось брать отпуск, и пытаться в срочном порядке со всем разобраться. Удалось лишь частично: нагенерил тестов под пару своих задач на олимпиаду, убрался в квартире и сделал все что смог по гранту, пока не уперся в бюрократию. На RussianAICup времени не было, причем совсем. Только сейчас окончательно со всем разобрался, и вновь вернул себе способность соображать, не вздрагивая от звука пришедшего письма.

Я хотел бы сказать, что больше никогда и ни при каких обстоятельствах не свяжусь с грантами от нашего великого и могучего государства, но это не так. Наверное об этом как-нибудь потом напишу и, скорее всего, напрямую на geektimes.

В это воскресенье будем проводить нашу новогоднюю олимпиаду в гимназии. На этот раз будут новые правила, и совсем топовые задачи.

Собираю ЗиЛ-131, по скорости примерно как у академика — с середины августа где-то процесс идет.

Russian AI Cup

Каждый год господа из mail.ru придумывают очередную игру для соревнования стратегий.

Я участвовал в CodeTanks, но с аккаунта, который уже не существует. Место у меня там было в районе 500ого, но всех знакомых я тогда обогнал.

Я участвовал в CodeTroopers, но тогда мне не было 18, и претендовать на призы я не мог. Что, впрочем, не помешало мне получить футболку и забрать места из начала второй сотни.

Я формально участвовал CodeHockey, но так и не научился забивать шайбы в ворота, так что у меня быстро исчез интерес.

Я участвовал в CodeRacing, но моя стратегия была всего лишь заглушкой. Мне тогда было очень весело получать свою футболку на соплях — это было крайне высокое отношение цена/качество. Тем не менее, я до сих пор жалею, что не отправился за первым местом. Моих знаний и навыков хватило за то чтобы потолкаться в финале, генетический алгоритм для поиска оптимальной траектории это вполне по мне. Но тогда катастрофически не хватало времени.

Я не участвовал в CodeWizards, потому что Дота — вселенское зло, и ее отголоски надо презирать и уничтожать. Короче, было неинтересно.

Я не собирался участвовать в CodeWars. Мне было непонятно какую стратегию писать. Но меньше чем за неделю до первого раунда я посмотрел на количество участников — чуть больше 500 — и решил отправиться за халявной футболкой. Простейшая заглушка дошла до ~220ого места, так что я остался вдохновлен. После этого рейтинг начал падать и грохнул кучу времени в Стратегию. Стратегия оказалась на редкость хреновой, допилить ее до конца я не успел, но времени грохнул тьму. В первом раунде вошел в топ-100.

Текущее состояние CodeWars. Несколько минут назад завершился первый раунд

Короче, я отправляюсь за толстовкой. Цель — попасть в топ-50. До встречи через 2 недели.

Железнодорожные катастрофы

Наверное больше года назад я перебрал все железнодорожные катастрофы в России/СССР. Сейчас что-то опять читал про монорельсы, вспомнил про них.

Самая запомнившаяся мне авария: Крушение на станции Каменская

Всегда поражает, когда совпадает сразу десяток невероятных событий, которые уже вместе приводят к необработанной ситуации.

Немного о маркетологах

Давно статью эту прочитал, но вчера на хабре мне еще раз про этих товарищей напомнили.

Кейс. Как силами интернет-рекламы продать 6 000 китайских наушников за месяц

Цитаты великих

На одном популярном ресурсе нашел красивый комментарий. Явно чья-то цитата, оригинал мне неизвестен, поэтому ссылку давать не буду.

Кто хочет, ищет возможность, кто не хочет, ищет причину

Школьная олимпиада по программированию 2017

В этот вторник провели школьную олимпиаду по программированию. Последние пару лет не проводили, потому что сил не было. Но тут спустили задачи сверху (о качестве публично высказываться не буду), так что решили залить на сервер, дабы не было всякой ерунды с ручным тестированием после олимпиады.

Арсений следил за всем на площадке, я же в Пущино не поехал, ибо мне сильно не понравились задачи. Следил за проведением из Москвы. Все прошло нормально.

Около 550 посылок. Я на этот раз сделал героический поступок — я посмотрел все прошедшие решения, и примерно половину зафейлившихся. На этих задачах конечно особо не разойдешься, но интересные посылки были.
Читать далее

МиГ29-СМТ

Мой первый полностью собранный и покрашенный самолет. На сборку ушло несколько дней, на покраску чуть больше. Аэрографа у меня нет, и я к тому же не художник, поэтому было очень сложно. Дико боялся испортить модель при покрытии лаком кисточкой, так что лаком в итоге не покрыл. В конце концов, краска держится хорошо.

Красил красками Мастер акрил. Комплект произведен отечественным производителем Звезда.

Читать далее