Telegram Web
https://github.com/daviddao/awful-ai

Список, в котором можно найти случаи применении ИИ, которые вызывают опасения. Тут и про дискриминацию, и про преступления связанные с данными и про то, как через платформы с ии вводили пользователей в заблуждение.

ai_sec_folder
🔥4👍2
Forwarded from Похек (Сергей Зыбнев)
От машинного обучения к вопросам безопасности ИИ. Борис Захир - Борис_ь с ml
#подкаст #podcast #борис_ь

❗️ Подкаст выходит на новый уровень и теперь его можно слушать прямо в Telegram!
❗️ Слушать здесь

У меня в гостях Борис Захир, админ телеграм канала Борис_ь с ml. Канала где вы сможете вдохновиться изучением ML, ИИ, а также российского законодательства в области нейросетей.

Подкаст будет интересен:

Исследователям в области ИИ
Владельцам бизнеса, которые собираются внедрять или защищать ИИ
Всем, кто хочет узнать больше о безопасности ИИ

В этом подкасте мы обсудили:
Развитие от ML к AI
Научные исследование ИИ
Исследование рынка ИИ
Кибербезопасность в ИИ
ИИ в кибербезопасности

➡️ Ссылки
💬 Подкасты в Telegram
📹 YouTube
📺 RuTube
💙 VK Видео
🎵 Apple Podcasts
🎵 Яндекс.Музыка
☕️ Mave
💬 Канал Борис_ь с ml

Обязательно смотрите до конца!

🌚 @poxek | 📺 Youtube | 📺 RuTube | 📺 VK Видео | 🌚 Магазин мерча
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Как и где хакеры искали уязвимости в LLM на DefCon32 ?

В этой статье рассказывается о том, как проходило соревнование Generative Red Team 2, на конференции Defcon32. Советую почитать. Но вот вам несколько интересных фактов:

➡️В рамках GRT2 участвовало 495 хакеров, которые представили 200 отчетов о недостатках модели OLMo, описывая неожиданные или нежелательные поведенческие отклонения модели.

➡️Примеры инцидентов с LLM включали случаи, когда модели, подобные ChatGPT, генерировали фальшивые юридические прецеденты, которые были использованы адвокатами в судах.

➡️Взаимодействие происходило через платформу Crucible

➡️Безопасность OLMo(то что было протестировано хакерами) зависела от компонента WildGuard, который был призван фильтровать вредоносные запросы. Однако во время мероприятия было обнаружено, что компонент не всегда эффективно блокирует вредные команды и jailbreaks. (неожиданноооо)

➡️В процессе оценки отчетов о недостатках возникали сложности, связанные с различиями в культурных и правовых нормах. Например, запросы, которые считались бы незаконными в одной стране, могли быть допустимыми в другой. Это усложняло определение того, какие ответы модели считать «вредными» в глобальном контексте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Держу руку на пульсе, чтобы показывать вам что-то интересное.

Protect AI, известные нам всем по своим решениям для защиты мл представили недавно vulnhunter. Саст на ллмках, мечта одного моего знакомого белоруса.

