Search
Write a publication
Pull to refresh
51
56.1
Иван Зубов @posthedgehog

Системный программист

Send message

Берём анализы на болезни TLS у Гемотеста

Level of difficultyEasy
Reading time5 min
Views5.6K

17 июля я сдал анализы крови в компании Гемотест. Спустя полтора дня мне пришёл email с результатами на адрес, который я указал перед сдачей. К счастью, с анализами было всё хорошо: у меня нет ВИЧ, гепатита B, гепатита C, сифилиса, ура! PDF с анализами было заверено приложенной электронной подписью с инструкцией по проверке. Было внутри даже такое:

УВЕДОМЛЕНИЕ О КОНФИДЕНЦИАЛЬНОСТИ: Это электронное сообщение и любые документы, приложенные к нему, содержат конфиденциальную информацию. Настоящим уведомляем Вас о том, что если это сообщение не предназначено Вам, использование, копирование, распространение информации, содержащейся в настоящем сообщении, а также осуществление любых действий на основе этой информации, строго запрещено. Если Вы получили это сообщение по ошибке, пожалуйста, сообщите об этом отправителю по электронной почте и удалите это сообщение.

А потом ещё и то же самое на английском. Ну кайф. Вроде всё хорошо, можно не волноваться. Но одна вещь всё-таки лишила меня покоя.

Замочек. Красный. Перечёркнутый.

Слишком уж «Быстрый вход» в приложение Т-Банк на Android

Level of difficultyEasy
Reading time3 min
Views73K

Последние несколько лет я являюсь клиентом Т-Банка (в девичестве Тинькофф Банк) и использую их Android-приложение, наверное, каждый день. В декабре я обновил его из Huawei AppGallery, и что-то изменилось в моём пользовательском опыте… Мне стало казаться, что меня стали как-то слишком редко спрашивать отпечаток или PIN после запуска приложения тапом по иконке или по уведомлению. Так произошло раз, два, пять, и я невольно обратил на это внимание. А поскольку моя работа связана с информационной безопасностью, я решил немедленно настучать на плохое поведение разработчикам, тем более у них есть программа bug bounty.

Сказано – сделано. Это было кринжевато, так как я не был на 100% уверен в своих словах, но я всё же написал о том, что меня как-то редко стали спрашивать отпечаток/PIN. У меня была включена опция «Быстрый вход», которая в приложении объяснена так: «Если вы используете отпечаток пальца или скан лица, у вас будет 5 минут, чтобы зайти в Т-Банк без авторизации». Без этой опции поведение было ожидаемым: каждое открытие приложения просило отпечаток/PIN, а вот с ней… Когда я думал, что отпечаток/PIN не нужен, то он не был нужен; когда я думал, что он нужен, он обычно почему-то был не нужен.

Стал я экспериментировать, чтобы у меня был более членораздельный отчёт. Мой телефон разблокировался по отпечатку пальца или PIN, и внезапно оказалось, что «Быстрый вход» в приложении Т-Банка означает не то, что я думал. Я-то, наивный, рассуждал просто: залогинился в приложение – можешь его закрыть, но в течение 5 минут тебя пустят обратно без вопросов (кэширование аутентификации в рамках приложения). Мне казалось, что приложение раньше всё время так и работало, примерно до декабря. А теперь я наблюдал своими глазами нечто иное: если ты предъявил отпечаток для разблокировки телефона, то внезапно приложение Т-Банка будет пускать тебя внутрь без вопросов в ближайшие 5 минут!

Что скажут безопасники?

Отравляем кэш загрузок в Telegram для Android

Level of difficultyEasy
Reading time5 min
Views4.2K

В фильме “Матрица” есть мемная сцена, когда Нео замечает двух совершенно идентичных чёрных кошек, после чего его спутники говорят о “сбое в матрице”, который тут же выливается в полный расколбас. Пару недель назад я испытал подобное чувство deja vu тогда, когда меньше всего этого ожидал.

Мой друг Лёша Павлов пилит Android-приложение для подкаста “Теоэстетика”, и я вызвался помочь как альфа-тестировщик. Присылает он мне в Telegram файл theoaesthetics.apk размером 6,6 МБ, я его подгружаю в свой Telegram для Android, пытаюсь поставить, но системные настройки не позволяют. Сохраняю в папку “Загрузки”, пытаюсь поставить оттуда, да опять не выходит – наверное, у меня телефон слишком старый. Докладываю Лёше, он пересобирает приложение и присылает новый файл theoaesthetics.apk размером 5,6 МБ. Окей, скачиваю и пытаюсь поставить по той же схеме, но получаю тот же результат. И тут внимательный глаз замечает, что в папке “Download” лежит файл размером не 5,6 МБ, а 6,6 МБ. Ну ладно, не туда тапнул видимо. Скачиваю файл ещё раз и наяву наблюдаю: качаю файл размером в 5,6 МБ, а в папке лежит файл размером в 6,6 МБ. Окей, яжпрограммист, чищу кэш скачанных файлов, скачиваю правильную apk-шку, которая уже ставится и работает… Но ведь это же пренеприятный баг, сбой в матрице.

