В свежей бете телеги интересное обновление есть:
теперь можно смешивать жирный, курсив, подчеркнутый?,зачеркнутый?
Жирный + курсив = жирный курсив.
Жирный + подчеркивание = жирное подчеркивание
Подчеркнутый курсив...
Жирный подчеркнутый курсив?
Жирный подчеркнутый зачеркнутый курсив!
А вот с
теперь можно смешивать жирный, курсив, подчеркнутый?,
моношир?Жирный + курсив = жирный курсив.
Жирный + подчеркивание = жирное подчеркивание
Подчеркнутый курсив...
Жирный подчеркнутый курсив?
А вот с
моноширом не работает(Необычный дуалбут: ноутбук с «двойным дном»
Внезапно, весьма приличная техническая статья на хабре.
Хайлайты: ручками дергаем ATA, реверсим, а потом и патчим прошивку контроллера жесткого диска в памяти, отлаживаем UEFI, пишем уефишный драйвер...
Внезапно, весьма приличная техническая статья на хабре.
Хайлайты: ручками дергаем ATA, реверсим, а потом и патчим прошивку контроллера жесткого диска в памяти, отлаживаем UEFI, пишем уефишный драйвер...
Хабр
Необычный дуалбут: ноутбук с «двойным дном»
Не так давно на Habr Q&A я наткнулся на интересный вопрос — как сделать, чтобы два жестких диска не видели друг друга? Чтобы вирус, попав на одну систему, никоим образом не мог заразить другую. В...
Вечерний вопрос от санитара: каким образом надо комментировать атрибуты классов в python, чтобы VSCode+pylance научился рисовать доки к ним?
Имеющиеся варианты:
1)
Имеющиеся варианты:
1)
class Test:2)
""" class docs """
field: str # docs
class Test:3)
""" class docs """
field: str
""" docs """
class Test:Все три, очевидно, не работают)
""" class docs """
""" docs """
field: str
Forwarded from ZeroNights
CTF-команда kks совместно с новостным порталом CTF News предлагают небольшой хакквест, на котором можно почиллить, порешать таски и получить за это подарочки.
Таски готовы, можно решать! Ссылка на квест: zn.kksctf.ru
Таски готовы, можно решать! Ссылка на квест: zn.kksctf.ru
Прилетела новая бетка десктопной телеги: теперь можно смотреть, кто прочитал твое сообщения в небольших группах.
Что такое небольшая группа - вопрос отдельный, правда, учитывая, что разделение на группы и супергруппы, вроде, ушло в прошлое.
Работает в прошлое, кстати, где-то до 4-5 сентября.
Ну и записывать видосы разрешили (а то раньше при записи звонка на выходе было только аудио)
Что такое небольшая группа - вопрос отдельный, правда, учитывая, что разделение на группы и супергруппы, вроде, ушло в прошлое.
Работает в прошлое, кстати, где-то до 4-5 сентября.
Ну и записывать видосы разрешили (а то раньше при записи звонка на выходе было только аудио)
Продолжая нерегулярную рубрику "а че там с бетой телеги"
Прилетела версия 3.0.5 beta, в которой в дефолтной синей теме поменяли цвет некоторых элементов.
Слева - было; Справа - стало
Вариант вернуть старую синюю тему: t.me/addtheme/h9soEq0wbHH4Co9k. Можно скачать себе файлом и поставить независимую версию)
Прилетела версия 3.0.5 beta, в которой в дефолтной синей теме поменяли цвет некоторых элементов.
Слева - было; Справа - стало
Вариант вернуть старую синюю тему: t.me/addtheme/h9soEq0wbHH4Co9k. Можно скачать себе файлом и поставить независимую версию)
Yet another WSL2 trick
Если хочется получить доступ к сервису, запущенному во втором весле из локальной сети, а не только с тачки с самим веслом - пригодится https://github.com/CzBiX/WSLHostPatcher.
Суть - когда внутри второго весла открывается listen tcp-порт - небольшой бинарь, маппящий всякие взаимодействия между виндой и веслом - wslhost.exe - начинает слушать этот же порт на 127.0.0.1 в винде, фактически выступая в роли tcp-прокси между виндой и веслом.
В итоге для пользователя появляется прозрачный доступ к порту, открытому в весле, но из локалки он не доступен.
Всё, что делает вышеупомянутая утилита - патчит в памяти этот бинарь, чтобы он открывал соединения не на 127.0.0.1, а на 0.0.0.0, слушая его на всех интерфейсах.
Нашел давно, но думал, что это достаточно узкая и частная проблема, а внезапно оказалось, что это не так)
Если хочется получить доступ к сервису, запущенному во втором весле из локальной сети, а не только с тачки с самим веслом - пригодится https://github.com/CzBiX/WSLHostPatcher.
Суть - когда внутри второго весла открывается listen tcp-порт - небольшой бинарь, маппящий всякие взаимодействия между виндой и веслом - wslhost.exe - начинает слушать этот же порт на 127.0.0.1 в винде, фактически выступая в роли tcp-прокси между виндой и веслом.
В итоге для пользователя появляется прозрачный доступ к порту, открытому в весле, но из локалки он не доступен.
Всё, что делает вышеупомянутая утилита - патчит в памяти этот бинарь, чтобы он открывал соединения не на 127.0.0.1, а на 0.0.0.0, слушая его на всех интерфейсах.
Нашел давно, но думал, что это достаточно узкая и частная проблема, а внезапно оказалось, что это не так)
GitHub
GitHub - CzBiX/WSLHostPatcher: Dynamic patch WSL2 to listen port on any interface.
Dynamic patch WSL2 to listen port on any interface. - CzBiX/WSLHostPatcher
В продолжение извращений - есть маленький бинарь на rust, который транслируется все вызовы себя в git в весле.
https://github.com/andy-5/wslgit
У него довольно узкий юзкейс, но вдруг кому-то пригодится)
https://github.com/andy-5/wslgit
У него довольно узкий юзкейс, но вдруг кому-то пригодится)
GitHub
GitHub - andy-5/wslgit: Use Git installed in Bash on Windows/Windows Subsystem for Linux (WSL) from Windows and Visual Studio Code…
Use Git installed in Bash on Windows/Windows Subsystem for Linux (WSL) from Windows and Visual Studio Code (VSCode) - andy-5/wslgit
.рубик
Yet another WSL2 trick Если хочется получить доступ к сервису, запущенному во втором весле из локальной сети, а не только с тачки с самим веслом - пригодится https://github.com/CzBiX/WSLHostPatcher. Суть - когда внутри второго весла открывается listen tcp…
Небольшой upd к этому посту.
Как верно заметили в комментариях, этого же эффекта можно достичь через виндовую утилиту
Работает на какой-то магии внутри сетевого стека винды. На мой взгляд, не так удобно - это лишние правила непонятно чего, которые непонятно где лежат и непонятно когда появятся/отвалятся. Да и чисто одной командой это обычно не сделать, всё же нужен нормальный скрипт.
Как пример, полный такой скрипт, который достает айпишник весла (он меняется периодически, да, это отдельная головная боль) и создает правила для WFP - тут.
Однако!
Народ придумал ещё аж два способа выпихивать весло бриджем в реальную сетку: раз, два (описание второго).
Собственно, весьтред issue с обсуждением проблемы тут: https://github.com/microsoft/WSL/issues/4150
Как верно заметили в комментариях, этого же эффекта можно достичь через виндовую утилиту
netsh:netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=172.18.28.xРаботает на какой-то магии внутри сетевого стека винды. На мой взгляд, не так удобно - это лишние правила непонятно чего, которые непонятно где лежат и непонятно когда появятся/отвалятся. Да и чисто одной командой это обычно не сделать, всё же нужен нормальный скрипт.
Как пример, полный такой скрипт, который достает айпишник весла (он меняется периодически, да, это отдельная головная боль) и создает правила для WFP - тут.
Однако!
Народ придумал ещё аж два способа выпихивать весло бриджем в реальную сетку: раз, два (описание второго).
Собственно, весь
GitHub
[WSL 2] NIC Bridge mode 🖧 (Has TCP Workaround🔨) · Issue #4150 · microsoft/WSL
Issue WSL 2 seems to NAT it's virtual network, instead of making it bridged to the host NIC. My goal is for a service running in Ubuntu in WSL 2 to be accessible from anywhere on my local netwo...
Ещё одна фича особенность WSL2, о которой знают не все)
Каждый раз, когда второе весло запускается - создается новая hyper-v сетка.
Соответственно, и айпишник самого весла, и айпишник винды в этой сетке каждый раз разный.
В итоге, если надо из весла сходить на какой-то сервис (например, иксы) в винде - надо сначала сначала определить этот айпишник
Наиболее простой и стабильный способ это сделать - вот такой вот однострочник для баша, который дергает виндовый netsh.
После определения айпишника достаточно проверить, что сервис слушает не 127.0.0.1, а ip винды/0.0.0.0 - и всё, из весла можно на него сходить, других препятствий нет.
Каждый раз, когда второе весло запускается - создается новая hyper-v сетка.
Соответственно, и айпишник самого весла, и айпишник винды в этой сетке каждый раз разный.
В итоге, если надо из весла сходить на какой-то сервис (например, иксы) в винде - надо сначала сначала определить этот айпишник
Наиболее простой и стабильный способ это сделать - вот такой вот однострочник для баша, который дергает виндовый netsh.
export REAL_WSL_ADDR=`netsh.exe interface ip show ipaddresses "vEthernet (WSL)" | head -n 2 - | tail -n 1 | awk '{ print $2; }'`
Есть ещё один вариант, через /etc/resolv.conf - но у меня весло стабильно криво поднимает DNS, поэтому конфиг резолва со статикой, и этот вариант не подходит.После определения айпишника достаточно проверить, что сервис слушает не 127.0.0.1, а ip винды/0.0.0.0 - и всё, из весла можно на него сходить, других препятствий нет.
.рубик
Ещё одна фича особенность WSL2, о которой знают не все) Каждый раз, когда второе весло запускается - создается новая hyper-v сетка. Соответственно, и айпишник самого весла, и айпишник винды в этой сетке каждый раз разный. В итоге, если надо из весла сходить…
К слову о
Можно также выключить генерацию host'ов, например.
А о других настройках можно тут почитать, можно, например, отключить проброс виндовых бинарей и сломать штуку из предыдущего поста)
Also, там же, но чуть ниже, описано, как настроить то, как весло будет потреблять память.
resolv.conf - чтобы отучить винду от запихивания в весло своего DNS, а равно как и от автоматической генерации конфига при каждом запуске весла, надо прописать в /etc/wsl.conf сие:[network]И не забыть создать свой собственный
generateHosts = true
generateResolvConf = false
resolv.conf, а то весло больно умное, и всё равно будет пытаться создавать его.Можно также выключить генерацию host'ов, например.
А о других настройках можно тут почитать, можно, например, отключить проброс виндовых бинарей и сломать штуку из предыдущего поста)
Also, там же, но чуть ниже, описано, как настроить то, как весло будет потреблять память.
.рубик
Yet another WSL2 trick Если хочется получить доступ к сервису, запущенному во втором весле из локальной сети, а не только с тачки с самим веслом - пригодится https://github.com/CzBiX/WSLHostPatcher. Суть - когда внутри второго весла открывается listen tcp…
BTW, я форкал WSLHostPatch - https://github.com/Rubikoid/WSLHostPatcher, чтобы он пробрасывал только только один порт (захардкожено в коде. Можно сделать по-умному, с гуем и красивостями, но зачем.)
Ну и заодно впилил функцию eject'a патча, если он больше не нужен. Билдов правда нет, так что компилить придётся самому.
И, заканчивая пиар своего гитхаба - есть репо с дотфайлами, где в zshrc лежит ещё пара приколов с веслом, типа проброса SSH-агента от keepass'a внутрь весла.
Ну и заодно впилил функцию eject'a патча, если он больше не нужен. Билдов правда нет, так что компилить придётся самому.
И, заканчивая пиар своего гитхаба - есть репо с дотфайлами, где в zshrc лежит ещё пара приколов с веслом, типа проброса SSH-агента от keepass'a внутрь весла.
GitHub
GitHub - Rubikoid/WSLHostPatcher: Dynamic patch WSL2 to listen port on any interface.
Dynamic patch WSL2 to listen port on any interface. - Rubikoid/WSLHostPatcher
Очередной пост про весло.
На этот раз, правда, с болью: я запустилвесло или не весло, а сам пакман в результате потеряло часть системных файлов.
Их было достаточно много, при этом: например, bash или sudo просто не было, как таковых (они стали размером в 0 байт), а zsh ругался на:
В целом, из оставшихся доступных взаимодействий был маппинг весла по сети, был бинарь
Какое решение всей это проблемы вышло по итогу:
Качается сама либа из пакетов арча:
Либа распаковывается куда-нибудь, а дальше в проводнике открывается сетевой путь до
Распаковать сразу в
Дальше фикшу либу, и можно уже заходить в шелл.
Логичней всего это делать через пакман, но увы - пакман тоже умер, поэтому по старой схеме - качаем https://archlinux.org/packages/core/x86_64/krb5,
распаковываем, накатываем поверх системы.
Ура, пакман появился, но починить всё нам будет мешать неработащий
(можно прописать "
Теперь gpg полностью работает, и можно наконец перенакатывать все пакеты:
Последним этапом можно попробовать поискать по системе мертвые файлы через лютый
UPD: покопался у себя в event viewer, и похоже, что причиной этому был OOM - весло попросило слишком много памяти, и винда убила виртуалку. pacman такое переживает достаточно плохо.
UPDx2: В комментариях подсказали, что восстановление после такого краша описано на арчевики - если вкратце, то половину действий можно упростить при наличии
На этот раз, правда, с болью: я запустил
pacman -Syu, а Их было достаточно много, при этом: например, bash или sudo просто не было, как таковых (они стали размером в 0 байт), а zsh ругался на:
zsh: error while loading shared libraries: /usr/lib/libcap.so.2: file too short
Очевидно, либа тоже была 0 байт.В целом, из оставшихся доступных взаимодействий был маппинг весла по сети, был бинарь
wsl.exe (есть ещё bash, но я проиграл в рулетку, и баш был тоже обнулен).Какое решение всей это проблемы вышло по итогу:
Качается сама либа из пакетов арча:
https://archlinux.org/packages/core/x86_64/libcap/Как-то её придется распаковать, а расжимать zstd скорее всего нечем - поэтому качается разжималка zstd отсюда
Либа распаковывается куда-нибудь, а дальше в проводнике открывается сетевой путь до
tmp внутри весла \\wsl$\Arch\tmp, куда переносится либа. Распаковать сразу в
/usr из винды нельзя - винда ругается на пермишены (и правильно ругается кста).Дальше фикшу либу, и можно уже заходить в шелл.
wsl -u root -e /bin/cp -r /tmp/usr /
Но всё веселье только начинается, надо ж ещё починить систему!Логичней всего это делать через пакман, но увы - пакман тоже умер, поэтому по старой схеме - качаем https://archlinux.org/packages/core/x86_64/krb5,
распаковываем, накатываем поверх системы.
Ура, пакман появился, но починить всё нам будет мешать неработащий
gpgme - его тоже придется накатить поверх системы.(можно прописать "
SigLevel = Never" в /etc/pacman.conf, но переустановить сам gpgme у меня всё равно не вышло - вылезли проблемы с либами).Теперь gpg полностью работает, и можно наконец перенакатывать все пакеты:
pacman -S --overwrite "*" $(pacman -Qnq) Последним этапом можно попробовать поискать по системе мертвые файлы через лютый
find / \( -path '/mnt' -o -path '/sys' -o -path '/proc' -o -path '/dev' -o -path '/run' \) -prune -o -size 0c -print | grep -vE "lock|.gitkeep|__init__.py\$"
Но я у себя ничего не нашел.UPD: покопался у себя в event viewer, и похоже, что причиной этому был OOM - весло попросило слишком много памяти, и винда убила виртуалку. pacman такое переживает достаточно плохо.
UPDx2: В комментариях подсказали, что восстановление после такого краша описано на арчевики - если вкратце, то половину действий можно упростить при наличии
pacman-static (статической версии пакмана), или просто другого работающего арча, например, livecd, хотя в случае с веслом это сложнее. Also, мертвые файлы можно искать менее лютым find /usr/lib -size 0 - поскольку при обновлении пакетов из реп задевается только этот путь.Невероятно годная серия статей о разборе проприетарного формата карт для автомобильной навигационной системы.
Товарищ творит какую-то жесть в 010editor, я и не знал, что темплейты настолько широкие возможности дают.
Да и в целом материал с точки зрения подхода к форензике по данным, о которых ничего не известно - весьма хороший.
Первая часть и вторая часть.
Больше пока нет)
Товарищ творит какую-то жесть в 010editor, я и не знал, что темплейты настолько широкие возможности дают.
Да и в целом материал с точки зрения подхода к форензике по данным, о которых ничего не известно - весьма хороший.
Первая часть и вторая часть.
Больше пока нет)
Хабр
Реверс черного тессеракта. Начало
Система с известной спецификацией реакций на входные воздействия и неизвестным содержимым характеризуется как черный ящик. Когда внутренняя структура, устройство и архитектура системы известны, - ящик...
Forwarded from Ivan's work&life thoughts
В питонячей либе celery нашли забавную CVE, причем я тоже думал о подобной проблеме когда делал таск на кубок CTF России, и как оказывается недокрутил потенциальную CVE.
Давайте попробую рассказать про что там.
Celery - реализация очереди задач для Python. Основной функционал - возможность создавать и планировать задачи (единица исполнения кода), которые потом могут быть выполнены на другом воркере.
Воркер - процесс, который выполняет задачи из очереди. Воркеров может быть много и они могут быть запущены на разных машинах.
Чтобы доставить информацию о задачах на другие машины нужно использовать какое-то внешнее хранилище/брокер, например redis или rabbitmq.
Также celery позволяет хранить информацию о результатах выполнения задачи из коробки в так называемых result backend’ах. Это опять же может быть redis/memcached/бд. [1]
Вопрос, который я задал себе при составлении таска около месяца назад - «а что если мы можем повлиять на хранилище тасков (брокер) или хранилище результатов ?»
Может показаться что такое маловероятно, но достаточно популярный вариант брокера/бэкенда — redis (k-v хранилище).
При этом многие приложения могут использовать редис для кэширования или позволять пользователю хранить там свои данные.
Представить что для простоты деплоя люди будут использовать один и тот же редис для кэширования, хранения данных и celery достаточно легко.
Люди, которые интересуются безопасностью, могут быстро придумать вектор — сериализация (способ кодирования/декодирования объектов в рантайме в байты).
В питоне для сериализации есть очень мощный, но страшный инструмент — pickle. Pickle позволяет сохранить любой питоновский объект в байты, но несет by-design проблему безопасности — десериализовать можно любой объект с мета-поведением, из-за чего при десериализации может быть выполнен произвольный код. [2]
Но разработчики celery прошли этот этап. По-умолчанию в celery используется JSON сериализация. Это накладывает ограничения на объект, который вы можете положить в результат или аргумент задачи, но делает эту историю безопаснее.
Однако вы все еще можете создать свою задачу если имеете доступ к хранилищу задач. Так, если перед вызовом задачи будут какие-то проверки (например права пользователя), то вы сможете их обойти создав свою задачу.
Именно эта идея легла в основу моей задачи на кубок CTF. [3]
А теперь про CVE.
Задача может упасть с ошибкой. Если результатом выполнения задачи будет исключение (exception), то celery честно положит эксепшен в result backend (как строку в случае JSON).
Если приложение захочет получить результат упавшей задачи, то celery прочитает информацию об исключении из брокера и попытается найти/создать тип данных, который задан в строке. [4]
Если немного детальнее, то в случае JSON сериализации в строке будет модуль, тип эксепшена и сообщение.
Передаем модуль - os, тип - system, сообщение - ls.
И celery честно попытается найти модуль os, и сделать вызов конструктора/функции system с аргументом ls.
Красивое RCE.
Fix
В фиксе [5] сейчас проверяется что полученный тип является наследником exception’a или класса ‘type’. Кажется звучит безопасно, но возможно супер-знатоки питона скажут что нет.
[1] https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/index.html
[2] https://davidhamann.de/2020/04/05/exploiting-python-pickle/
[3] https://github.com/acisoru/ctfcup-21-quals/tree/main/tasks/web/json-config
[4] https://github.com/celery/celery/blob/c79d5c79c1c212b1f7e5036b7dca18568eae68de/celery/backends/base.py#L405
[5] https://github.com/celery/celery/commit/1f7ad7e6df1e02039b6ab9eec617d283598cad6b
Давайте попробую рассказать про что там.
Celery - реализация очереди задач для Python. Основной функционал - возможность создавать и планировать задачи (единица исполнения кода), которые потом могут быть выполнены на другом воркере.
Воркер - процесс, который выполняет задачи из очереди. Воркеров может быть много и они могут быть запущены на разных машинах.
Чтобы доставить информацию о задачах на другие машины нужно использовать какое-то внешнее хранилище/брокер, например redis или rabbitmq.
Также celery позволяет хранить информацию о результатах выполнения задачи из коробки в так называемых result backend’ах. Это опять же может быть redis/memcached/бд. [1]
Вопрос, который я задал себе при составлении таска около месяца назад - «а что если мы можем повлиять на хранилище тасков (брокер) или хранилище результатов ?»
Может показаться что такое маловероятно, но достаточно популярный вариант брокера/бэкенда — redis (k-v хранилище).
При этом многие приложения могут использовать редис для кэширования или позволять пользователю хранить там свои данные.
Представить что для простоты деплоя люди будут использовать один и тот же редис для кэширования, хранения данных и celery достаточно легко.
Люди, которые интересуются безопасностью, могут быстро придумать вектор — сериализация (способ кодирования/декодирования объектов в рантайме в байты).
В питоне для сериализации есть очень мощный, но страшный инструмент — pickle. Pickle позволяет сохранить любой питоновский объект в байты, но несет by-design проблему безопасности — десериализовать можно любой объект с мета-поведением, из-за чего при десериализации может быть выполнен произвольный код. [2]
Но разработчики celery прошли этот этап. По-умолчанию в celery используется JSON сериализация. Это накладывает ограничения на объект, который вы можете положить в результат или аргумент задачи, но делает эту историю безопаснее.
Однако вы все еще можете создать свою задачу если имеете доступ к хранилищу задач. Так, если перед вызовом задачи будут какие-то проверки (например права пользователя), то вы сможете их обойти создав свою задачу.
Именно эта идея легла в основу моей задачи на кубок CTF. [3]
А теперь про CVE.
Задача может упасть с ошибкой. Если результатом выполнения задачи будет исключение (exception), то celery честно положит эксепшен в result backend (как строку в случае JSON).
Если приложение захочет получить результат упавшей задачи, то celery прочитает информацию об исключении из брокера и попытается найти/создать тип данных, который задан в строке. [4]
Если немного детальнее, то в случае JSON сериализации в строке будет модуль, тип эксепшена и сообщение.
Передаем модуль - os, тип - system, сообщение - ls.
И celery честно попытается найти модуль os, и сделать вызов конструктора/функции system с аргументом ls.
Красивое RCE.
Fix
В фиксе [5] сейчас проверяется что полученный тип является наследником exception’a или класса ‘type’. Кажется звучит безопасно, но возможно супер-знатоки питона скажут что нет.
[1] https://docs.celeryproject.org/en/stable/getting-started/backends-and-brokers/index.html
[2] https://davidhamann.de/2020/04/05/exploiting-python-pickle/
[3] https://github.com/acisoru/ctfcup-21-quals/tree/main/tasks/web/json-config
[4] https://github.com/celery/celery/blob/c79d5c79c1c212b1f7e5036b7dca18568eae68de/celery/backends/base.py#L405
[5] https://github.com/celery/celery/commit/1f7ad7e6df1e02039b6ab9eec617d283598cad6b
David Hamann
Exploiting Python pickles
How unpickling untrusted data can lead to remote code execution.
🔥1
.рубик
Вечерний вопрос от санитара: каким образом надо комментировать атрибуты классов в python, чтобы VSCode+pylance научился рисовать доки к ним? Имеющиеся варианты: 1) class Test: """ class docs """ field: str # docs 2) class Test: """ class…
Ответ на вопрос от санитара полугодовй давности, кстати: работает второй вариант.
Что-то обновилось, и где-то поддержку комментов к филдам завезли.
Дока из
Что-то обновилось, и где-то поддержку комментов к филдам завезли.
Дока из
pydantic.Field, правда, пока не подтягивается, как и наоборот - дока из питоновского коммента в схему.«Никогда такого не было, и вот опять» (c).
Пару дней назад hashicorp внезапно ограничил доступ к cloud-версии терраформа для пользователей из РФ - конкретней, с российских IP.
Конкретней - https://portal.cloud.hashicorp.com и https://app.terraform.io возвращают пустые страницы с ошибками.
Дискуссия у них на форуме: https://discuss.hashicorp.com/t/problems-with-access-from-ru-region/35281/2
Причина, судя по всему, в санкциях.
Правда народ пишет, что это у них геобаза кривая, и забанить хотели только Крым
Пару дней назад hashicorp внезапно ограничил доступ к cloud-версии терраформа для пользователей из РФ - конкретней, с российских IP.
Конкретней - https://portal.cloud.hashicorp.com и https://app.terraform.io возвращают пустые страницы с ошибками.
Дискуссия у них на форуме: https://discuss.hashicorp.com/t/problems-with-access-from-ru-region/35281/2
Причина, судя по всему, в санкциях.
Правда народ пишет, что это у них геобаза кривая, и забанить хотели только Крым
В телегу завезли новую обнову (офф патчноут)
В обнове - кастомные звуки уведомлений, произвольное время мута (вот это приятно), реплаи в форвардах (тоже хорошо)...
И скромно, без акцента - добавили ботам возможность рисовать html-странички прямо в клиенте телеги.
Попробовать эту штуку предлагают в @DurgerKingBot
(Дуров, кстати обещал и клялся, что не будет рекламировать фастфуд, а тут такая неприкрытая реклама).
В комментах к посту с обзором этой фичи в канале нецифровой экономики увидел, что новая фича, по сути, скопирована у китайцев из их вичата.
И с точки зрения безопасности к этой фиче очень много вопросов, кстати - ждем 0day в хроме через телегу...
Вообще, нельзя не заметить, что из телеги уже который год пытаются вылепить продукт куда больший, чем просто мессенджер - то ли новый веб (3.0? 4.0?), то ли ещё что.
В обнове - кастомные звуки уведомлений, произвольное время мута (вот это приятно), реплаи в форвардах (тоже хорошо)...
И скромно, без акцента - добавили ботам возможность рисовать html-странички прямо в клиенте телеги.
Попробовать эту штуку предлагают в @DurgerKingBot
(Дуров, кстати обещал и клялся, что не будет рекламировать фастфуд, а тут такая неприкрытая реклама).
В комментах к посту с обзором этой фичи в канале нецифровой экономики увидел, что новая фича, по сути, скопирована у китайцев из их вичата.
И с точки зрения безопасности к этой фиче очень много вопросов, кстати - ждем 0day в хроме через телегу...
Вообще, нельзя не заметить, что из телеги уже который год пытаются вылепить продукт куда больший, чем просто мессенджер - то ли новый веб (3.0? 4.0?), то ли ещё что.
Telegram
Notification Sounds, Bot Revolution and More
Today's update adds creating your own notification tones, setting custom durations for muting chats or auto-deleting messages, as well as supercharged bots ready to outshine any website, improved forwarding that preserves replies, and a lot more.
🤔3👍2