Too Long, Did Read
1.07K subscribers
352 photos
5 videos
136 links
Привет!
Я - Тим: продакт, СТО-самоучка и стартапер (лол).

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

А еще я их пишу: https://timsh.org
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Как я сам себя отследил

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

По итогам примерно 10 часов занятий этим:
- Нашел запрос, в котором сливается мое гео, и 5+ запросов, в которых сливается IP
- Узнал много нового про то, как устроены RTB-аукционы и протокол OpenRTB, и просто охуел от того, насколько подробные данные передаются на рекламные биржи
- Обломался с идеей купить базу со своими данными, тк у меня нет ни большой компании (чтобы от ее имени взять триал), ни $10-50к, чтобы купить датасет, в котором будет много миллионов человек и я.
Ну, может и есть, но покупка все равно странная))
Оказалось, что данные "европейцев" чуть ли не самые дорогие.

В качестве сетапа:
- старый iphone (как-то неуютно было делать все на основном)
- charles proxy, чтобы слушать и расшифровывать весь HTTPS-траффик, который отправляет приложение
- игра Stack, в которую я играл в 8 классе - она, как и куча других игр компании Ketchapp (кто помнит такую?), оказалась в списке.

Что я обнаружил:
1. За 1ую секунду работы приложение отправляет 200+ запросов в кучу разных мест - обратите внимание на время справа на видео, между забросами буквально доли секунды.
2. БОльшая часть рекламы "менеджерится" через Unity Ads (и именно сквозь них утекло мое гео) - а я думал, что они на игровом движке 2 ярда зарабатывают :)
3. Приложение собирает и передает на биржи все, что может узнать о вашем телефоне - и некоторые вещи даже непонятно, зачем - например:
- На сколько % заряжен телефон, заряжается ли он сейчас, какая яркость экрана, подключены ли наушники, и если да - какие;
- Все о модели телефона, версии ос, вайфае, операторе связи, установленных языках
- Ну и конечно - IP и координаты, с привязкой ко времени.

Приложение, кстати не запрашивало доступ к геолокации, но все равно узнало мои координаты, и довольно точные - даже на вайфае попали в несколько домов от меня.
Думаю, было бы точнее, если бы в телефоне была симка и я был на лте;

А, и кстати, про IP - он в тч утек в запросе на web.facebook.com.
На телефоне, где не стоит приложение Facebook. Где я, естественно, не синхронизировал друзей и не разрешал фейсбуку собирать никакие мои данные. Как ни странно, шпионских запросов от Тиктока я не увидел :)

И наконец - вишенка на торте!

Выбор опции "Allow app not to track" никак не влияет на то, как собираются эти данные.
Единственное различие - если попросить приложение не следить, Apple не отдает IDFA, - тот самый маркетинговый айдишник телефона, - вместе с гео и всеми остальными данными.

Но при этом отдает IDFV - айдишник для вендора (как раз таки KetchApp), общий для всех игр / приложений от этого разработчика.
Так что если одному приложению условного Playrix'a, KetchApp'a или даже Яндекса вы случайно или специально разрешили трекать вас, то все данные из других приложений тоже подтянутся.
Ну а обменять IDFA на ваше ФИО, почту, телефон и адрес - давно автоматизированная задача. Достаточно денег заплатить.

Больше того - утекает такое безумное количество данных, что я не удивлюсь, если на самом деле есть еще какой-нибудь айдишник, общий для всех приложений и не отключающийся с трекингом - я всяких UUID с разными аббревиатурами в названии нашел 20+.

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

Но тут на помощь приходят любезные дата-брокеры и биржи данных вроде Datarade, которые метчат одни записи с другими по разным признакам.
Например, по вашему IP - который в случае с вайфаем общий на все устройства в одной сети.
Так что если кто-нибудь из ваших соседей по квартире разрешает трекинг - ваши данные слипаются в общий клубок (гео)данных.
Не тебя найдем, так твоего родственника или партнера.
🤯17👍1
История про то, какое все хрупкое и дырявое

https://www.oligo.security/blog/cve-2024-50050-critical-vulnerability-in-meta-llama-llama-stack

Есть такая штука - Llama Stack: насадка на ваш сервак, сквозь которую удобнее работать с llama (ллм от Мета), чем напрямую.
Сейчас у нее 6.2k stars на Github (много), но главное - она предлагается по дефолту при настройке AI-first VPS типа AWS Bedrock и аналогов для работы с llama.

Так вот, исследователи из Oligo обнаружили, что ллама-стак использует библиотеку pyzmq для эффективной обработки входящих сообщений, а конкретнее - вызывает функцию recv_pyobj (как следует из названия - получить питоновый объект).

Эта самая функция - всего 2 строчки кода:
def recv_pyobj(self, flags: int = 0) -> Any:
        msg = self.recv(flags)
        return self._deserialize(msg, pickle.loads)

Код выше забирает отправленные на съедение ллм-ке данные с вебсокета и "анпиклит" его.

Чего делает?

picklle это питоновский модуль, который используется для сериализации объектов вроде списков, словарей и классов. Например, в датасаенсе для компактной упаковки и сохранения обученной модели.
Сериализация = превращение объекта в бинарный эквивалент.
Unpickle (десериализация), соответственно - превращения бинаря обратно в питоновский объект.

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

Цитата из официальной доки пикла:
Warning!
The pickle module is not secure. Only unpickle data you trust.
It is possible to construct malicious pickle data which will execute arbitrary code during unpickling.
Never unpickle data that could have come from an untrusted source, or that could have been tampered with.


Кажется, начинаю понимать...

Так вот, в дефолтной реализации API , полученный во время входящего запроса бинарь "анпиклится" в питоновский объект - например, очень-очень длинный словарь или класс.
Исследователи приложили довольно простой Proof of Concept чтобы показать, насколько эта уязвимость критична:

1. Сканируем порты сервера, который хотим захватить. Находим порты, на которых сидит и слушает запросы ллама-стак

2. Шлем туда запакованный объект, который также содержит класс reduce - это такой специальный способ сказать пиклу "распакуй мой объект вот таким кастомным образом".
Например:
def __reduce__(self):        
import os        
cmd = 'touch /tmp/pickle_rce_created_this_file.txt && echo RCE'        
return os.system, (cmd,)

3. Вуаля! Пикл распаковывает бинарник, видит класс reduce, применяет указанные в нем команды, и {подставь любое действие}. В данном случае - безобидное создание файлика, но если включить воображение и постараться - можно и сервак угнать.

Для меня это очень показательная история: опенсорсный, созданный фейсбуком и "много звездочек" ≠ безопасный.

Больше того:
1. УТП стака (он так и продвигается на главной llama.com) - “строй быстрее, деплой куда угодно, забей на все остальное, мы позаботимся о безопасности и прочем”.
Ага, спасибо.

2. Страшно представить, сколько всего импортирует llama-stack и аналогичные сложные сервисы - тут это даже не стремная/взломанная библиотека, а просто один метод из 2х строчек, который подвергает риску весь сервак.

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

Кстати, если вам понравилось и вы не видели пост про похожую проблему с 1 строчкой кода в flutter - тыкайте сюда.
2🤯8🔥4👍3
Ловец AI-ботов

