Ну что-ж, докладываю. Посмотрел пока поверхностно бету 22.3.0.2185, но результаты такие:
1) 2750 - без изменений. Просто повторил действия из своего последнего письма и все отработало.
2) 2798 - вижу исправление. Вот тут готов сказать, что вижу реальную попытку исправления. Nice try, так сказать. Обошел полутора способами. Так что пока не исправили.
3) Нашел третью уязвимость.
А теперь еще все это перепроверять, добивать второй обход 2798, вам в тикеты описывать, видео клепать, PoC'и рисовать...
С моей стороны это выглядело больше похоже на попытки впихнуть все больше и больше костылей, и сломать эксплоит, а не исправить уязвимость, но вам там виднее.
Предостерегу тех, кто хочет установить Яндекс.Браузер. Разработчики уже больше года не могут устранить две уязвимости, которые я им передал. Так что, с моей точки зрения, установка Яндекс.Браузера равносильна добровольной установке пары бекдоров.
Подсказка про Word больше сбивала, чем помогала. Я начал проверять, что может дело в каких-то вещах, которые текстовый процессор удобнее - подсчет слов, игра со шрифтами (мало ли что интересного можно увидеть в шрифтах Webdings или Wingdings).
Как забавный вариант я рассматривал замену четных цифр на один символ, а нечетных на другой. Вот где-то рядом уже было обнаружено числа 2009 и полноценное решение.
Итого по 5 минут на прочие задачи и полчаса на этой.
За идею статьи ставлю плюс, а за реализацию - минус.
1) В std::string bignum::getValue() сразу стреляем себе в ногу создавая переменную _value перекрывающую поле класса.
2) Продолжаем рубрику вредные советы кидая исключение в конструкторе. Причем, с неинформативным сообщением. Вот что должен понять программист, увидев "-123 it's not a number"? Ведь, как раз -123 число.
3) Зачем перегружаем конструктор и для const char* и для std::string? Сами прямо задаете этот вопрос, но отвечаете мимо. Конструктора с std::string вполне хватило бы.
Автор , если вы раскопали логику правил проверки, то логичнее было бы подбирать числа не перебором всех, а подбирать конкретные цифры.
Смотрим на последнее правило (разница в 4) - пары простые 04, 15, 26, 37, 48, 59 Для каждой из этих пар определена шестая цифра, значит легко подобрать все пары к ним для второго правила (перебираем третью цифру, вычисляем вторую).
Так за ~60 итераций мы узнали все возможные цифры на четырех позициях. Третье правило дает, что 4 и 8 цифра не должны быть одновременно нечетными. Проверим 100 комбинаций, получим 75 пар.
За 60*75 итераций мы получаем все цифры на шести позициях. Для каждой добавляем еще проверку перебором пятой позиции (она в правилах не фигурирует) и первой, проверяя делимость. Итого ~450000 итераций против ~100000000, а это два порядка.
Это вопрос того, как определять термины. Например, не смотря на слово "шифр" в названии "шифра Цезаря", мое лично отношение к нему больше как к кодированию, нежели к шифрованию. А задача кодирования - это более "удобное" представление, нежели конкретно защита от ошибок.
Ну, например, давайте посмотрим на C:\Program Files (x86)\LiteManager Pro - Server\ROMFUSClient.exe. Этому файлу выдаются разрешения на полный доступ для всех, а код этого файла исполняется с высокими правами как дочерний от сервиса.
GPD Pocket
Ну что-ж, докладываю. Посмотрел пока поверхностно бету 22.3.0.2185, но результаты такие:
1) 2750 - без изменений. Просто повторил действия из своего последнего письма и все отработало.
2) 2798 - вижу исправление. Вот тут готов сказать, что вижу реальную попытку исправления. Nice try, так сказать. Обошел полутора способами. Так что пока не исправили.
3) Нашел третью уязвимость.
А теперь еще все это перепроверять, добивать второй обход 2798, вам в тикеты описывать, видео клепать, PoC'и рисовать...
С моей стороны это выглядело больше похоже на попытки впихнуть все больше и больше костылей, и сломать эксплоит, а не исправить уязвимость, но вам там виднее.
Да, я проверю в свободное время.
Подробности будут либо когда все будет исправлено, либо когда будет очевидно, что ответа нет смысла ждать.
29 января 2021 BOUNTYREPORT-2750
13 февраля 2021 BOUNTYREPORT-2798
Почта - мой ник yandex.ru
Предостерегу тех, кто хочет установить Яндекс.Браузер. Разработчики уже больше года не могут устранить две уязвимости, которые я им передал. Так что, с моей точки зрения, установка Яндекс.Браузера равносильна добровольной установке пары бекдоров.
У пузырьковой сортировки меняются местами соседние элементы, а тут два независимых индекса.
Как и большинство я застрял на задаче с 2009.
Подсказка про Word больше сбивала, чем помогала. Я начал проверять, что может дело в каких-то вещах, которые текстовый процессор удобнее - подсчет слов, игра со шрифтами (мало ли что интересного можно увидеть в шрифтах Webdings или Wingdings).
Как забавный вариант я рассматривал замену четных цифр на один символ, а нечетных на другой. Вот где-то рядом уже было обнаружено числа 2009 и полноценное решение.
Итого по 5 минут на прочие задачи и полчаса на этой.
Довольно приятный квест, немного пошевелить мозг было хорошо.
Вопрос в имени переменной. Вы дали одинаковые имена переменной во внутренней области видимости (функция) и внешней (класс). Написали бы проще.
Вам бы еще нормализацию прикрутить к вариантам типа "-00000".
Нет, это вопрос к вам.
UPD: третий вопрос снимается, я понял, что вы хотели сделать.
За идею статьи ставлю плюс, а за реализацию - минус.
1) В std::string bignum::getValue() сразу стреляем себе в ногу создавая переменную _value перекрывающую поле класса.
2) Продолжаем рубрику вредные советы кидая исключение в конструкторе. Причем, с неинформативным сообщением. Вот что должен понять программист, увидев "-123 it's not a number"? Ведь, как раз -123 число.
3) Зачем перегружаем конструктор и для const char* и для std::string? Сами прямо задаете этот вопрос, но отвечаете мимо. Конструктора с std::string вполне хватило бы.
Спасибо. Рано или поздно будет еще.
Автор , если вы раскопали логику правил проверки, то логичнее было бы подбирать числа не перебором всех, а подбирать конкретные цифры.
Смотрим на последнее правило (разница в 4) - пары простые 04, 15, 26, 37, 48, 59 Для каждой из этих пар определена шестая цифра, значит легко подобрать все пары к ним для второго правила (перебираем третью цифру, вычисляем вторую).
Так за ~60 итераций мы узнали все возможные цифры на четырех позициях. Третье правило дает, что 4 и 8 цифра не должны быть одновременно нечетными. Проверим 100 комбинаций, получим 75 пар.
За 60*75 итераций мы получаем все цифры на шести позициях. Для каждой добавляем еще проверку перебором пятой позиции (она в правилах не фигурирует) и первой, проверяя делимость. Итого ~450000 итераций против ~100000000, а это два порядка.
Это вопрос того, как определять термины. Например, не смотря на слово "шифр" в названии "шифра Цезаря", мое лично отношение к нему больше как к кодированию, нежели к шифрованию. А задача кодирования - это более "удобное" представление, нежели конкретно защита от ошибок.
edgegdi.dll
COM Hijacking
COR_PROFILER, COR_ENABLE_PROFILING
Было бы желание, а обеспечить Persistence, незаметный для autoruns, несложно.
Не забывайте батарея медведица и чечевица.
Пожалуйста, читайте внимательнее. Права доступа на этот файл какие? Я вам точно могу сказать, что у нормальных программ они нормальные.
Ну, например, давайте посмотрим на C:\Program Files (x86)\LiteManager Pro - Server\ROMFUSClient.exe. Этому файлу выдаются разрешения на полный доступ для всех, а код этого файла исполняется с высокими правами как дочерний от сервиса.