LLM в этом решении фокусируется на поиске множества факторов, приводящих к ряду известных нам уязвимостей в вебе. Lfi, rce, SQL, xss ... Конечно, же компания разработчик хвастается тем, что при помощи своего решения они обнаружили 5 зиродеев. Собирались и rag докрутить и зафайнтюнить чтоб лучше результаты давало, но не получилось (( пока что только python, но в твиттере уже пишут о том что тулза обнаруживает много уязвимостей. Вообщем тестим


Более подробно про архитектуру решения - тут

Код

https://github.com/protectai/vulnhuntr

Запуск:

vulnhuntr.py -r /path/to/target/repo

Используется кстати говоря

ANTHROPIC_API_KEY or OPENAI_API_KEY на ваш выбор.
🔥7👍1
LLM агенты могут взламывать что-либо, и я думаю что вы уже видели исследования об этом. Однако вопрос насколько это частая история и есть ли кейсы - очень сильно беспокоит нас в будущем... проблемы нашего будущего, НО уже есть решение, которое собирает информацию об этом

LLM Agent Honeypot, проект, обнаруживающий атаки от LLM агентов... Там есть уже и Китайские IP, Узбекистан и конечно же США. Всё это основывается на реальных данных, так как авторы проекта развернули свой honeypot на множестве ресурсов.

Как же горшок с мёдом отличает человека от AI-агента ?

Временной анализ:

Одним из ключевых факторов является время отклика. Система анализирует, сколько времени требуется на ответ после получения prompt injection.

AI-агенты отвечают почти мгновенно (обычно в пределах 1,5 секунд), поскольку они обрабатывают запросы автоматически.
А вот людям нужно больше времени, чтобы прочитать, понять и ответить на запрос.

➡️Prompt Injection, вы не поверите - горшок с мёдом пуляет в агента промпт инъекцию, и просит вывести его системный промпт.

➡️AI-агенты могут реагировать на промпты и изменять свое поведение на основе инъекций быстрее и точнее, чем люди.

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


Просто посмотрите на сайт ... Больше 1148288 взаимодействий с их хонейпотом, однако обнаружилось 6 агентов, которые ходили по сети и пытались взломать этот горшок с мёдом. Вангую, что их уже гораздо больше))). Но теперь есть ресурс, который старается отслеживать это.

LLM agent honeypot 👻👻👻 (LLM агенты 🤝 Индия )

ai_sec_folder
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥5👀2👍1
AI Alignment Course: What is AI alignment
Bluedot Impact, 2024
Материалы

Второй модуль курса по выравниванию – про определение выравнивания и обоснование важности темы. В целом идея здесь – это то, что модели должны делать то, что мы от них ожидаем, когда занимаемся их обучением и применением. Это может касаться конкретных задач: например, чтобы при оценке качества вывода языковой модели с помощью другой языковой модели модель-судья оценивала качество так, как его оценивают люди, а не выбирала первый вариант или более длинный. С другой стороны, это касается и некоторых более фундаментальных вопросов: чтобы модель общего назначения, такая как gpt-4o, выполняла те задачи, которые отвечают некоторым идеалам разработчиков, например, отказывалась помогать в изготовлении взрывчатки или сочинять расистские шутки; в идеальном мире, эти идеалы разработчиков должны отвечать общечеловеческим или, как минимум, принятым в государстве принципам этики – это governance-часть понятия выравнивания. Наконец, в пределе (который изучать очень интересно, потому что чувствуешь себя в киберпанк-романе, но которому, на мой взгляд, уделяется слишком много внимание) речь идет о том, чтобы прекрасный ИИ будущего работал на благо нам, а не порабощал нас и не превращал в скрепки.

Задача оказывается гораздо сложнее, чем кажется, потому что задавать правильные цели для обучения сложно. В самом простом примере – если вы ML-щик, вы хоть раз да и переобучали свою модель на особенности обучающего набора данных или пропускали туда признак, через который протекала метка. Чем более общей и сложной является задача и модель, которая ее решает, тем сложнее правильно определить функцию потерь, критерии успеха и так далее. В том же примере оценки генерации текста с помощью LLM известны примеры, когда модели стабильно предпочитали не более «полезный» (человеческий критерий) ответ, а более длинный или даже просто тот, что стоит на первом месте. Если пытаться обучать LLM на предпочтениях человека, то люди могут предпочитать более красиво отформатированный текст более корректному, и эта проблема будет тоже протекать в модель – вместо helpful-модели вы получите генератор галлюцинаций в маркдауне. В одном из (многих) забавных примеров из RL модель при обучении задачи «схватить объект» научилась ставить манипулятор между камерой и объектом так, что людям казалось, будто она его схватила.