https://zadzmo.org/code/nepenthes/

Кто-то написал ловушку для crawler'ов, которые собирают данные для обучения ЛЛМок, ну и заодно поисковых роботов.

Работает это так (демо):

1. Заходит кроулер-пасрер к тебе на сайт, начинает ходить по страницам. Видит ссылку на корневую страницу nepenthes, переходит.
2. Переход на страницу специально занимает 2-3 секунды времени кроулера.
На открывшейся странице медленно появляется сгенерированная ахинея и список из 7-8 ссылок на казалось бы статические страницы (с реальным адресом вроде /keelblock/convocationist/laevotartaric/tetractinellid).
3. Счастливый бот переходит по каждой ссылке с целью съедения новой странички, и...

4. ну вы уже поняли :) это продолжается вечно, пока либо бот, либо ваш сервак не заебется (если запас CPU есть - не заебется).

Почитал, что про эту ловушку написали в 404медиа, оттуда провалился на форум ycombinator, а там битва между людьми и представителями разнообразных AI-компаний.
СЕО какой-то AI-херни пишет, что мол скрэпперы не такие глупые, не будут застревать в таких лабиринтах на ноунейм сайтах, и все такое.

От себя добавлю, что многие комментаторы, которые говорят, что метод тупой, а роботы умнее, как будто не до конца поняли, как работает Nepenthes: он не просто гоняет робота по замкнутому кругу ссылок, а постоянно создает новые “статические” страницы с новым рандомно сгенеренным текстом и урлом. Ну или может я ничего не понимаю.

А вот люди с сайтами (в тч и автор, который эту ловушку уже неск месяцев у себя крутит) пишут, что у них в логах миллионы заходов AI-кроулеров, например Meta, Google и Perplexity, в том числе и на таких сайтах-ловушках.
И что в целом поделом этим роботам, пусть застревают, тк они плюют на robots.txt и все скрейпят без разрешения.

robots.txt это список правил для зашедшего бота / для человека, который парсит сайты, в котором написано, какие страницы / директории парсить можно, а какие нельзя, и кому.
Например, вот как выглядит кусочек robots.txt Forbes:
User-Agent: PerplexityBot
Disallow: /
...
User-agent: anthropic-ai
Disallow: /
...
User-agent: ChatGPT-User
Disallow: /
...
User-agent: ClaudeBot
Disallow: /


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

Но по факту, несоблюдение роботс.тхт не является нарушением закона, так что всякие меты с перплексити плюют на правила и просто скрейпят все что могут.
🔥9🤯4
Вспомнил, что летом читал очень крутую статью-расследование про Perplexity от WIRED - всем интересующимся AI-бумом очень рекомендую.

https://archive.is/aHuhu

Если очень коротко, авторы в июне 2024 обвинили оцененную на тот момент в 1 млрд Perplexity в:

1. Несоблюдении правил robots.txt с непризнанием своей вины - например, у них был довольно мощный биф с вышеупомянутым Frobes на эту тему.
2. Misleading маркетингом: WIRED выяснили, что Perplexity регулярно выдумывает контент на основании урла (example.com/nu-vot-naprimer-vot-tak), даже если сама статья вообще про другое. Что как бы лишает AI-поисковик ценности.

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

Ага)

Месяц назад Perplexity привлекли $500 млн по оценке в 9 ярдов.

Таких историй много, и на мой взгляд, они очень показательные.
Можно бесконечно переться от YCombinator и Марка Андриссена и от их "вижена", но реальность AI-рынка такова, что качество продукта и стоимость компании часто никак не связаны между собой. Как и в кейсе с devin, про который я писал выше, главное для фаундера - сильно раскрутить и вовремя соскочить, а продукт "подтянется".
Ну а для инвестора - вовремя передать горячую картошку следующему.
🤡6🐳4👍1🔥1
Написал статью про то, как сам себя отследил

https://timsh.org/tracking-myself-down-through-in-app-ads/

Это более подробная версия вот этого расследования с картинками, схемами и большим количеством деталей.
И по совместительству - первая статья, выложенная в моем собственном селф-хостед блоге на домене timsh.org.

Чем пока что обернулось выкладывание статей на англ куда-то (в основном - на reddit):

- Первым был пост про ether-pos.
Собрал мало, но зато мне написал преподаватель, который ведет курс по блокчейну, и попросил использовать ether-pos в своем курсе. Круто же!

- Дальше было шахматное расширение - про него подробно писал тут, не буду пересказывать результаты, но они были гораздо лучше: 100К+ просмотров + я пообщался с СЕО chess.com.

- Чуть меньше месяца назад я написал статью-расследование про скам-схему с туториалами на ютубе.
Пост собрал 250к просмотров на реддите + 3К прочтений самой статьи.
А еще его пошерили несколько крупных cybersec блоггеров в твиттере, на форуме YCombinator итд.

- И вот сегодня утром я выложил статью про утечку геолокации в мобильной рекламе.
За 6 часов собралось уже 37К просмотров + 4К уникальных посетителей на моем сайте.

В общем, гораздо больше охватов, несмотря на то, что на реддите / медиуме / своем сайте у меня пока типа 10 подписчиков. И аудитория, при этом, супер отзывчивая: куча комментариев с критикой, похвалой, вопросами и предложениями.
На выкладывание 1 поста на реддит уходит минута (написать заголовок и прикрепить ссылку).

Зачем мне свой блог?

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

- 99% постов в ленте это говнотексты с кликбейтными заголовками, сгенерированные ChatGPT.
- Он заблокирован в РФ, из-за чего мне приходилось дублировать все посты в Telegraph.
- На медиуме неудобный редактор и мало видов рич-текста. А еще нет темной темы… позор.
- Самое главное: Медиум за все это время дал мне <1% охватов.
Зачем мне вести людей на чужой сайт, который мне не нравится? При этом, % прочтений от зарегистрированных на медиуме аккаунтов - мизер. Большинство людей, я думаю, не хотят там регаться.

Поэтому я и решил завести свой блог и вести людей туда.
Думаю, еще не раз будет так, что из-за поста со ссылкой на реддите у меня появится крутой коннект / предложение. Ну или просто - много обратной связи, тоже приятно.

В качестве базы для блога я выбрал self-hosted версию Ghost.
Если кому интересно, почему я его выбрал и куда-как захостил - напишите в лс или комменты, выложу про это пост.
🔥22👍2🕊2
UPD: топ 1 на hackernews (форуме ycombinator)
https://news.ycombinator.com/news

вовремя я сайт завел…
upd2: за 24 часа - 103к посетителей, я в шоке…

🤯🤯🤯
🔥43🤯20
Subaru ImpressUs, или как открыть машину, зная только ее номер

https://samcurry.net/hacking-subaru

Прочитал недавно вышедший баг-репорт Сэма Карри - очень крутого баг-баунти хантера, который специализируется на поиске уязвимостей в компаниях-производителях автомобилей.
Сэм рассказывает о том, как год назад купил маме Subaru Impreza нового поколения, к которой по умолчанию прилагается сервис “Starlink” - нет, не спутниковый интернет Маска, а всего лишь умная система управления машиной + ее отслеживания, что-то вроде Find My, но для машин.
Оказалось, что зная номера машины, через эту систему ее можно отследить, открыть и угнать без шума.

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


