Yellow Leaf
42 subscribers
246 photos
120 links
Всякое около IT-шное.

Связь с автором: @moose_kazan
Download Telegram
Обнаружил в Debian интересное. С первого февраля apt не доверяет sha1-подписям. Но многие репозитории до сих пор используют sha1-подпись и при использовании apt такие репозитории игнорируются. Однако Discover из состава KDE абсолютно ничего не смущает и он вполне успешно использует репозитории с устаревшей подписью.

Отдельно интересен список репозиториев использующих устаревший алгоритм подписи. Среди них официальные репозитории Microsoft, Softmaker, Sublimetext, Яндекс, Окуляр-ГОСТ, DBeaver и многие другие. Т.е. в основном те, от кого меньше всего ждёшь такого спокойного отношения к безопасности.
Тут обнаружилось что пересланые в Max фоточки доступны по прямым ссылкам всем желающим. Пресс-служба мессенджера отбрехивается в духе "вывсёврёти". Защитники мессенджера настаивают что перебор всех вариантов слишком сложен и потому найти что-то затруднительно.

Я проверил и действительно можно достать прямую ссылку на картинку и картинка по ней доступна. Про возможность перебора ничего пока говорить не готов. Мне это не очень интересно.

Интересно другое: эдак ведь можно использовать Max как CDN: слать картинки друг другу и потом доставать на них ссылки и использовать. Не так удобно как в каком-то S3-совместимом хранилище, но зато бесплатно)

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

Reg.Ru рассылает своим клиентам письма с уведомлением о том что GlobalSign теперь выпускает сертификаты не на 365 дней, а на 199. И потому при оплате за год будут выпускаться два сертификата: первый на 199 дней, и второй ещё на 166 после окончания основного. Выглядит жутко.

По-моему это скрытая реклама letsencrypt)
Yellow Leaf
Тут обнаружилось что пересланые в Max фоточки доступны по прямым ссылкам всем желающим. Пресс-служба мессенджера отбрехивается в духе "вывсёврёти". Защитники мессенджера настаивают что перебор всех вариантов слишком сложен и потому найти что-то затруднительно.…
Попробовал передавать через Max файлы вместо картинок.

Плохая новость: файлы доступны по прямой ссылке вида:

https://fd.oneme.ru/getfile?sig=....&expires=1773273131002&clientType=6&id=351856972&userId=5179147

Хорошая: есть защита от перебора. При попытке перебирать идентификаторы получаем ошибку "invalid signature".

Но в любом случае получается есть возможность сформировать ссылку на какой-то зловред, которая будет открываться всегда. А доставлять её можно например в СМС. Ну или ещё как. Что очень и очень плохо.
Кейс с картинками в Max показал что не все разработчики знают как защищать картинки и прочие файлы от не санкционированного доступа в веб.

Тот же Telegram в веб-версии использует ссылки вида https://web.telegram.org/some-key и даже не смотря на статичность этого some-key доступ имеют только те кто должен его иметь. Сделать это можно по разному. Мне нравится вариант на базе nginx. Делается это примерно так:

1. Описываем именованный location с типом internal (доступ к таким location снаружи закрыт) примерно так:

location @private {
internal;
root /var/www/private;
}


Далее описываем основной location и правила рерайта в нём:

location / {
root /var/www/public;
rewrite ^/files/(.*) /getfile.php?key=$1 last;
}


PHP использовать не обязательно. Обработчик можно написать на чём угодно. Важно чтобы этот обрабтчик:

1. Находил по ключу в БД путь к файлу
2. Смотрел права доступа на файл в БД
3. Проверял имеет ли запрашивающий файл пользователь достаточно прав (на основе cookie и/или заголовков)
4.1 При отсутствии разрешения отдавал ошибку 403
4.2 При наличии разрешения отдавал заголовок:

X-Accel-Redirect: @private/path/to/file


Здесь используется фича прокси-модуля в nginx: заголовок X-Accel-Redirect не отправляется клиенту, а указывает серверу что отправить клиенту в качестве ответа.

Таким образом запрашивая ссылку https://your.domain/files/somekey пользователь либо получит ошибку 403, либо получит файл. При этом реальное местоположение файла раскрыто не будет и доступа по прямой ссылке не будет.

P.S. Если будет интересно расскажу как в таких системах реализуется загрузка файла и что делать если веб-приложение работает на одном домене, а хранилище файлов находится на другом.
👍1
По работе продираюсь через бот-API национального мессенджера. Уже завалил босса получил токен. Делюсь опытом.

1. Регистрируемся на платформе МСП
2. Указываем данные юрлица. Минимум ИП. Самозанятые - мимо.
3. Подтверждаем данные через госуслуги или один из банков на выбор. Выбор банков ограничен Сбером, Альфой и Т-Банком.
4. После подтверждения юрлица подаём заявку на создание бота
5. После ручной модерации ВОЗМОЖНО бот будет создан
6. В случае успеха на предыдщуем пункте получаем токен и приступаем к разработке.

Чтобы нам было веселее:
- Документация весьма поверхностная. К счастью есть готовые библиотеки для Typescript и Go. На последнем я как раз и пишу бота.
- Подтверждение юрлица: после регистрации на платформе надо перейти на госуслуги по ссылке с платформы и зайти с правами генерального директора. Никак иначе. Варианта отправить запрос на госуслуги чтобы гендир его там принял и подтвердил - нет. Поэтому пришлось согласовывать время и в четыре руки проходить авторизацию.
- Постоянно натыкаешься на сообщения "будет реализовано позже". Даже URL slug у бота нельзя задать.

