Ivan's work&life thoughts
Open in Telegram
364
Subscribers
-224 hours
+17 days
+1030 days
Posts Archive
Красивая история про то, почему нельзя использовать email как id, если вы используете OAuth.
https://trufflesecurity.com/blog/google-oauth-is-broken-sort-of/
Кстати, забыл похвастаться.
Я заработал себе две новых CVE в библиотеке aio
http: CVE-2023-49082 и CVE-2023-49081.
В общем-то история достаточно забавная. Решил я значит сделать веб-таск и подумал что прикольно будет дать уязвимость, которая будет основана на CVE в библиотеке Celery, о которой я писал вот тут. Придумал, что дам гаджет — класс с RCE в обработке исключения. Ну и что дам какую-нибудь SSRF с CRLF инъекцией, чтобы можно было написать в Redis свой объект с этим исключением. Думал получится хороший медиум таск. Пока готовил задачку понял, что мне еще и нужна инъекция до заголовка Host, потому что Redis умеет детектить его и предотвращать атаку.
Ну и решил вечером покурить aiohttp, т.к. в стандартном клиенте и requests найти баг сильно сложнее, да и я хотел написать на современном асинхронном питоне.
И буквально через час-два я нашел 2 бага. Оба можно посмотреть на гитхабе, но я напишу тут TLDR.
Первый баг — буквально классика CRLF, передать \r\n в метод (GET, POST, DELETE). Такое находили во многих библиотеках, которые позволяют указывать метод как строковый параметр.
Второй баг уже прикольнее. Разработчики aiohttp решили что удобно будет сделать версию HTTP как NamedTuple с двумя полями (major, minor). Например, в коде библиотеки можно найти вот такую константу:
HttpVersion11 = HttpVersion(1, 1)При создании запроса первая строчка задается как
status_line = "{0} {1} HTTP/{2[0]}.{2[1]}".format(
self.method, path, self.version
Без валидации. В общем-то хороший пример что питоновской системе типизации доверять не стоит, потому что в качестве NamedTuple можно передать любой массив (например JSON-decode от пользовательского ввода).
Патч можно посмотреть вот тут.
В итоге второй баг пошел прямо 0-дэйем на соревнования, и таск резко превратился в сложный. Его решила одна команда и я был очень рад этому. Посмотреть таск и райтап можно тут.
Мне этот опыт показал, что искать баги на самом деле не так сложно. Казалось бы, библиотека c огромной пользовательской базой, но через час-два просмотра было найдено 2 уязвимости.
В прошлом году ради задачи я нашел одну CVE, в этом году нашел две. Буду надеяться, что в следующем году найду еще больше 🙂Вчера было ровно 2 года, как мы с женой переехали в Ирландию.
Пост годичной давности можно найти здесь.
В первую очередь мы переехали в Ирландию из-за моей работы, поэтому начну с нее. Буквально месяц назад я получил долгожданное и заслуженное повышение. Буду честен, если бы его не было, я всерьез бы рассмотрел возможности уйти из Гугла или даже уехать в другую страну. Но я здесь. Мне нравится моя команда и то, что я делаю, а еще я очень люблю наш офис: там есть качалка, бассейн и вкусная еда – было бы сложно с этим расстаться.
Почему иногда хочется уехать?
1. Жилищный кризис — мы живем в хорошей, но маленькой квартире и не рассматриваем варианты переехать в другую. Почему? Потому что, цены на аренду даже таких же квартир (по площади и качеству) могут быть сильно выше. Причина в том, что гос-во пытается (у него это не очень получается) регулировать цены и не разрешает повышать ренту больше, чем на несколько процентов в год. Однако это плохо работает, если вы заключаете новый контракт, и получается что гораздо выгоднее сидеть в одном жилье годами. Единственный выход: ипотека, но об этом в другой раз.
2. Визы. Напоминаю, что Ирландия в ЕС, но не в Шенгенском союзе. Из-за этого нам нужно получать визы, а это всё сложнее и сложнее с каждым разом. И даже в UK нужна виза, да. На данный момент, у меня есть шенгенская виза еще на один год, и я очень надеюсь, что потом я смогу получить как минимум еще на один год, но уверенности в этом нет никакой.
3. Зарплаты и налоги. Налоги всё ещё большие, зарплаты хоть и тоже большие, но учитывая налоги и аренду жилья, SWE в Гугле в Ирландии может получать меньше, чем программист в условном Яндексе (на пересчет).
4. Права на вождение авто. Да, я в Ирландии два года, и у меня всё ещё нет прав. Виной тому: очереди на сдачу в год (лично я ждал больше полугода), очереди на пересдачу (жду 3-й месяц пересдачу), и тот факт, что система для сдачи на права тут совсем не готова к тому, что бывают мигранты. И я не был бы так расстроен, если бы не факт, что некоторые категории граждан и мигрантов могут ездить тут по своим правам, и им не нужно тратить 1000+ евро и год+ времени на этот прекрасный процесс. И я бы понял, если бы тут всем нужно было сдавать на права, или бы везде в ЕС не принимали права из РФ, но нет. В некоторых странах ЕС права прекрасно меняют без пересдач.
5. Работа. К сожалению, в Ирландии не так много мест, куда можно пойти работать после Гугла и получить больше денег/плюшек. Да, такие места есть (привет, трэйдинг), но их мало. Так что да, хорошо что мне не хочется уходить из Гугла.
Но почему остаемся ?
Гражданство. Ирландия дает гражданство через 5 лет легального проживания в стране. Осталось прожить всего 3 года, что звучит не так уж и долго, а ирландский паспорт был бы не лишним.
Люди. Мы нашли тут классных друзей и будет грустно покидать их. Мы уже проходили через такой опыт 2 года назад, и этот тот случай, когда не можем повторить.
Ощущения. В Ирландии ощущается спокойно и комфортно. И я верю, что страна может стать еще лучше, спокойнее и богаче, на это есть все возможности.
Природа, климат. Тут очень красиво, жду не дождусь, когда у меня всё-таки будут права и мы исследуем этот и соседний остров вдоль и поперек.
Язык и культура. Быть уверенным, что тебя поймут - огромный плюс в эмиграции. Мне нравится ирландская культура и как люди тут относятся к друг другу.
Ну и вообще, Ирландия — это очень “ламповая” страна. Да, тут бывает холодно и мокро. Да, тут бывают суровые ветра. Да, тут дорого. Да, тут нет метро. Но я смотрю на море, пока еду на работу в электричке. Я могу зайти после хайка выпить свежее местное пиво в паб, который старше всех сталинских высоток, где камин грел ещё ирландских революционеров. А дальше объяснять сложно, нужно сюда приехать, чтобы понять как оно. Кстати, приезжайте, я напишу приглашение на визу.
Нужен git web ui ? А как насчет стандартного ? Try `git instaweb`.
Слышали о таком ?
Все-таки этот канал не только про CTF.
Ровно месяц назад с кайфом сходили на концерт Noiзе MC.
Я не ожидал, что Ваня приедет к нам с группой, но приехал! И отлично выступил!
Мне прям всё понравилось: звук, репертуар, как ребята играют.
Конечно немного сюрр думать о том, что в РФ наверное у них таких маленьких концертов не было несколько лет, так что можно сказать, что у нас был даже эксклюзив.
Теперь надеюсь и жду, что к нам приедут мои любимые Anacondaz 🤘
В жизни и карьере происходит очень много всего, но писать пока не успеваю. Так уж вышло что этот канал во многом про CTF, так что вот вам контент.
На прошлой неделе мы проводили отборочный этап на Кубок CTF. В итоге пришлось писать постмортем.
Вообще постмортем культура — это очень правильная вещь, потому что учиться на чужих ошибках дешевле, чем на своих.
В общем спасибо Роме за написание постмортема:
https://pomo-mondreganto.notion.site/CTFCup-2023-Quals-Postmortem-c0ad960527694d3eadd7e492487de890?pvs=4
https://www.youtube.com/watch?v=HFeD4kYcW7A
Болеем за котов в гранд-финале Google CTF.
PS: первый раз, когда в финале играет команда из РФ.
Repost from Заметки Слонсера
Прямо сейчас в стране восходящего солнца проходит Google CTF 2023. По результатам 1 дня C4T BuT S4D - топ 1 в групповом этапе.
Почему я задал этот вопрос? Потому что, сам я пользуюсь LLM раз в неделю или реже.
При этом я уже не могу представить себе разработку без Copilot (и внутреннего аналога в Google). Хоть и иногда они предлагают мне полную дичь, модели помогают быстро написать кучу boilerplate кода или тестов.
Но вот конкретно ChatGPT/Bard я использую редко. Сейчас моя работа (в основном) это писать код и документы (архитектура). Для написания кода мне помогают autocomplete модели (а-ля Github Copilot). К сожалению, LLM еще ни разу не помогло мне при составлении рабочих документов, LLM прекрасно помогают писать воду, но по работе мне обычно нужно выдать чистую базу — донести свою мысль, потратив при этом минимум времени другого человека.
Иногда я использую LLM для создания очень красивых polite имейлов на английском или других нетехнических текстов.
Для pet-проектов или CTF-задач я могу воспользоваться генерацией кода от ChatGPT/Bard, но опять же не более раза в неделю.
Интересно, как вы используете LLM? Особенно те, кто пользуются каждый день.
Так почему не поехали-то?
Напоминаю, что соревнования проходят в США. Среди русской части команды визу получить смог только я (скорее всего потому, что живу не в РФ). Получить визу я смог за месяц до соревнований, и где-то за 2 недели до соревнований я узнал, что я единственный из команды, кто получил визу.
Билеты в США дорогие (за 2 недели-то), желания ехать одному было крайне мало.
Вот так вот можно скучно “забить” на почти мечту.
Меня немного успокаивает тот факт, что соревнования прошли плохо: были проблемы с сетью и задачи далеко не лучшего качества. Мы помогали китайской части (они получили визу) смотреть сервисы удаленно, и в итоге в финале наша сборная заняла 7-е место.
Но всё равно, мы скорее получили негативный опыт от соревнований. Если бы я потратил много денег и сил (перелет, отгул с работы) ради такого соревнования, я бы пригорел.
Я надеюсь, что это не последняя возможность для нас попасть на DEF CON. Да и есть много других крутых CTF’ов. Например, сейчас часть нашей команды (без меня) поехала в Японию покорять финал Google CTF. Пожелаем парням удачи!
Как я (мы) не съездили на главный CTF.
Название поста - кликбейт, сейчас объясню. Привычно, что в командном спорте есть какое-то главное международное соревнование. В спортивном программировании это ACM ICPC, в футболе это чемпионат мира или лига чемпионов.
В CTF’е технически такого нет. CTF соревнования достаточно децентрализованы и только в последнее время начало появляться что-то похожее на централизованные международные соревнования (ICC). Однако самым желанным и популярным соревнованием можно назвать DEFCON CTF. Почему DEF CON? Потому что он самый старый, а если точнее - первый. CTF появился как соревнование в рамках конференции DEF CON в 1996 году. Еще даже не было гугла, но уже был DEFCON CTF. И вот с тех пор каждый год в рамках конференции в Лас-Вегасе проводили соревнование. На DEFCON’е считай нет призов (специальный badge и ‘eternal glory’), организаторы не оплачивают перелет. Но большинство CTF’еров назовет это главным CTF’ом в году (вот так надо делать маркетинг!). В последнее годы, чтобы отобраться на дефкон недостаточно быть сильной командной, надо быть объединением сильных команд (см. картинку).
Мы несколько раз пытались сделать стак из нескольких RU-команд для отбора. В этом году мы попробовали объединиться с китайский брат китайской командой r3kapig в P1G BuT S4D. Мы потренировались на Plaid CTF (заняв там третье место) и смогли отобраться на дефкон.
Конторе, в которой я работаю, исполнилось 25 лет.
Если интересно, посмотрите эту прекрасную страничку! Мне очень нравятся такие видео, ну и на эволюцию логотипов тоже можно позалипать.
https://blog.google/inside-google/company-announcements/google-25th-birthday/
А вообще, конечно страшно представить, как поменялся наш мир за эти 25 лет. Если интересно узнать больше про годовщину Гугла, посмотрите остальные 9 статеек.
А я постараюсь ещё рассказать как мы праздновали внутри 🙂
Придумываю задачи сейчас на следующий CTF, думаю "А дай ка проверю вот эту штуку".
Результат - за час нашел 2 бага в двух крайне популярных библиотеках на питоне.
Баги не критичные, но кажется после CTF'а я отправлю pull-request 🙂
Природа настолько очистилась, что я стал соавтором реверс таска на brics+ CTF.
Вообще когда-нибудь я напишу большой пост о том как делать и не делать CTF’ы. У меня накопилось немного опыта и может кому-то будет интересно получить выжимку из него.
Пришло время обсудить действительно серьезные вещи.
Pumpkin Spice Latte - оверхайпед говно.
Для тех, кто не в теме — в старбаксе есть сезонное осеннее меню, и куча чуваков в тиктоке и ютубе прям ждут появление этого меню. Ведь там есть пряный тыквенный латте.
Для меня это были выброшенные 5 евро. Это просто очень сладкий кофе с молоком и легким привкусом каких-то специй. Я хз как они это пьют, я это допить не смог.
Вы можете спросить: “Ну а чего ты ждал от старбакса?”. Казалось что старбакс прям известны за свои вкусные кофейные напитки (не сам кофе) и они такое умеют делать.
Мой вердикт — лучше взять Turmeric Latte в какой-нибудь ЗОЖ-кофейне, а не пить это.
[СОЦОПРОС] Как вы комментите условия ?
Большая часть моей аудитории — программисты (вроде бы). Хочу узнать как вы комментируете свой код:
A: сначала if, потом коммент.
if (dayOfWeek == Day.Friday && day == 13) {
// No action should be performed on Friday 13th.
…
}
B: сначала коммент, потом if.
// No action should be performed on Friday 13th.
if (dayOfWeek == Day.Friday && day == 13) {
…
}А я тут в Стокгольм сгонял. Естественно на CTF.
Соревнования называются Midnight Sun CTF, и в этом году C4T BuT S4D смогли отобраться академическим составом (только студенты и школьники), но с академическим составом мог поехать ментор. Ментор может быть не студентом, не может решать задачи напрямую (сидеть за своим ноутом), но можно было помогать советом и так сказать направлять. Вот так я оказался в Стокгольме вместе с молодыми и мощными игроками CBS. В итоге ребята заняли 7-е место что очень хороший результат, учитывая что среди академических команд они заняли второе. Соревнование длилось 24 часа и на ночь организаторы оставили нас одних в центре Стокгольма с кучей редбулла. На самом деле соревнование очень понравилось — практически идеальная организация и интересные задачки. Дали много классного мерча, вкусно кормили и поили, дали хорошую гостиницу. Надеюсь что в следующем году C4T BuT S4D приедет взрослым составом и заберет призовое место.