POST /forgotPassword/resetPassword.json HTTP/1.1
Host: portal.prod.subarucs.com

{
"email": "random@random.com",
"password": "Example123!",
"passwordConfirmation": "Example123!"
}


{
"error": "Invalid email"
}


Дело за малым - нужно найти подходящий емейл сотрудника.
Естественно, корп емейл у Субару, как практически у всех, имеет формат [first_initial][last]@subaru.com, так что достаточно найти ФИО любого сотрудника на линкдине.

Но все-таки, не может же все быть так легко?

И да, и нет.
Для того, чтобы пользоваться функционалом админки после того, как мы вошли туда, сбросив пароль, надо также ввести 2FA - в данном случае, секретный вопрос, вроде “имя первой собаки”. бтв, ужасное решение, никогда не делайте так )
Но вскоре выяснилось, что функционал 2FA реализован… на фронте.
То есть, просто закомментив на уже отрисованном сайте 1 строчку:
//$(‘#securityQuestionModal').modal('show’);, можно спокойно пользоваться всем функционалом сайта.

Итак, мы внутри админки. Что дальше?

Начнем с того, что сотрудник имеет доступ к данным всех покупателей в США, Канаде и Японии (пиздец) - и ему доступен поиск по фио, телефону, и даже номерам машины. Как пишет Сэм, сложно сделать систему безопасной, если в ней предусмотрен такой уровень доступа для любого 18-ти летнего интерна в компании.

Одна из возможностей сотрудника в админке - добавлять верифицированного пользователя в систему Starlink… без уведомления текущих оунеров и юзеров. Ни смс, ни письма на почту, вообще ничего!
То есть, имея доступ в админку, я могу выдать себе доступ к вашей машине, а вы этого даже не узнаете.

А из самой системы Старлинк, наконец, можно:

- Удаленно заводить и останавливать, открывать, закрывать и отслеживать машину. А еще бибикать :)
- Вытащить историю перемещений машины ЗА ПОСЛЕДНИЙ ГОД, размеченную по времени + с информацией о том, когда машину заводили и глушили.
- Получить все персональные данные владельца, включая имена других авторизованных пользователей, домашний адрес и т д.
Хотя кому нужен домашний адрес, когда есть годовая история всех перемещений…

Дальше Сэм с коллегой сделали proof of concept, объединив все находки в одну консольную утилиту: вводишь номер машины, тебя редиректит на Starlink с полным доступом к машине.
Посмотрите видео, это просто полный треш: https://youtu.be/0i8juy6RPBI.

Заключение

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

А еще советую всем интересующимся посмотреть выступление Сэма на DEFCON (он взломал все модемы очень крупного интернет-провайдера) и подкаст Critical Thinking с его участием: там он, например, рассказывает, к чему приводят его находки (его недавно арестовали на границе в аэропорту и обвинили в какой-то жести. но все хорошо закончилось).
🤯11👍7🔥2🤡2
Про self-host

По многочисленным (ха-ха) запросам, написал пост-гайд про то, как я все селфхосчу.

TLDR: Hetzner + Cloudflare + Coolify + Ghost + Plausible = https://timsh.org.

Сетап бюджетный и почти не требует понимания происходящего, выдерживает обычную-приличную нагрузку (у меня до сих пор DAU 10k+ человек).
Уже минимум 2 человека, которым я это рассказал, сделали то же самое и пока довольны.

Нам понадобятся:

VPS на Hetzner
Подходит, если у вас есть иностранная карточка / пейпал.
Если нету - боль и печаль, тк российские провайдеры типа Яндекс Cloud ломят просто жуткие цены за точно такие же VPS.
Возможно тогда дешевле купить домашний небольшой компик типа такого, захостить все на нем и пробросить трафик с домена с помощью cloudflare ssh tunnel. Я так кстати тоже сделал, потом как-нибудь расскажу.

Для хостинга блога + пары статических сайтов + аналитики мне с головой хватает
3 vCPU, 4 GB RAM, 80 GB Disk за 8 евро в месяц (рефералка на 24€, не моя).
Для сравнения, такой же, только 2 ядра вместо 3 на Digital Ocean стоит 24$, а на Яндексе - 3877 руб, ака 40 евро :)

Coolify

Coolify это PaasS как vercel или heroku, только опенсорсный.
Он позволяет раскатывать кучу приложений в 1-5 кликов в красивом интерфейсе.
Ставится за 5 минут по инструкции.

Кулифай из коробки умеет кучу всего, в том числе:
- самостоятельно навешивает реверс-прокси по типу Nginx и получает SSL сертификаты Let's Encrypt,
- умеет слать алерты в телегу и настраивать CI/CD в виде запушил коммит → сервис передеплоился сам
В общем, делать все то, что делать никто не любит и не умеет.

Но самое крутое - это кол-во сервисов, под которые в кулифае есть 1-click installation. Например, любые базы данных (привет managed postgres на digital ocean за 16$/мес), django, и еще 100+ сервисов - полный список тут.
В том числе и...

Ghost

Наконец, ghost - опенсорсная платформа для блоггинга. Он, кстати, есть и в managed версии для тех, кто не хочет все хостить сам.
На мой взгляд, правда, это не имеет никакого смысла, тк самый дешевый тариф дороже VPSки на хецнере + имеет ограничение на кол-во мемберов.
Когда я искал разные базы для собственного блога, я отобрал 2 финальных варианта -
Zola и Ghost.
Zola менее навороченная, без красивой морды, но зато трушная, гигабыстрая и с постами в markdown формате как в Obsidian / Notion.
Но так как я не трушный прогромист, я все-таки выбрал гост за:
- установку в 1 клик
- красивый интерфейс в котором сразу из коробки есть email-рассылки, комментарии и т д
- очень крутой и удобный редактор, гораздо лучше медиума - в нем много видов embed и ричтекст полей, например крутых код-сниппетов.

Plausible (необязательно)

Plausible это опенсорсный селф-хостед аналог Google Analytics, который не использует куки и никому ничего не передает - идея кормить гугол данными людей, которые пришли почитать статьи про приватность и безопасность в интернете мне не улыбается.
Возможностей в нем, конечно, поменьше, но работает отлично. И ставится в кулифае так же в 3 клика.

Cloudflare (необязательно)

Хоть он меня и напрягает, но объективно дает кучу всего за бесплатно.
Я пользуюсь их DNS, анти-ддос капчей и CDN.
Клаудфлер божится, что за время с момента выхода моей последней статьи сэкономил мне 3 TB трафика с помощью своего CDN - может, конечно, преувеличивает, но не сильно.
Без него серваку, скорее всего, пришлось бы тяжко.

Ну вот и все!
На таком стеке и живет https://timsh.org + ether-pos
Пока практически все, что я пытался разворачивать в кулифае, получалось за 15 минут. Кроме... потом расскажу.