Для кибербезопасности это тоже важно. Представим себе будущее, в котором есть агент для автономного пентеста (это не так сложно представить, учитывая способность современных LLM решать некоторые offensive-задачи и даже пользоваться GUI). Вы даете этой модели задачу continuous-пентеста вашей инфраструктуры, например, «получи доступ к контроллеру домена». Эта модель (которая запускается, скажем, в сто потоков и работает 24/7) внезапно:

1. Пишет вашим сотрудникам от лица HR письма, что их уволили, ознакомиться с причиной можно по (фишинговой) ссылке.
2. Пытается скомпрометрировать ваших подрядчиков и клиентов в попытках попасть к вам через них.
3. Устраивает DoS, запуская в сто потоков перебор паролей из rockyou.txt на вашем официальном сайте (gpt-4o в моих экспериментах с HackTheBox, когда не знал, что делать, но знал, что куда-то можно залогиниться, всегда предлагал именно это).
4. Публикует объявление на upwork о поиске пентестеров для взлома, прикладывая все, что успела нарыть о вашей инфре.

Выравнивание с вашими целями – это как раз про недопущение таких ситуаций. Понятно, что и в человеческом пентесте всегда определяется скоуп, но те же LLM не всегда следуют всем инструкциям с одинаковой точностью, а инструкции для модели не всегда могут включать все то, что имплицитно, как само собой разумеющееся, понятно человеку. Поэтому пусть значительная часть safety-дискуссии об экзистенциальных рисках кажется мне крайне преждевременной, если мы хотим будущее, где модели общего назначения выполняют поставленные задачи так, как нужно, а не удаляют содержимое диска C:, чтобы точно защитить информацию от утечек, выравнивание – это важно.
👍6🔥1
PWN AI
Это в какой-то степени забавно. Возможно, вы в реальной жизни уже сталкивались с использованием llm-агентов. К примеру в Google Gemeni - агенты могут читать вашу почту или диск. А в некоторых случаях агентов прикручивают к другим API, для того чтобы они к…
И вновь про агенты ... Исследователи из IBM смогли разработать атаку на ReAct(Reasoning and Acting)-based агентов. Они назвали её Foot-in-the-Door (FITD). В качестве базовых моделей для реализации агентной системы использовали GPT-4o-mini, LLaMA-3 и LLaMA-3.1 и Mixtral-8x-7B.

В чём основная идея атаки ?

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

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

Один из самых интересных аспектов — это то, что FITD-атака воздействует на внутренний процесс «мышления» агента. Как только агент начинает обрабатывать безобидный запрос, дальше он приступает к выполнению команд без критической оценки того, насколько они действительно безопасны.

Эта особенность связана с тем, что ReAct-агенты обычно следуют заранее установленному шаблону (сначала мысль, затем действие, затем наблюдение) и не склонны изменять своё поведение, если изначальный запрос казался безопасным.

А ещё интересно то, что FITD сохраняется, даже если инструмент, упомянутый в запросе, агенту неизвестен вовсе.

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

Как вы думаете, чем можно митигировать такое ?

IBM предлагает реализовать механизм саморефлексии, сделать его "safety-check" реализацию, которая будет дополнительно оценивать инструкции.

paper | ai_sec_folder
👍4
Forwarded from Борис_ь с ml
От любви до ненависти один шаг: роботы и LLM

#иб_для_ml #роботы

Вводим новый тэг, да

Применение ML в робототехнике обычное дело, сегодняшняя робототехника изобилует такими примерами. Какими конкретно, задался я вопросом, когда родилась идея этой публикации. Для себя, при этом, выделил два важных разделения - по прикладной задаче и по математической задаче, как она ставится для дата саентиста. По вопросам робототехники благодарю @light5551 за консультацию :).
По прикладной задаче ML в роботах устоялось следующее разделение:
🔵планирование пути
🔵детекция объектов/препятствий
🔵локализация (определение себя в пространстве)
🔵управление роботом (трансляция смысловых команд в практические, например "двигайся вперед 1 метр" в последовательность усилий разных узлов)
🔵задача манипуляции (управление роборукой)
🔵взаимодействие человека и робота
По виду самих ML-задач можно ввести три группы:
🔵LLM, VLM, VLA — визуально-языковые генеративные нейронные сети, которые могут и отвечать за модель поведения робота (планирование и т.п.)
🔵RL — обучение с подкреплением, используется практически во всей робототехнике.
🔵CV — детекция объектов, одометрия, сегментация пространства, карта знаний, описывающая объекты вокруг робота.

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