Следовать за белым кроликом

Баг в ядре Linux и как правильно жаловаться

Level of difficultyMedium
Reading time7 min
Views15K

Я работаю системным программистом в компании КриптоПро. Нередко мои задачи связаны с ошибками, которые лежат на самом нижнем уровне современных операционных систем, под которые мы пишем ПО. Я хочу поведать тебе, Хабр, об одной из таких ошибок и о том, как я жаловался на неё разработчикам.

Я отвечаю за поддержку одной из наших библиотек с C-интерфейсом, написанной на C и C++. Мой коллега из другого отдела сообщил, что его нагрузочный тест нашей библиотеки на C# в Linux выдаёт ошибку в хитром сценарии: нужно иметь два процесса по пять потоков, делающих некоторые идентичные вызовы. Если процесс один, а потоков много, то проблема не проявляется. Если процессов два, но в каждом по одному потоку, то проблема не проявляется. Путём просмотра исходников нагрузочного теста и логов работы библиотеки удалось перенести проблему в маленький юнит-тест на C++ с использованием нашего API.

Узнать, что же это было

Как *nix-сигналы позволяют читать память других процессов

Level of difficultyMedium
Reading time6 min
Views5.1K
Есть такая очень старая и вросшая в *nix с корнями штука под названием «сигналы». Идея этих примитивов очень проста: реализовать программный аналог прерываний. Различные процессы могут посылать сигналы друг другу и самим себе, зная process id (pid) получателя. Процесс-получатель волен либо назначить функцию-обработчик сигнала, которая будет автоматически вызываться при его получении, либо игнорировать его с помощью специальной маски, либо же довериться поведению по умолчанию. So far so good.

Поведение по умолчанию при получении сигнала… А что означают эти успокаивающие слова? Уверен, не то, что вы ожидали. Вики говорит, что обработчики 28 стандартных сигналов (существуют и другие!) по умолчанию таковы: 2 игнорируются, 4 вызывают остановку процесса, 1 – его продолжение, 11 – его завершение, 10 – его завершение с созданием дампа памяти. Вот это уже интересно! Итак, дело обстоит следующим образом: даже если ваша программа никак не упоминает сигналы в исходном коде, на самом деле она их использует, причём весьма драматичным образом.
Читать дальше →

Как я сделал себе менеджер паролей

Level of difficultyMedium
Reading time3 min
Views12K
Пароли — древнейший способ аутентификации в информационных технологиях, повсеместно использующийся и сегодня. Увы, просто невозможно держать в памяти пароли для всех Интернет-ресурсов при условии, что все они будут разными и сложными! Тут на помощь человеку приходят менеджеры паролей, берущие эту задачу на себя: человек запоминает всего лишь один мастер-пароль, дающий доступ ко всем остальным.

Мне не нравились существующие менеджеры паролей: неудобно синхронизировать базу паролей между различными устройствами и операционными системами, к тому же, зачастую программы-менеджеры откровенно плохо защищены. Однажды я читал статьи по криптографии, и мне пришла в голову мысль: а почему бы не сделать менеджер паролей, который вместо хранения паролей будет вычислять их?
Читать дальше →

Как я нашёл уязвимость в QIWI и заработал $200

Level of difficultyEasy
Reading time2 min
Views9.9K
Когда-то давно я мечтал стать специалистом по информационной безопасности и усердно ковырял разные веб-сайты на предмет уязвимостей. Моей самой большой победой стало нахождение уязвимости в платёжной системе QIWI, за которую добрые разработчики отсыпали мне 200 долларов. В итоге обнаруженная проблема была решена лишь спустя 3.5 года после жалобы, и после этого о ней стало можно поведать Вселенной. Забавный момент заключается в том, что я обнаружил эту уязвимость совершенно случайно, и на моём месте запросто мог быть ты.
Читать дальше →

Итоги двух лет изучения «Structure and Interpretation of Computer Programs»

Level of difficultyEasy
Reading time5 min
Views18K


Я считаю, что разработка ПО в значительной степени заключается в программировании на псевдокоде. Если ты представил псевдокод, то перевести его на Python, C, что угодно — не проблема. Основная сложность заключается вот в этой концептуальной деятельности, а не в кодировании. Нужно знать, как подходить к тем или иным вопросам. Модульность, абстракция. Гибкость, надёжность, простота. Шаблоны проектирования. Юнит-тестирование. Ю ноу.

Есть на свете курс «Структура и Интерпретация Компьютерных Программ» (далее СИКП), который позиционируется как введение в Computer Science и ранее использовался в MIT для обучения первокурсников. Два года назад я с удовольствием одолел курс лекций по нему и взялся за книгу.
Читать дальше →

Information

Rating
297-th
Location
Балашиха, Москва и Московская обл., Россия
Registered
Activity

Specialization

System Software Engineer