Если вы сейчас что-то хостите или планируете в будущем - призываю вас попробовать такой набор и потом написать в комментарии или в личку, как оно вам.
🔥20👍10🐳2
Легализованный криптоскам

https://abnormalsecurity.com/blog/cryptograb-cryptocurrency-fraud-scam-websites-phishing

Последний месяц я довольно много исследую различные SaaS (Scam as a Service) схемы, которые построены по принципу Affiliate - есть некая компания-разработчик, которая предоставляет скам-софт, и “промоутеры”, которые берут на себя распространение этого софта среди жертв за % от украденных денег / полученной прибыли. 

На днях мне попалась статья Abnormal про CryptoGrab - “crypto arbitrage affiliate program”, про который я узнал еще пару месяцев назад из обсуждения в чате ETH Security. 

Лор CryptoGrab’a: это компания-разработчик, флагманский продукт которой - крипто-дрейнер, который выкачивает все деньги с криптокошелька жертвы.

Они предоставляют кучу шаблонов сайтов и ботов, 1в1 скопированных с популярных криптообменников, бриджей, бирж и прочего, а также сам дрейнер, который автоматически “пилит” деньги между афилиатом и самим криптограбом.

Таким образом, основной репутационный риск и “удар” берет на себя партнер-афилиейт, который хостит свой фишинговый шаблон с дрейнейром, а сами разработчики контактируют только с частью прибыли, тщательно промытой и перемолотой сквозь кучу криптокошельков на разных сетях.

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

CryptoGrab — это официально зарегистрированная компания в нескольких странах, с разрешением на предоставление услуг. При необходимости, мы можем осуществлять платежи с наших корпоративных счетов.
У нас есть оффис и представительство в UK вот ссылка на реестр.
Так же у нас есть налоговый статус и компания в CANADA  и лицензия на 5 лет.


А еще их сотрудники выступают на конференциях по “Affiliate Marketing”. 

Кстати, если вы не знали, когда вы видите слово “Affiliate” в контексте крипты, трафика и всякого такого - это всегда подразумевает подобную деятельность. 

Эти и другие воры и мошенники буквально проводят конференции “для своих”, где обсуждают лайфхаки и последние достижения в сфере "пролива рекламы" на подобный скам и другую чернуху, разнообразные способы поиска новых партнеров, и многое другое. Вот недавно была такая в Барселоне - посещать не стал.

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

Возникает вопрос - почему их и аналогичных преступников не сажают, хотя про них знают уже как минимум год?
Вот, к примеру, статья Certik от 26 февраля прошлого года. Для тех кто не знает, Certik это одна из крупнейших компаний-аудиторов в крипте, правда, с крайне сомнительным качеством самих аудитов.
Но аудитория и “вес” на рынке у них достаточные, что все, кто в теме, хоть раз слышали название CryptoGrab.

Думаю, что ответов на это несколько:

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

2. Организаторы схемы - в СНГ, а жертвы - в Европе, США, Канаде, Азии... в общем, везде, кроме СНГ.
У них даже "кодекс" есть такой - не скамить СНГшных соседей.

Потому что ФСБ и прочим в основном плевать на скам иностранцев - пока это не достигает сумасшедших масштабов, они закрывают на это глаза.
И если в случае с RaaS (Ransomware as a Service) в качестве жертв выбираются крупные компании / государственные службы, до которых условному интерполу "есть дело", то до разводки какого-то дурачка-физика дела нет ровным счетом никому.

Вот так как-то.
Будьте очень осторожны, когда хотите сделать что-то с криптой на незнакомом сайте: всегда проверяйте урл до последнего символа, гуглите компанию и отзывы, и все такое.
Масштабы этой схемы - десятки, а может и сотни тысяч сайтов, и миллионы долларов.
🤯10👍6🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Самый большой диван, который можно передвинуть за угол

https://www.quantamagazine.org/the-largest-sofa-you-can-move-around-a-corner-20250214/

Очень прикольная история!
В 1966 году математик Лео Мосер сформулировал задачу “moving sofa”:
Представим себе коридор шириной 1 ед с поворотом на 90° в конце.
Задача - найти максимально большой по площади двумерный диван, который можно продвинуть через угол.

Как оказалось, задача эта ни разу не тривиальная, и на ее решение ушло больше 50 лет.
Даже интереснее: в 1992 другой ученый по фамилии Гервер предложил супер нетривиальную форму дивана (на видео), при которой площадь достигает 2.2195 ед^2.
Но ни он, ни другие математики не могли формально доказать, что эта форма является оптимальной.

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

- Форма дивана Гервера состоит из 18 элементов сложной формы, и ее площадь не описывается ни в каких известных величинах (π и прочих).
Но, тем не менее, она является оптимальным решением задачи “двигающегося дивана”.

И вот в декабре 2024 молодой корейский математик Jineon Baek представил свое доказательство оптимальности дивана Гервера.
Он представил все допустимые варианты формы дивана в качестве точек бесконечно-мерного пространства, и создал такую фукнцию Q, которая удовлетворяла нескольким условиям:

- Для произвольной точки в пространстве диванов Q выдает значение, больше или равное площади дивана такой формы.
- Для точки, соответсвтующей дивану Гервера, значение Q = фактической площади дивана.
- Функция “ведет себя” похоже на параболу

Дальше ему оставалось доказать, что функция достигает максимума как раз в точке Q - тогда диван Гервера будет оптимальным решением задачи о перетаскивании дивана. Что он и сделал в своей 119-ти страничной работе.

Кстати, Герверу сейчас 75 и, с его слов, ему “повезло дожить до момента”, когда его решение наконец обосновали. Мощно!

Красивый и немного безумный мир математических задач, сформулировать которые может даже ребенок, а вот решать некоторые из них 30 лет, а потом еще 30 лет доказывать оптимальность решения)
🔥31🤯6👍2🤡1
Почему не стоит скачивать моды для игр и кряки приложений с гитхаба

https://timsh.org/github-scam-investigation-thousands-of-mods-and-cracks-stealing-your-data/

Написал большую статью-расследование про относительно новый вид скама: злоумышленники создают сотни отравленных репозиториев с красиво оформленным readme и архивом (или просто ссылкой) под видом разных программ - в основном, модов для игр и крякнутых приложений вроде фотошопа и FL Studio.

Вкратце

- Я нашел гайд на форуме по “социальной инженерии” под названием “Как проливать Github от А до Я”, коротко пересказал алгоритм, который предлагает автор, и без труда нашел несколько примеров вредоносных репозиториев.

Особое внимание в инструкции уделяется “топикам” - это как хештеги на гитхабе.
Благодаря ним, когда кто-нибудь гуглит “roblox cheat download for pc”, в выдаче появляется заветный репозиторий - даже если у него 0 звезд.

- Написал скрипт, который перебрал все топики, составленные по рекомендациям автоар гайда (ограничил до 2100 штук, а то пришлось бы очень долго ждать), и нашел 1115 репозиториев, созданных по этой инструкции.
Только у 10% из них были открытые issue - единственные индикаторы того, что с репозиторием что-то не так, и качать его не надо. Все остальные выглядят абсолютно “нормально”.
Все репозитории, кстати, я сложил в одну табличку.