P.S. Прошу прощения за обилие постов про национальный мессенджер. Просто последнее время на работе занимаюсь в основном им.
👍1👌1
Оффтоп

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

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

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

И вот недавно я вдруг понял: вот этим своим походом против новых вещей эти люди буквально мочатся против ветра, ведь чтобы они могли покупать что либо на вторичном рынке, кто-то должен покупать новые вещи.

И чё-т так грустно стало. Не знаю почему. Возможно потому что я опять разочаровался в умственных способностях большого количества людей.
😁1
Есть API, написанное на PHP и отдающее ответы в JSON. Есть клиент, написанный на Go. Время от времени клиент давится ответом. В лог падает такое:

json: cannot unmarshal number into Go struct field .data.attributes.code of type string


Изучение показало что проблема в типизации PHP. Вернее в практически полном её отсутствии. Функция json_encode в отсутствии строгой типизации пытается "думать на ходу", в итоге если строковое поле содержит только цифры - кодирует его как int, а если не только - то как строку.

При этом клиентская библиотека на том же PHP не видит никаких проблем и прожёвывает ответ. А вот Go с его строгой типизацией давится. Ищу решение.
Забавно что в PHP 8 (а может и 7) можно нормально генерировать json. И способ даже чем-то похож на Go)

Примерно так:

<?php

class MyClass {
public string $strVal = "";
}

$obj = new('MyClass');
$obj->strVal = "789";

print json_encode($obj);


Но почему-то таким путём идут далеко не все, предпочитая что-то такое:

<?php

print json_encode([ "strVal" => "789" ]);
В национальном мессенджере появился бот @id1658140062_bot, которому кидаешь адрес, а он возвращает ссылку на домовой чат.

Имеешь ли ты какое-то отношение к этому дому - никак не проверяется.

Представляю какие возможности для спамеров и прочих мошенников открывает этот бот.

Методом тыка обнаружил одно ограничение: с казанского IP бот выдаёт только ссылки на казанские чаты. Если у меня есть жильё в другом городе то похоже чтобы найти чат надо ехать в тот город и оттуда запускать бота)

Чатов частных домов к счастью (или к сожалению) там нет)
А помните те времена, когда в Windows встраивали Internet Explorer чтобы сразу после установки системы можно было скачать браузер?
Яндекс выпустил приложение Интернетометр для измерения скорости интернета на смартфонах с Android. В отличие от конкурентов приложение Яндекса не позволяет выбрать точку, до которой измеряется скорость. Тестирование всегда происходит до серверов Яндекса, которые входят в "белые списки" и работают даже при ограничениях интернета.

У нас в Татарстане во время ограничений сервисы не из "белого списка" продолжают работать, но скорость ограничивается до ~250kbit/s. В итоге хоть и со скрипом, но пользоваться можно.

Вчера немного проехался по Татарстану, Марий Эл и Чувашии и посмотрел как в реальности работают эти самые белые списки в других регионах. Теперь знаю что, например, приложение Ак-Барс банка не входит в "белые списки". Но зато Яндекс Интернетометр всю дорогу убеждал меня что у меня "Отличный интернет" и "Можно комфортно смотреть видео в 2K/4K".
Немного новостей: "Qt Book Reader 0.1.0". Подробнее: https://www.ylsoftware.com/news/773
Коды подтверждения в Max: они приходят и как будто это хорошо. Но в настольном приложении при нажатии на кнопку "Просмотреть код" получаем сообщение о возможности получения кода только в мобильном приложении. Ровно такая же история в веб-версии.

Сейчас по работе начинаем работу над мини приложением для Max и подозреваю что и там мне будет о чём рассказать.
👌1
Миниприложение в Max это по сути веб-приложение, которое открывается в webview внутри мессенджера. Это окно отличается от обычного браузера в основном наличием некоторых дополнительных JS-интерфейсов для взаимодействия с окружением.

Приложение у пользователя запускается напрямую с сервера разработчика. Таким образом:

1. Разработчик приложения видит реальный IP пользователя.
2. При ограничениях интернета миниприложения скорее всего работать не будут.

Чтобы всем было веселее нигде в документации эти два пункта не проговариваются и выясняются только методом научного тыка.
Вот и я увидел как взламывают национальный мессенджер.

От соседа пришло сообщение с просьбой "проголосовать за понижение налогов" и html-файл. Файл даже не пришлось скармливать антивирусу. Оказалось достаточно открыть в редакторе чтобы увидеть что в нём кроме редиректа на непонятную страницу ничего нет.

Эту страницу открыл в чистом браузере в песочнице и посмотрел что там. Там по классике: просят ввести номер от аккаунта чтобы проголосовать. Далее механика ясна.

Аккаунт соседа в мессенджере уже заблокирован. Попробую при встрече выяснить как он его будет разблокировать) Файл на всякий случай отправил в одну из антивирусных лабораторий.
Ну и в продолжение про мошенников в Max

В 9.22 отправил файл и в 9.57 получил письмо что запись в базу сигнатур добавлена. Лаборатории Данилова респект за оперативность.

А в какое дупло писать чтобы достучаться до поддержки Max пока не разобрался.
Что-то неожиданно спокойно я стал спать по ночам последние дни. Сегодня меня посетила мысль и быстрая проверка подтвердила догадку: сервер мониторинга не может отправить мне сообщение потому что стоит в РФ и не достукивается до Telegram.

К счастью критичных инцидентов за последние дни не было, только средние, не влияющие на общую картину. Но я всё равно немного расстроен. Ищу альтернативный канал отправки уведомлений. SMS - тупо дорого.

А кто как решает проблему уведомлений в наше не простое время?