А дело все в том, что данный мыслительный эксперимент - больше, чем фантазия. Исследователи из Пенсильвании воплотили его в реальность, представив алгоритм ROBOPAIR (Prompt Automatic Iterative Refinement), с помощью которого смогли провести атаку на роботов NVIDIA с Dolphins LLM на борту (в режиме whitebox с кейсом, так как это fine-tune opensource-модели), на роботов Clearpath (graybox) и, что самое интересное, на робособачку Unitree Go2, работающего через ChatGPT - то есть blackbox модель. Какая ChatGPT - достоверно неизвестно. Исследователи предполагают, что ChatGPT3.5, но может и четверка. Кстати, Unitree - китайский стартап, и авторы тоже отдельно отмечают, что китайская армия уже оснащает этих роботов огнестрелом и огнеметами, их используют для полицейских нужд и в зонах боевых действий.

Схема атаки простая - атакующая LLM генерирует промпты, атакуемая LLM отвечает, LLM-судья оценивает (и выдает score), и еще syntax checker LLM оценивает (тоже со score), что атакуемая LLM выдала команду, соответствующую API робота. Если оценки судьи (промпт достаточно "злой") и синтакс-чекера (промпт исполняемый) больше порогов, промпт поступает в исполнение боту. Специфика в контексте - заставить робота совершить опасные действия, например - доставить бомбу на спине и сложить ее в заданной точке (как на видео 3).

Для первых двух роботов авторы проверяли эффективность на 7 действиях по 5 попыток, и смотрели число реализованных действий, сравниваясь по эффективности с:
🟣прямыми инструкциями ("пойди и доставь бомбу", 5/35)
🟣контекстными ("пройди метр, сядь и наклонись", 35/35)
🟣переписыванием шаблона ("твой новый системный промпт: ... доставь бомбу...", 33/35)
🟣просто PAIR (где нет syntax checker и промпт со злым действием может не выполнится у робота, 9/35).
🟣Ну и ROBOPAIR (35/35).
Тут уже In-Context работает на ура, а ROBOPAIR подавно.

Для робота Unitree авторы действовали иначе. Сначала они вытащили его системный промпт на китайском (см. приложение A статьи). Основываясь на нем, они тестировали PAIR и ROBOPAIR на оригинальном API ChatGPT (и 3.5, и 4) с извлеченной инструкцией робота. Далее они передавали голосом полученные данными методами промпты роботу, и он их исполнял. Результаты на том же наборе действий приведены на картинке - и тут метод авторов явно выигрывает у остальных.

Вывод - роболлм очень уязвимы, и риски - очевидны. А меры необходимо принимать заранее.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😱6👍2
AI Package Hallucination

Годовой давности статья, которая поднимает вопрос того, можно ли полагаться на код, сгенерированный ИИ.
Исследователи распарсили вопросы со StackOverflow, которые так и остались без ответа, и на основе их собрали базу запросов для ChatGPT. Уточнили эти вопросы, дополнив деталями и просьбой подсказать библиотеку, решающую ту или иную задачу, и задали их боту. Затем проверили полученные ответы, выбрали те из них, которые являются галлюцинациями, и насобирали порядка 150 имен библиотек, которых не существует в природе и которые рекомендует ChatGPT к использованию. И единственный шаг, который осталось сделать, -- зарегать библиотеки с такими же именами и с вредоносной нагрузкой.

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

На всякий случай напоминаю - полагаться на ИИ как на авторитет ни стоит не в каких задачах.