- Нашел в одном из репозиториев открытую issue, в которой какой-то хороший человек приложил распакованный код их архива на питоне.
Я изучил весь код и обнаружил, что это видоизмененная версия стилера Redox - программы, которая по-тихому ищет на компьютере жертвы все самое ценное - банковские данные, криптокошельки, логины/пароли от всего, до чего может дотянуться, - и отправляет на анонимный Discord-сервер.

Злоумышленник получает уведомление с каждым новым “логом” - так называют архив из украденного, - и перебирает все с целью вывода денег на свои кошельки либо продажи.
Кстати, оказалось, что очень много предложений по продаже игрового инвентаря на всяких маркетплейсах и форумах оставляют именно такие “хакеры”, которые продают украденное.

Судя по замечаниям автора гайда и людей в комментариях под ним - в “хорошее время” с нескольких дестяков репозиториев злоумышленники собирают по 50-100 логов в день.

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

Кстати, в этот раз я решил сам выложить статью на hackernews, и снова попал в топ-1 🚀
Может там найдется кто-нибудь из представителей гитхаба и поможет удалить все эти вирусные репозитории (на месте которых появятся новые).
🔥23🤯7🌭2
Про квантовый криптоанализ

https://www.cs.auckland.ac.nz/~pgut001/pubs/bollocks.pdf

Есть такой список топ-10 самых популярных киберугроз - OWASP Top 10.
С 2017 он остается примерно одинаковым - меняются только названия. В топе всякие инъекции, мисконфигурации и т д.

Но есть еще всякие "модные" эксплойты криптографических и аппаратных уязвимостей вроде POODLE, Spectre, Rowhammer ... Знаете, что у них общего?

Никто ими не пользуется!

Есть как минимум 17244 более простых способа хакнуть что-то (согласно списку OWASP 100,000, в котором все конкретные методы / технологии атаки отсортированы по частоте использования).

Автор сравнивает такие угрозы с "Толстым Густавом" - гигантской немецкой пушкой, разработанной в 1930е.

Огромная (1350 тонн), супер-мощная, но на практике ужасно дорогая и практически бесполезная: для ее перевозки был нужен полутораметровый поезд и от 2 до 4 тысяч человек для установки.

То же самое касается перебора RSA-ключей длиной от 100 бит на суперкомпьютерах - в теории можно, но никто не будет заниматься этим.

Анекдот от автора:

NSA employee:
> There’s a 1024-bit key I’d like to factor

NSA boss:
> Tell me more

> It’s pretty straightforward, we just need to shut
down Los Alamos (Oak Ridge, LLNL, whatever)
for a year to do it

> Makes note to ping HR about their employee
mental health screening procedures


Но как же квантовые компьютеры и конец всему non-Quantum-resistant шифрованию?

Вокруг квантовых вычислений очень много хайпа, в том числе паники на тему устойчивости RSA публичных ключей к факторизации.

Под факторизацией подразумевается задача вида:
Есть огромное число N (публичный ключ) = A x B, где A и B - какие-то простые числа.
Задача: найти A и B.

На эту тему - еще одна историческая справка-анекдот от автора:

The first quantum factorisation was done in 2001
• It factored the number 15
• Not a 15-digit number
• Not even a 15-bit number
• The product of 3 × 5
• The same could be achieved with a dog trained to bark three times

The next record was set in 2012
• The number factored was 21, 3 × 7
• The same dog was used to match this new record


На текущий момент квантовые компьютеры не способны ни на какую (даже несерьезную) факторизацию, те нахождение этих самых A и B.

Более того, в обоих экспериментах числа были специально выбраны заранее и ученые знали A и B до факторизации, - согласитесь, не очень похоже на реальную атаку.

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

Писал довольно давно про скандал с NIST и упоминал там их список PQC - Post-Quantum Cryptography - алгоритмов.

Мало того, что они менее эффективные и быстрые по сравнению с "традиционными" RSA-алгоритмами, так еще их мало тестировали - со слов автора, практически половину из этих NIST-approved PQC алгоритмов уже смогли взломать (нашел 1 пруф, дальше не искал).

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

Что в этом плохого?

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

2. Имплементация экспериментальных, плохо оттестированных и очень сложных алгоритмов практически гарантированно ведет к ошибкам и уязвимостям и создает еще больше проблем, не решая старых.

Зато ученым есть чем заняться, программистам - в чем поковыряться, а вендорам - что новенького продать)
👍9🔥5🤡1🥴1
Я тут опять HackerNews листал, и наткнулся на достаточно безобидный, но интересный пост про то как интересно работает калькулятор в Android

Мне очень понравилось как чел пишет, поэтому решил порыскать по его сайту, поглядеть другие посты — и на одном из них была ссылка что-то про Stack is a Monoid что я еле-еле понял, но меня захватили эти слова в самом первом параграфе:
> it’s also well known that GPUs are good at algorithms like prefix sum
wtf? Пошел гуглить, нашел GPU Gem про Prefix Sum, и моя башка просто взорвалась от гениальности алгоритма

Для полного понимания мне пришлось еще глянуть на изначальную статью — там есть чуууть больше логики, и доказательство вообще работы алгоритма

Короче, очень классно гениально круто мозговзрывающе бомба
🔥14🥴1
Плохая аура

Недавно меня позвали на подкаст Lock and Code про кибербезопасность и приватность данных.
Рассказывал про трекинг через мобильные приложения и про результаты моего исследования из статьи.
Нового по сравнению со статьей там довольно мало, но можете послушать, как я экаю по английски.

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

Есть такая израильская компания Iron Source - разработчик SSP, c 2022 - часть Unity Ads, про который я писал в статье.
У них есть продукт под названием Aura, предназначенный для производителей мобильников и телекомов.
Aura позволяет предустанавливать приложения на “голый” телефон, собирать данные об активности пользователя на уровне операционной системы, а также показывать ему рекламу на том же уровне (вышел на экран домой - и тут бац - скачай приложение бургер кинг).

Работает это чудо так:

- Оператор (условный T-mobile) заключает договор с IronSource и покупает Aura.

- Aura предустанавливается как служебное приложение (его не видно в списке приложений) на все “carrier-locked” телефоны.

- Когда пользователь покупает carrier-locked телефон в салоне оператора на пару сотен баксов дешевле (или даже на сайте самсунга в сша) и начинает настраивать телефон, его сразу же встречает экран с предложением поставить (или удалить уже поставленные) приложения партнеров - условного Uber, Revolut и т д.

- Чтобы снести такое приложение на андроиде, прийдется пройти 10-20 шагов: включить режим разработчика, поставить ADB на комп и немного повыполнять команд в терминале. Топовый UX для вас и ваших близких.

- У Aura (и аналогов) есть особый набор custom permissions, которые разрешены по умолчанию (= пользователь не нажимает “разрешить”). Среди них:

1 Camera: android.permission.CAMERA
2 Microphone: android.permission.RECORD_AUDIO
3 Contacts:android.permission.READ_CONTACTS(for reading contacts)
4 Location: android.permission.ACCESS_FINE_LOCATION (for precise location) & android.permission.ACCESS_COARSE_LOCATION (for approximate location)
5 Storage:android.permission.READ_EXTERNAL_STORAGE (for reading external storage)


