Loading market data...

should reflect the main news. We

should reflect the main news. We

etc. We'll translate the lead, sections, and closing. Let's translate step by step. Lead: "Security researchers at Socket have identified 40 Firefox add-ons with confirmed malicious behavior designed to steal crypto wallet data. The campaign ran from at least March into August, with Mozilla signing records showing 59 versions between March 9 and Aug. 3, and activity clustering in April and late July. Anyone whose recovery phrase, private key, or wallet keyring was exposed to a malicious version must treat the wallet as compromised — uninstalling the add-on can't revoke a secret that's already been sent." Translation: "Исследователи безопасности из Socket выявили 40 дополнений Firefox с подтверждённым вредоносным поведением, предназначенных для кражи данных криптокошельков. Кампания длилась как минимум с марта по август, при этом записи подписи Mozilla показывают 59 версий в период с 9 марта по 3 августа, а активность была сосредоточена в апреле и конце июля. Любой, чья фраза восстановления, закрытый ключ или связка ключей кошелька были раскрыты вредоносной версией, должен считать свой кошелёк скомпрометированным — удаление дополнения не может отозвать секрет, который уже был отправлен." We need to ensure natural flow. "связка ключей" is okay. "фраза восстановления" is standard. "закрытый ключ" is standard. Section 1: "How the add-ons worked" -> "Как работали дополнения" Paragraph: "The 40 malicious identities used four distinct attack paths. Seven were remote-controlled phishing loaders. Fifteen captured recovery phrases, private keys, or wallet secrets. Thirteen were modified clones of the Rabby wallet that sent serialized keyrings away before encryption. And five collected credentials and clipboard data. Each path ends with the same outcome: the attacker can empty the wallet." Translation: "40 вредоносных идентичностей использовали четыре различных пути атаки. Семь были удалённо управляемыми фишинговыми загрузчиками. Пятнадцать захватывали фразы восстановления, закрытые ключи или секреты кошелька. Тринадцать были модифицированными клонами кошелька Rabby, которые отправляли сериализованные связки ключей до шифрования. И пять собирали учётные данные и данные буфера обмена. Каждый путь приводит к одному и тому же результату: злоумышленник может опустошить кошелёк." Section 2: "The sports-score disguise" -> "Маскировка под спортивные результаты" Paragraph: "Some of these add-ons had a double life. Nine of them had previously distributed sports-score tools under the same IDs, and the report lists 37 more as deceptive or suspicious sports-score shells without a confirmed theft payload. That's a plausible cover: a user installs a score app, then a 'wallet' update appears later." Translation: "Некоторые из этих дополнений вели двойную жизнь. Девять из них ранее распространяли инструменты спортивных результатов под теми же идентификаторами, а в отчёте перечислены ещё 37 как обманчивые или подозрительные оболочки спортивных результатов без подтверждённой кражи. Это правдоподобное прикрытие: пользователь устанавливает приложение для счёта, а затем появляется «обновление кошелька»." Section 3: "What users should do" -> "Что делать пользователям" Paragraph: "Socket's advice is blunt: uninstalling the add-on doesn't fix anything. Affected users should move remaining assets to a fresh crypto wallet created from a new recovery phrase, change passwords, terminate active sessions, and verify any copied destination addresses before sending. The threat isn't limited to the wallet itself — any credential or session that touched the add-on is suspect." Translation: "Совет Socket прямолинеен: удаление дополнения ничего не исправит. Пострадавшим пользователям следует переместить оставшиеся активы в новый криптокошелёк, созданный с новой фразой восстановления, сменить пароли, завершить активные сеансы и проверять скопированные адреса назначения перед отправкой. Угроза не ограничивается самим кошельком — любые учётные данные или сеансы, которые соприкасались с дополнением, подозрительны." Section 4: "What's still unknown" -> "Что остаётся неизвестным" Paragraph: "Socket documented the theft capability and exfiltration infrastructure but didn't identify confirmed victims, attributable transactions, or a campaign loss total. Mozilla says it uses automated risk indicators and human review to catch malicious wallet add-ons, and advises users to install only extensions linked from the wallet provider's official site. It hasn't said whether these specific add-ons have been pulled or if a wider cleanup is in progress." Translation: "Socket задокументировал возможность кражи и инфраструктуру вывода данных, но не выявил подтверждённых жертв, атрибутируемых транзакций или общую сумму потерь от кампании. Mozilla заявляет, что использует автоматические индикаторы риска и проверку людьми для выявления вредоносных дополнений для кошельков, и рекомендует устанавливать только расширения, ссылки на которые есть на официальном сайте поставщика кошелька. Не сообщается, были ли удалены эти конкретные дополнения или проводится более широкая очистка." Closing paragraph: "For now, the safest move for anyone who used a Firefox wallet extension in the past few months is to treat it as compromised and start fresh." -> "Пока что самый безопасный шаг для тех, кто использовал расширение кошелька Firefox в последние несколько месяцев, — считать его скомпрометированным и начать заново." We need to combine all into the content string with
tags. We'll use

for section headings. We'll also include the lead as a

. We'll ensure proper HTML. Now, meta description: We need to create a Russian meta description. The original is not given, but we can generate one. Something like: "Socket обнаружил 40 вредоносных дополнений Firefox, крадущих секреты криптокошельков. Узнайте, как они работали и что делать, если вы пострадали." That's about 150 characters. We'll use that. Now, we need to output JSON. We'll ensure the content is a string with escaped quotes if necessary. We'll use double quotes for JSON, so we need to escape any double quotes inside. We'll use single quotes for Russian text? Actually, we'll just use double quotes for the JSON string, and inside the content we have double quotes for HTML attributes? We don't have any attributes. We have

and

tags, no attributes. So we can just put the content as a string. We'll need to escape any double quotes in the text. We have "wallet" in quotes in the translation: «обновление кошелька» - we used Russian guillemets, which are fine. We also have "wallet" in English? No. We'll use Russian quotes. We'll avoid double quotes inside. We'll use « » for quotes. So no escaping needed. We'll produce the JSON. Let's write the final content string: "

Исследователи безопасности из Socket выявили 40