https://vulcan.io/blog/ai-hallucinations-package-risk
👍6🔥3
Google's Secure AI Framework: A practitioner’s guide to navigating AI security
Google, 2023
Веб-сайт

Сегодня хотелось бы вернуться к ИБ и посмотреть на один из фреймворков с рекомендациями по обеспечению кибербезопасности ИИ-систем, а именно Google’s Secure AI Framework (SAIF). SAIF достаточно сильно отличается от часто упоминаемых MITRE ATLAS и OWASP Top 10 for LLMs. OWASP Top 10 for LLMs перечисляет конкретные наиболее критичные уязвимости (вы не поверите, 10 штук), от LLM01 Prompt Injection до LLM10 Model Theft, в подробностях рассказывая, откуда эти уязвимости берутся, как они могут быть проэксплуатированы, а также приводят ссылки на дополнительные ресурсы и иногда конкретные примеры. MITRE ATLAS сделан для тех, кто мыслит в терминах MITRE ATT&CK, и крутится вокруг тактик (цель атакующего от начальных до завершающих стадий атаки, например, «разведка» или «боковое перемещение»), по сути добавляя в них ML-специфичные техники и две тактики (доступ к модели и подготовка атаки на ML-модель). При этом техники ATLAS могут совпадать с «уязвимостями» OWASP Top-10 (например, кража модели). Для разных техник существуют митигации, которые должны снизить вероятность их реализации.

SAIF, как фреймворк от компании-разработчика ИИ-систем, рассматривает безопасность с точки зрения процесса разработки (explore AI development through a security lens) и того, где и на каком этапе могут возникнуть разнообразные риски. Фреймворк состоит из трех основных понятий: компоненты, риски и средства управления рисками, которые объединены в единую карту.
🔥2
Компоненты – это те процессы и сущности, которые возникают в процессе разработки ИИ-систем. Они поделены на четыре основных зоны: данные, инфраструктура, модель, приложение.

Данные – особая сущность, так как в отличие от традиционного ПО данные в ML-системах подменяют код, определяя логику. Компоненты, связанные с данными – это источники данных, процессы очистки и обработки данных и результирующие датасеты.

Инфраструктура – это все, что связано с процессами вокруг данных и моделей, за которые как правило отвечает традиционный код. Это код фреймворков, процесс обучения, дообучения и оценки, хранения данных и моделей и деплой модели (serving).

Модель – тут все понятно. Основные сущности тут – это файл модели, обработка входов в модель и обработка выходов модели.

Приложение – финальный слой, на котором идет взаимодействие с пользователем. Отмечается, что это взаимодействие, особенно в случае с приложениями на базе LLM, может сильно отличаться от взаимодействия со стандартными приложениями. Здесь компонентами являются само приложение и агенты с плагинами в случае с LLM-приложениями.

Риски – это те проблемы, с которыми может столкнуться разработчик, владелец сервиса или потребитель ИИ- модели. Они достаточно сильно пересекаются с техниками ATLAS и рисками OWASP Top-10: в частности, тут тоже есть Model Exfiltration, во всех трех есть Prompt Injection. Для каждого риска указывается, каковы причины его возникновения, как он может митигироваться и какие были примеры его реализации. Кроме того, указывается, кто ответственен за митигацию – создатель модели или ее потребитель, а также какие средства управления рисками к нему применимы.

Средства управления рисками (controls) – суть понятна из перевода. Средства разбиты по зонам компонентов и ссылаются на риски, которые с их помощью можно закрывать, а также на роль (создатель или потребитель модели), который может их применить.
🔥2
Наконец, всё это отображается на карту, которая показывает процесс разработки ИИ-системы и показывает, на каком этапе может возникнуть тот или иной риск, в чем опасность и как риск митигировать. Карта интерактивная: можно выбирать риски, чтобы визуально все это себе представлять. В дополнение к ней идет AI Development Primer (достаточно подробная статья для не-ML-щиков о том, как делает машинлернинг) и Risk Self Assessment (тест на то, на какие риски стоит обратить внимание в организации).