Про айфоновскую ауру я почти не нашел инфы. Может прячется, а может Apple чуть больше заботится о пользователях и продает их данные самостоятельно.

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

Лайфхак: если по лендингу вам не очень понятно, что именно делает продукт (как в случае с Aura) попробуйте поискать .pdf файлы с названием продукта + словами: developer guide, documentation, investor presentation, getting started и т д.

Так я и нашел презентацию 2021 года, в которой наглядно показывают, как выглядит UX пользователя такого отравленного телефона и сколько дополнительной прибыли это приносит разным компаниям.
Или 200-страничный годовой отчет SECу, в котором очень много всего про Ауру: и жалуются, что некоторые законы / политики конфиденциальности производителей мешают им зарабатывать, и рассказывают, как много у телеком-клиента способов заработать с их помощью - в общем, почти святая компания.

Вот, к примеру, цитата оттуда:
Our scaled base of over 5,500 customers globally provides us with an extensive contextual dataset …
we are able to see data from multiple sources, from ondevice data through Aura, to app-based data through Sonic, and first-party data through Supersonic’s published apps…
We use this data, together with our proprietary, advanced machine learning technology to enable our customers to effectively acquire users who generate greater revenue and return on marketing spend.


Мини-вывод: по возможности не покупайте телефоны с carrier-локом и проверяйте, что стоит на них после настройки.
1🤯13👍8🔥4
NP-полное аниме

https://www.scientificamerican.com/article/the-surprisingly-difficult-mathematical-proof-that-anime-fans-helped-solve/

Прочитал еще одну историю про удивительно нетривиальную математическую задачу.
В 2011 один пользователь 4чана написал вопрос про 1ый сезон аниме "Меланхолия Харухи Судзимии" из 14ти серий, которые можно смотреть в любом порядке:

Какой самый оптимальный способ посмотреть аниме во всех возможных последовательностях?

Это частный пример задачи о суперперестановках - термина из комбинаторики, который подразумевает строку, которая состоит из перестановки n символов.

А?

Помните всякие P из n и C из n по k из школьной комбинаторики?
Есть цифры 1 и 2 - сколько есть перестановок этих цифр в двузначном числе?
Легко: 12 и 21 - всего 2.
Наименьшая суперперестановка - это объединение всех перестановок в 1 строку минимальной длины.
В нашем случае есть вариант суперперестановки 1221 - но минимальной суперперестановкой будет 121 за счет перекрытия 2.

Пока звучит просто, но давайте рассмотрим на примере 3 цифр:
всего будет 3! = 6 вариантов: 123, 132, 213, 231, 312, 321.
Если слепить все это вместе, получится 18-ти значная строка-суперперестановка.
А какая минимальная? И как ее найти?
123121321 из 9 символов.

Нахождение наименьшей суперперестановки и ее длины это нерешенная задача в комбинаторике для n > 5.
Для чисел до 5 включительно, формула выглядит так: 1! + 2! + … + n!
А вот для чисел больше - формулы нет. Если считать по той же формуле выше - для 6-7-8 перебором были найдены перестановки короче расчетного минимального значения.

Оказывается (для более подкованных читателей - можно даже примерно понять, почему), что задача поиска минимальной суперперестановки это разновидность задачи коммивояжера - наверное, самой известной NP-трудной задачи в комбинаторике.

Выходит, что на вопрос анона про 14 эпизодов нет ответа?

4чан > все математики мира

На том же форче спустя некоторое время другой пользователь предоставил оценку минимально возможного* количества эпизодов, а также доказательство и формулу, по которой она была рассчитана:
n! + (n−1)! + (n−2)! + n − 3.
Поясняю (*): речь идет про нижний порог, ака: наименьшая суперперестановка имеет длину как минимум n! + (n−1)! + (n−2)! + n − 3 (но может и больше).

Ответ: чтобы посмотреть 1ый сезон Меланхолии во всех возможных порядках, нужно посмотреть минимум 93,884,313,611 эпизода подряд - что займет примерно 4 миллиона лет. Эх(

Спустя два года один ученый забрел на борду, увидел решение анона и выложил его в свой блог.
А потом в 2018 другой математик случайно нашел пост в его блоге - он только что прочитал доказательство формулы максимальной длины минимальной супереперестановки (скороговорка какая-то):
n! + (n–1)! + (n–2)! + (n–3)! + n – 3
Сравним напросвет с формулой для минимальной длины с форчана:
n! + (n−1)! + (n−2)! + n − 3

Ну вот, собственно, и все: математики проверили доказательство анона, убедились в его корректности и выложили короткую научную статью с такими кредами:
"Anonymous 4chan Poster, Robin Houston, Jay Pantone, and Vince Vatter"

Так анимешники в очередной раз доказали свое превосходство над всеми остальными людьми.
👍20🔥12🐳5🤯1🤡1
Как я твиттер парсил

Недавно для одного проекта мне понадобилось попарсить твиттер.
Если точнее, парсить примерно 1000 твиттер-аккаунтов +- раз в минуту и триггерить запуск скрипта, когда в тексте твита встречаются определенные keywordы.
Зачем - не спрашивайте!
Но решил поделиться тем, как я это сделал, тк задача оказалась нетривиальной.

Первым и самым очевидным вариантом было использовать официальное X API.
Вот только оказалось, что бесплатный тариф не позволяет читать твиты - только постить их.
Первый тиер подписки за 100$/мес позволяет читать 10.000 твитов...
Следующий, "Business", за 5000$/мес (sic!) - 10.000.000

Если примерно прикинуть, что мне нужно парсить 50 твитов в день с 1000 аккаунтов, выходит +- 1.500.000 твитов в месяц. 5000$ я на это тратить не готов.
Кстати, судя по куче тредов на реддите, платный скрепинг твитов по апи - инициатива, которую принес Маск, когда купил твиттер.
Видимо считает, что много кому нужно парсить твиттер настолько, что они готовы платить за это такие деньги.

Какие остаются варианты?
1. Поискать подкапотный api-запрос, который дергает фронт твиттера, чтобы вытащить твиты. Проще всего - через вкладку network в консоли хрома.
Проблема: твиттер не отдает твиты неавторизованным пользователям, то есть запросы прийдется подписывать какой-то кукой.
Звучит сложно, пропускаем
2. Парсить интерфейс с помощью playwright или selenium из-под залогиненного пользователя.
Проблема: капчи + я ненавижу этим заниматься.
И скорее всего, это очень сложно делать, - по опыту 1,5 лет парсинга тиктока )
3. Погуглить неофициальные апи / библиотеки.
Тут мы и остановимся.

Первая подходящая по описанию библиотека называется ntparser - модуль, который позволяет парсить Nitter - альтернативный статический фронт твиттера (который не использует js, авторизацию, и кучу всего другого). В общем, рид-онли твиттер для privacy-concerned людей.
ntparser оказался дохлым, но вот сам Nitter меня заинтересовал.

Nitter в настоящий момент жив (хотя, вероятно, умрет со временем), и у него даже есть +- 10 публичных инстансов, которые поддерживают добрые люди.
Например, xcancel.com - посмотрите и вспомните, как хорошо выглядел твиттер без рилзов, рекламы и ленты рекомендаций.

Так как nitter отдает безjsные страницы, парсить их условным BeautifulSoap4 - проще простого. Пришлось немножко повозиться с курсором (нет, не с AI-vscode, а с указателем на след. страницу с твитами 21-40), но на все ушло примерно полчаса.
Еще, кстати, nitter позволяет подписываться на твиттер-аккаунты в RSS-виде и забирать их в .xml. Я бегло посмотрел, будет ли так компактнее, чем парсить html - вроде бы нет.

Написал простенький скрипт, который берет первый попавшийся живой инстанс Ниттера и дергает список последних 20 твитов с каждого из заданных аккаунтов раз в минуту - и вроде бинго!
Но оказалось, что любезные хранители инстансов не хотят разориться (или чтобы их инстансы лежали из-за таких умников), поэтому очень скоро клаудфлеровская стена сделала парсинг невозможным :(

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

Это оказалось сложнее, чем я думал - так как сам я человек безграмотный в вопросах docker-compose причуд, пришлось перебрать несколько инструкций и поматериться.
В итоге я остановился вот на этом варианте.

Он, правда, предполагает скармливание логина-пароля от любого твиттер акка для решения проблемы с банами и куками.

Tip! если хотите зарегать "технический" твиттер-акк для подобных целей - не используйте tempmailы - спустя 2-48 часов настоящий твиттер может попросить пруфануть, что активность не suspicious с помощью кода с почты.

И вуаля! Теперь у меня свой локальный твиттер, который я могу парсить сколько хочу (пока ниттер не сломают х-девелоперы)
🔥19👍6🥴3🤡1🌭1
Срочно смени пароль!

Недавно @vitalypavlenko прислал мне интересный скрин: в его старом-мертвом репозитории на Github кто-то оставил и сразу закрыл новую issue (аккаунт создателя уже удален https://github.com/rhaym-tech - наверняка покупной) с таким текстом:

Security Alert: Unusual Access Attempt
We have detected a login attempt on your GitHub account that appears to be from a new location or device,…

И ниже несколько гиперссылок с одной ссылкой - “Change Password”, “Check recent activity” итд.
Для инфо: все issue по умолчанию отбиваются владельцу репозитория на почту.

Если разделить ссылку на части, все становится понятно:

1. https://github.com/login/oauth/authorize - это эндпоинт для авторизации человека в Github App.
Например, это используют для создания кнопки “войти с помощью Github” в своем стороннем приложении.

2. ?client_id=Ov23lit4gvZ7pVctYyZH - это айдишник этого приложения, но по нему нельзя его найти и посмотреть, что именно оно делает. Что имхо крайне тупо со стороны гитхаба, и совершенно не прозрачно.

3. &redirect_uri=https://github-com-settings-applications.onrender.com/auth/callback

Здесь указывается урл, куда надо перебросить пользователя после успешной авторизации в приложении.
скорее всего, болванка-заглушка для колбеков (чтобы скамер получал уведомление, когда кто-то “повелся”). Развернуто на render.com - такая деплоилка-одноразка как heroku. уже удалено (естественно).

4. &scope=repo%20user%20read:org%20read:discussion%20gist%20write:discussion%20delete_repo
%20workflows%20workflow%20write:workflow%20read:workflow%20update:workflow


Тут перечислена куча скоупов, которые ты “разрешаешь” приложению - тут есть почти все: чтение / изменение всех реп, профиля, workflow, и тд.
Думаю, что цель атаки - кража “хороших” акков с целью публикации вредоносного софта или других таких же issues с них.
Вспомнил последнюю статью про Github-скамы - думаю, в том числе отсюда и берутся гитхаб-аккаунты на маркетплейсах.

Потом загуглил (лол, правильный порядок действий), и оказалось, что про это атаку почти месяц назад писал bleeping computer - с их слов, ей подверглись около 12.000 репозиториев.

Интересно, сколько людей на это реально повелось - на мой взгляд, атака довольно тупая: переходишь по ссылке, тебя просят выдать права приложению “gitsecurityapp” - но автоматически этого не произойдет.
Было бы куда круче, конечно, если бы это был 1-click взлом - достаточно перейти по ссылке в браузере, где ты залогинен, сайт виснет и не открывается, а доступы все уже выданы.
Надеюсь, у гитхаба нет такого механизма :))

Вообще, конечно, модерация на Гитхабе расстраивает.
Что в истории с репозиториями с говном, что в этой - как будто отслеживать такое поведение не супер сложно, это супер bold фишинг. Я бы даже за одну ссылку github-com-settings-applications.onrender.com банил.
2👍14🥴3🤡1
Куда ходят мобильные приложения?

https://timsh.org/everyone-knows-your-location-part-2-try-it-yourself/

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

Началось все с того, что один европейский нонпрофит, который занимается GDPR-делами и защитой персональных данных людей в суде, предложил мне поработать с ними в качестве потерпевшего: мол, у меня уже есть пруфы того, что мою локацию + айпишник и еще кучу данных отдали непонятно кому, давай раскрутим из этого кейс.

Быть потерпевшим я как-то не захотел — еще обернется какой-нибудь проблемой, ну вы понимаете.
Но я предложил вместо этого помочь им засетапить такой эксперимент с несколькими людьми и приложениями сразу - такие дела (видимо) работают лучше, чем 1 человек vs 1 приложение. Им идея понравилась, и я ушел делать инструкцию.

Посмотрел на то, как я делал все в прошлый раз (руками просматривал сотни запросов в Charles Proxy), и решил усовершенствовать этот процесс, чтобы его было легко повторить и как-нибудь отмасштабировать.
Пересел на опенсорсный mitmproxy, написал гайд по нему и завел jupyter notebook с кодом, который фильтрует файл с сырыми запросами по ключевым словам и возвращает совпадения в виде таблички.
Гайд + код тут: https://github.com/tim-sha256/analyse-ad-traffic/

Изначально я сделал эту инструкцию для них, а потом подумал: почему бы мне не попробовать провести такой краудсорсинговый эксперимент и предложить людям потратить ~полчаса и проверить какое-нибудь приложение.
Например, из того самого утекшего списка Gravy Analytics — там приложений больше 2к, хватит на всех.
По моим наблюдениям, некоторые из разработчиков приложений из списка “что-то сделали” — те запросы, которые я видел на момент написания первой статьи, частично пропали или стали обфусцированными.

В общем!
Если захотите тоже поучаствовать - проходите гайд и заполняйте гугл форму, если что-то найдете.
Да и статью посмотрите - там и картинки прикольные, и даже зачин на продолжение есть.
1🔥18🕊3
Что таит гит?

https://medium.com/@sharon.brizinov/how-i-made-64k-from-deleted-files-a-bug-bounty-story-c5bd3a6f5f9b

Прочитал супер крутую историю одного bug bounty hunter'a про почти полностью автоматизированный пайплайн, который позволил ему просканировать git-репозитории кучи компаний и найти в них секреты == получить вознаграждение за найденные уязвимости.

Всего он настриг $64k с помощью своего инструмента.

Автор очень подробно рассказывает про то, как устроено хранение файлов, коммитов и метаданных в гите - советую почитать!
Перескажу только самый сок, который и позволил ему получить столько денег: что происходит с файлом, когда его удаляют из гита [из текущей версии / из ветки ...]

The juice — so how do we get all deleted files?:

- Restored deleted files by diffing parent-child commits.
- Unpack all .pack files using git unpack-objects < .git/objects/pack/pack-<SHA>.pack
- Find dangling objects using git fsck — full — unreachable — dangling


Как работает git rm?

Дело в том, что история гита неизменяема, — каждый коммит содержит в себе полный слепок* изменений файловой системы на момент создания, включая референсы — ссылки на файлы, в том числе и удаленные.
Даже те удаленные файлы, на которые референсов вообще нет, остаются в служебных файлах гита на 2 недели.

Получается, что если один раз неосторожно закоммитить условный .env или скрипт с закомменченным API-ключом - он останется в истории навсегда*, и его надо вычищать специальным образом. А многие не знают про это и не вычищают - в текущей версии лишних файлов нет, ну и хорошо.

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


Чтобы по-настоящему очистить историю репозитория или удалить оттуда файл, нужно использовать специальные тулзы вроде git filter-branchgit-filter-repo, либо вручную rebas`ить и прунить мусор - задача, судя по всему, нетривиальная.

Процесс поиска секретов

1. Автор попарсил открытые списки bug bounty програм и составил список из кучи компаний
2. Для каждой компании нашел +- все ее публичные репозитории
3. С помощью алгоритма из цитаты выше восстановил все удаленные файлы
4. С помощью TruffleHog прошелся по каждому файлу и поискал там секреты, а также проверил, настоящие ли они и активны ли до сих пор (за истекшие ключи денег не платят)
5. Настроил автоматические уведомления о найденных живых ключах в тг

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

Самые "дорогие" ключи, кстати, это GCP (Google Cloud Platform) и продовые AWS-токены - найдя такой ключ, можно сделать с инфраструктурой компании много всего (если не вообще все).
За каждый найденный ключ из этой категории, со слов автора, заплатили $5k–$15k.

Мораль

1. Автоматические тулзы для поиска уязвимостей, секретов или незакрытых эндпоинтов вовсю применяются в реальном мире.
Аргументы "да кто меня будет взламывать" медленно теряют свой смысл (особенно, если вам / компании есть, что терять)
2. Будьте осторожны с вашими репозиториями: все, что вы туда закоммитите, останется там +- навсегда, если не проводить гигиеническую чистку.

Ну и еще добавлю, что недавно я тоже нашел AWS-секрет в коде одного "vibecoded" стартапа - мне даже не пришлось никакие удаленные файлы восстанавливать )

Думаю заняться созданием похожего полуавтоматического пайплайна, но с другой аудиторией и немного другими классами уязвимостей.
Как будут какие-то результаты - расскажу!
3🔥20🤡1🥴1
Рикролл в каше

https://www.planujemywesele.pl/sxg-tests/offline-abuse

Увидел тут крайне забавную демонстрацию того, как работают современные браузеры и кеширование в них.

В двух словах:
1. Открываешь инкогнито
2. Гуглишь что сказали
3. Ждешь (там просят сделать несколько действий, но смысл только в ожидании)
4. Вырубаешь интернет и тыкаешь на ссылку из поиска
5. Открывается типичная хромовская страница с динозавром, но…
Читать продолжение в источнике))

Если вам неохота проходить демо самостоятельно или хочется узнать подробнее - вот статья с описанием и видео-демонстрацией.

На таком забавном примере автор демонстрирует, как работает префетчинг страниц в гугле.
Если не вдаваться в подробности: топ-2 сайта из поисковой выдачи + любой сайт из выдачи, на который ты наводишь мышкой на компе, в виде их голого HTML автоматически префетчатся (кешируются) браузером, и ты можешь просмотреть голый HTML сайтов даже в авиарежиме.

Но есть нюанс!
По дефолту, гугл префетчит только HTML страницы из выдачи - если там есть ссылки на css, js или медиа файлы - они не сфетчатся просто так. Если бы на этом история заканчивалась - демо бы не работало, тк спойлер - на открывшейся странице проигрывается видео.

А как это работает?
Оказывается, существует такая не до конца допиленная технология под названием Signed Exchange, которая позволяет гуглу (и не только) префетчить страницу в SXG-формате - насколько я смог понять, это архив, подписанный цифровой подписью.

The Googlebot visits the website. It tells the website it understands the SXG format by setting the appropriate Accept HTTP header.
The website serves the SXG version of a page instead of a raw HTML. SXG encapsulates HTML and is signed with a website private key.


Подробнее можно почитать тут (официальная дока) и тут (статья автора демо на тему)

Если включить такую штуку (можно, например, в Cloudflare ее включить), то можно добиться того, что когда пользователь повлипал в выдачу несколько секунд, а затем ткнул на ваш сайт, он загрузится почти мгновенно со всеми потрохами, картинками и стилями.

Круто ли это?

Демонстрация точно прикольная. Еще и кликбейтная: “как авиарежим обманывает нас” и все такое.
А вот сама технология...

Автор сам приводит в статье про SXG кучу нюансов - если честно, я не понимаю, нахрена он продолжил этим заниматься (он сделал на своем “настоящем” сайте SXG), зная все это:

- Ты больше не владелец того, куда переходит пользователь. “оно” лежит на каком-то CDNе в уже запакованном виде - это дает сильно меньше контроля, чем закешенная HTMLка, которая додергивает стили, скрипты и картинки (хотя и это не тру контроль, конечно).
Больше того, гугл позволяет purge`ить такой кеш только асинхронно (очень медленно), и по одному урлу за раз.

- Server-side аналитика и любая персонализация сайта через бэк перестает работать.
Хочешь что-то считать или персонализировать - засовывай все это в client-side js.

Короче, я бы это делать не стал.

На моем опыте даже обычное кеширование js-файлов приводит к куче проблем: представьте себе web-viewer для 3D моделей, который после починки бага на проде не обновляется еще час - это реальный кейс из прошлого.
Я молчу про Cloudflare`овские прокси и CDN, из-за которых периодически в некоторых странах на ваш сайт тупо невозможно попасть - со мной такое было бувально месяц назад.

Плюс я считаю всю тему “самый быстрозагружающийся сайт на диком западе” довольно дурацкой - в реальности пользователю вашего сайта про свадьбы или кибербезопасность (я не говорю про уровень бигтеха, у которого свой CDN с блекджеком) наплевать, загружается он 100 мс или 1 секунду.

В то же время сайты систематически “жирнеют” год за годом, обрастая кучей ненужных вещей (ой, а может еще тут анимация будет?).
Удивительно, но yet another vibecoded лендингу на next.js сначала нужны 400 node-modules для сборки, а потом 30 js-скриптов для отображения формы обратной связи - а без этого никак :(

Зато можно потом это упаковать в SXG - и проблема решена!
👍13🌭4