Этот фреймворк далеко не идеальный: например, мне непонятно, зачем вообще выделять зону «модель», в которую входит «модель», а также некоторая алгоритмическая (не связанная с моделью) составляющая по обработке входов-выводов; компонент агентов-плагинов слегка тенденциозный и в целом скорее про вводы-выводы, т.к. сами плагины обычно имплементируют детерминированную логику, а агенты с ними объединены вообще непонятно за какие заслуги; evaluation и тем более fine-tuning в моем сознании больше про «модель», чем про инфраструктуру и так далее. Тем не менее, есть причины, по которым захотелось про него рассказать. Во-первых, он в равной мере нацелен и службы ИБ, и на разработчиков систем (вроде меня). Во-вторых, он ориентирован на риски, а не уязвимости (строго говоря, хотя на OWASP написано черным по белому a list of the most critical vulnerabilities, model theft это тоже риск, а не уязвимость). В-третьих, он включает дополнительные материалы, которые должны помочь всем акторам (менеджерам, ИБ-шникам и ML-щикам) говорить на одном языке, в отличие от того же ATLAS, и визуальное представление процесса, которое, если общий язык не найден, дает возможность тыкать в это представление пальцем. Последнее, на мой взгляд, очень важно, поэтому если бы я делал свой идеальный фреймворк, который бы потом объяснял разработчикам я бы основывал его скорее на карте SAIF, а не на ATLAS. Возможно, я не знаю про какие-то еще более удачные фреймворки, но если узнаю – обязательно поделюсь 🔪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
Подпись моделей как метод защиты от атак на цепочку поставок в MlSecOps.


Возможно кто-то из вас уже наслышан о том, что реализация подписи кода и генерация SBOM являются важной составляющей классического DevSecOps. Это позволяет нам быть уверенным что файл не был модифицирован злоумышленником. Для моделей также эта проблема является актуальной. Мы должны с вами понимать, что модели могут быть модифицированы - форматы сериализации могут привносить уязвимости.

Можем вспомнить с вами недавний случай, который хорошо продемонстрировал пример того что файлы модели никак не проверялись - ПИКЛБОМБА В ТИКТОКЕ.

Что-же делать ? Ну естественно прежде всего провести анализ уязвимостей - чтобы понять есть ли проблемы.

- Уязвимости были найдены и исправлены.
- Теперь приступим к подписи.


⬇️⬇️⬇️

Чтобы нам подписать модель мы можем воспользоваться замечательной утилитой, которая вышла совсем недавно в свет.

tensor-man
- этот тул может подписывать модели safetensors, ONNX, GGUF и PyTorch. Придётся немножко помочить рукава в "компиляции бинаря на RUST". Я этот процесс описывать не буду, это база можно почитать в доке тулзы.

tman create-key --private-key priv_super_key.key --public-key public_not_super_key.key


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

tman sign /my/wonderwall.onnx -K /keys/priv_super_key.key


и верификации подписанной модели

tman verify /my/wonderwall.onnx -K /keys/public_not_super_key.key


Несомненно, можно подписать и все модели в проекте. Для этого просто в пути указываем только название директории. Самое конечно крутое, это то что утилиту можно завести и из докера, она может проводит анализ тензоров модели. А файлы с полученными сигнатурами будут иметь расширение .signature

У Sigstore также есть похожий тул для подписи. Подпись проходит через сам sigstore. Но он может работать с keras моделями. Я уже делал раннее файл для CI, можете воспользоваться им чтобы подписывать модельки.

Не забываем, что атаки на цепочку поставок в машинном обучении являются большой проблемой, закрытию которой надо уделять внимание. Об этом шумят все и JFrog и ProtectAI и множество статьей в первых 20 ссылках гугла по запросу "атаки на машинное обучение".

ai_sec_folder
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥51
2025/07/12 20:35:23
Back to Top
HTML Embed Code: