#hack #DAOMaker
Взлом DAOMaker - в функции инициализации не было проверки, кто ее вызывает - поменяли овнера контракта на себя и потом вывели средства функцией экстренного вывода
https://slowmist.medium.com/intelligence-of-slowmist-zone-dao-makers-vesting-system-was-hacked-5825e4828969
Взлом DAOMaker - в функции инициализации не было проверки, кто ее вызывает - поменяли овнера контракта на себя и потом вывели средства функцией экстренного вывода
https://slowmist.medium.com/intelligence-of-slowmist-zone-dao-makers-vesting-system-was-hacked-5825e4828969
Medium
【Intelligence of SlowMist Zone】 DAO Maker’s vesting system was hacked.
The attacker finally made a profit of nearly $4 million .
#hack #reentrancy #CREAM
Взлом C.R.E.A.M. Finance (31.08.2021) через reentrancy баг
https://medium.com/cream-finance/c-r-e-a-m-finance-post-mortem-amp-exploit-6ceb20a630c5
Взлом C.R.E.A.M. Finance (31.08.2021) через reentrancy баг
https://medium.com/cream-finance/c-r-e-a-m-finance-post-mortem-amp-exploit-6ceb20a630c5
Medium
C.R.E.A.M. Finance Post Mortem: AMP Exploit
Dear C.R.E.A.M. community, partners & friends, we firstly want to reassure you that we’ve stopped the exploit. Thank you to everyone who…
#challenge #writeup
Прохождение задания из NeoQUEST-2017
https://habr.com/ru/company/neobit/blog/324456/
Прохождение задания из NeoQUEST-2017
https://habr.com/ru/company/neobit/blog/324456/
Хабр
Криптовалюта Ethereum: пишем эксплойт под уязвимый умный контракт и получаем токены
Сколько копий уже сломано в разговорах о криптовалюте? Банки и государственные учреждения спорят о ее правовом статусе, а частные организации придумывают различ...
Crypto Offensive pinned «#challenge 23 уязвимых смартконтракта, которые надо взломать: https://ethernaut.openzeppelin.com/»
#logic #TIDAL #vuln
Tidal Finance исправили критический баг в логике контракта (31.07.2021), который позволял атакующему вывести средства из пула
https://medium.com/immunefi/tidal-finance-logic-error-bug-fix-postmortem-3607d8b7ed1f
Tidal Finance исправили критический баг в логике контракта (31.07.2021), который позволял атакующему вывести средства из пула
https://medium.com/immunefi/tidal-finance-logic-error-bug-fix-postmortem-3607d8b7ed1f
Medium
Tidal Finance Logic Error Bugfix Review
Summary
#guide #FEI
Это руководство поможет настроить локальную среду и воспроизвести эксплуатацию #flashloan уязвимости в Fei Protocol на Ethereum
https://medium.com/immunefi/a-guide-to-reproducing-ethereum-exploits-fei-protocol-224b30b517d6
Это руководство поможет настроить локальную среду и воспроизвести эксплуатацию #flashloan уязвимости в Fei Protocol на Ethereum
https://medium.com/immunefi/a-guide-to-reproducing-ethereum-exploits-fei-protocol-224b30b517d6
Medium
A Guide to Reproducing Ethereum Exploits: Fei Protocol
This guide, written by whitehat Lucash-dev for Immunefi, will help you set up a local environment and reproduce the Fei Protocol exploit…
#vuln #FEI
Подробный анализ упомянутой в предыдущем посте уязвимости в Fei Protocol (2.05.2021), которая была найдена в ходе аудита и позволяла вывести 60,000 ETH через #flashloan атаку
1) https://medium.com/immunefi/fei-protocol-flashloan-vulnerability-postmortem-7c5dc001affb
2) https://medium.com/fei-protocol/fei-bonding-curve-bug-post-mortem-98d2c6f271e9
Подробный анализ упомянутой в предыдущем посте уязвимости в Fei Protocol (2.05.2021), которая была найдена в ходе аудита и позволяла вывести 60,000 ETH через #flashloan атаку
1) https://medium.com/immunefi/fei-protocol-flashloan-vulnerability-postmortem-7c5dc001affb
2) https://medium.com/fei-protocol/fei-bonding-curve-bug-post-mortem-98d2c6f271e9
Medium
Fei Protocol Flashloan Vulnerability Bugfix Review
Summary
#hack
Перечень взломов #defi проектов в 2021 году с детальным анализом и эксплойтами 🔥🔥🔥
https://github.com/openblocksec/blocksec-incidents/blob/main/defi/2021.md
Перечень взломов #defi проектов в 2021 году с детальным анализом и эксплойтами 🔥🔥🔥
https://github.com/openblocksec/blocksec-incidents/blob/main/defi/2021.md
#hack
Ресёрчер умудрился высосать ликвидность с кастодиальных Lightning Network сервисов (Bitfinex, LNMarkets, Southxchange). Суть в следующем: атакующий сначала пополняет свой аккаунт через #LN, потом выводит со своего аккаунта монеты через LN в канал, к которому ведет один единственный маршрут, проходящий через специальную подставную LN-ноду, которая берет большую комиссию за маршрутизацию платежей. Если сервис не сильно заморачивается о комиссиях в Lightning Network (LN это же дешево, да?), то при многократном проведении платежей он может растерять на комиссиях все биткоины. Так, ресерчеру удалось автоматизировать процесс и высасывать ликвидность со скоростью до 0.04 #BTC в час.
LNMarkets залатали дырку. Bitfinex и Southxchange до сих пор уязвимы
https://www.reddit.com/r/Bitcoin/comments/pqjcvo/stealing_sats_from_the_lightning_network/
Ресёрчер умудрился высосать ликвидность с кастодиальных Lightning Network сервисов (Bitfinex, LNMarkets, Southxchange). Суть в следующем: атакующий сначала пополняет свой аккаунт через #LN, потом выводит со своего аккаунта монеты через LN в канал, к которому ведет один единственный маршрут, проходящий через специальную подставную LN-ноду, которая берет большую комиссию за маршрутизацию платежей. Если сервис не сильно заморачивается о комиссиях в Lightning Network (LN это же дешево, да?), то при многократном проведении платежей он может растерять на комиссиях все биткоины. Так, ресерчеру удалось автоматизировать процесс и высасывать ликвидность со скоростью до 0.04 #BTC в час.
LNMarkets залатали дырку. Bitfinex и Southxchange до сих пор уязвимы
https://www.reddit.com/r/Bitcoin/comments/pqjcvo/stealing_sats_from_the_lightning_network/
Reddit
From the Bitcoin community on Reddit: Stealing Sats from the Lightning Network Custodial Services
Explore this post and more from the Bitcoin community
#xmr #privacy
Кольцевая подпись в Monero смешивает 1 настоящий тратящийся юзером выход транзакции с 10 другими случайно выбранными выходами транзакций ("примеси"). При чем для стороннего наблюдателя должно быть непонятно, какой 1 из 11 выходов настоящий, а какие являются примесями.
Изначально в Monero примеси выбирались с одинаковой вероятностью, но в транзакциях чаще встречались свежие выходы, чем старые, из-за того что юзеры Monero значительно чаще тратят свежие монеты, чем старые. Поэтому атакующий приватность мог с большой вероятностью отделить настоящий txo от примесей.
В 2018 алгоритм выбора примесей подкрутили и вместо равномерного распределения стали использовать гамма-распределение, которое позволило чаще выбирать свежие txo в качестве примесей. Если случайный выбор примесей падал на txo из свежайших 10 блоков, они просто отбрасывались, потому что как известно в Monero нельзя тратить монеты возрастом менее 10 блоков. Это снова приводило к искажению, поэтому в 2019 алгоритм подкрутили, чтобы распределение считалось не с верхушки блокчейна, а начиная с 10го блока с конца.
Наконец в последнем апгрейде 0.17.2.3 от 31.08.2021 решили опять считать распределение с начала блокчейна, но если случайный выбор падает на txo из свежайших 10 блоков, то не просто отбрасывать их, а перераспределять выбор на txo из следующих 50 блоков. Логика здесь такова, что если юзер решил потратить монеты из свежих 10 блоков, которые тратить запрещено протоколом, то он подождет и все равно потратит их скоро. Таким образом, теперь выбор примесей соответствует естественному поведению юзеров и настоящие txo органично теряются среди примесей
https://www.getmonero.org/2021/09/20/post-mortem-of-decoy-selection-bugs.html
Кольцевая подпись в Monero смешивает 1 настоящий тратящийся юзером выход транзакции с 10 другими случайно выбранными выходами транзакций ("примеси"). При чем для стороннего наблюдателя должно быть непонятно, какой 1 из 11 выходов настоящий, а какие являются примесями.
Изначально в Monero примеси выбирались с одинаковой вероятностью, но в транзакциях чаще встречались свежие выходы, чем старые, из-за того что юзеры Monero значительно чаще тратят свежие монеты, чем старые. Поэтому атакующий приватность мог с большой вероятностью отделить настоящий txo от примесей.
В 2018 алгоритм выбора примесей подкрутили и вместо равномерного распределения стали использовать гамма-распределение, которое позволило чаще выбирать свежие txo в качестве примесей. Если случайный выбор примесей падал на txo из свежайших 10 блоков, они просто отбрасывались, потому что как известно в Monero нельзя тратить монеты возрастом менее 10 блоков. Это снова приводило к искажению, поэтому в 2019 алгоритм подкрутили, чтобы распределение считалось не с верхушки блокчейна, а начиная с 10го блока с конца.
Наконец в последнем апгрейде 0.17.2.3 от 31.08.2021 решили опять считать распределение с начала блокчейна, но если случайный выбор падает на txo из свежайших 10 блоков, то не просто отбрасывать их, а перераспределять выбор на txo из следующих 50 блоков. Логика здесь такова, что если юзер решил потратить монеты из свежих 10 блоков, которые тратить запрещено протоколом, то он подождет и все равно потратит их скоро. Таким образом, теперь выбор примесей соответствует естественному поведению юзеров и настоящие txo органично теряются среди примесей
https://www.getmonero.org/2021/09/20/post-mortem-of-decoy-selection-bugs.html
getmonero.org, The Monero Project
Blog: Post-Mortem of Decoy Selection Bugs
Patched in official wallet, update highly recommended
Forwarded from DEFI Scam Check
Баг в Compound привел к ошибочному начислению ревордов 240K $COMP
Роберт Лешнер уточнил, что баг произошел вследствии принятого предложения от сообщества, содержал в себе ошибку в 1 строке кода, но т к апгрейд протокол требует около недели, 240к монет COMP ($70М) были извлечены эксплоитерами.
Около 40К $COMP ($13M) еще лежат на баг-контракте и будут извлечены далее в ближайшее время.
Согласно твиттер ресерчеру Mudit Gupta:
«Ошибка возникает, когда кто-то предоставляет займ протоколу Compound токены с нулевым вознаграждением от Compound, например cSUSHI и cTUSD.
Функция`supplyIndex` для таких токенов остается равным` compInitialIndex`, что означает, что блок if на L1217 не запускается.
Проверка должна была быть> =, а не>. Поскольку блок if не запускается, «supplierIndex» остается равным 0, а «supplyIndex» равно 1e36. Дельта индексов становится равной 1e36, и протокол выплачивает вознаграждение за индексы 1e36, а не предполагаемое нулевое вознаграждение».
По факту, часть из токенов взята вайтхакером, остальные эксплоитеры имеют KYC c биржами Okex, Huobi и будут идентифицированы.
Код = закон, однако можно предположить и такой вариант: если у инкассаторской машины во время езды выпадет мешок с деньгами на проезжую часть, это является по прежнему собственностью банка, так и здесь в случае с багом эмиссии, продажа одного из эксплоитеров 9 тысяч токенов на Okex и Huobi - была фактом ограбления Compound.
https://twitter.com/Mudit__Gupta/status/1443454935639609345
Дополнение по токенам COMP, украденным из протокола:
- $20M to rawiz.eth (по сообщению - вайт хакер)
- $27M to 0xf4bf (дампит и переместил на другой адрес)
- $9M to 0x2e4a (держит)
- $9M to 0x3af01 (держит)
- $6M to 0xf3f5 (продал все)
https://twitter.com/0xngmi/status/1443442885618278407
Роберт Лешнер уточнил, что баг произошел вследствии принятого предложения от сообщества, содержал в себе ошибку в 1 строке кода, но т к апгрейд протокол требует около недели, 240к монет COMP ($70М) были извлечены эксплоитерами.
Около 40К $COMP ($13M) еще лежат на баг-контракте и будут извлечены далее в ближайшее время.
Согласно твиттер ресерчеру Mudit Gupta:
«Ошибка возникает, когда кто-то предоставляет займ протоколу Compound токены с нулевым вознаграждением от Compound, например cSUSHI и cTUSD.
Функция`supplyIndex` для таких токенов остается равным` compInitialIndex`, что означает, что блок if на L1217 не запускается.
Проверка должна была быть> =, а не>. Поскольку блок if не запускается, «supplierIndex» остается равным 0, а «supplyIndex» равно 1e36. Дельта индексов становится равной 1e36, и протокол выплачивает вознаграждение за индексы 1e36, а не предполагаемое нулевое вознаграждение».
По факту, часть из токенов взята вайтхакером, остальные эксплоитеры имеют KYC c биржами Okex, Huobi и будут идентифицированы.
Код = закон, однако можно предположить и такой вариант: если у инкассаторской машины во время езды выпадет мешок с деньгами на проезжую часть, это является по прежнему собственностью банка, так и здесь в случае с багом эмиссии, продажа одного из эксплоитеров 9 тысяч токенов на Okex и Huobi - была фактом ограбления Compound.
https://twitter.com/Mudit__Gupta/status/1443454935639609345
Дополнение по токенам COMP, украденным из протокола:
- $20M to rawiz.eth (по сообщению - вайт хакер)
- $27M to 0xf4bf (дампит и переместил на другой адрес)
- $9M to 0x2e4a (держит)
- $9M to 0x3af01 (держит)
- $6M to 0xf3f5 (продал все)
https://twitter.com/0xngmi/status/1443442885618278407
Twitter
Mudit Gupta
Compound Incident Analysis: Compound upgraded their comptroller contract to etherscan.io/address/0x374a… which had a one letter bug on L1217. This led to a reverse rug pull in which Comptroller is giving away more rewards to (past) Suppliers than expected.…
#guide #challenge #writeup.
Быстрое объяснение уязвимости #Reentrancy на примере задания из Ethernaut
https://cryptooffensive.com/reentrancy/
Быстрое объяснение уязвимости #Reentrancy на примере задания из Ethernaut
https://cryptooffensive.com/reentrancy/
Crypto Offensive
Reentrancy
Рассмотрим класс уязвимостей Reentrancy на примере задания 10 из Ethernaut. // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import ‘@openzeppelin/contracts/math/SafeMath.sol’; c…
#hack #bsc.
В продолжение темы #Reentrancy: разбор взлома #SURGE 16.08.2021 на русском. Контракт токена принимает BNB и делает выплаты. В контракте есть защита от reentrancy, но она недостаточно полная, что позволило атакующему повлиять на вычисление цены токена и вывести все BNB на сумму 4M$
https://cryptooffensive.com/инцидент-с-surgedefi-reentrancy/
В продолжение темы #Reentrancy: разбор взлома #SURGE 16.08.2021 на русском. Контракт токена принимает BNB и делает выплаты. В контракте есть защита от reentrancy, но она недостаточно полная, что позволило атакующему повлиять на вычисление цены токена и вывести все BNB на сумму 4M$
https://cryptooffensive.com/инцидент-с-surgedefi-reentrancy/
Crypto Offensive
Инцидент с SurgeDEFI: Reentrancy
Для ознакомления: Что такое reentrancy Код контракта: Это BEP-20 с таким функционалом: пользователь может купить токены SURGE, для этого он отправляет BNB контракту, контракт вычисляет соответствую…
#hack
коллекция старых бажных контрактов с описанием уязвимостей
https://github.com/sec-bit/awesome-buggy-erc20-tokens/blob/master/ERC20_token_issue_list.md
коллекция старых бажных контрактов с описанием уязвимостей
https://github.com/sec-bit/awesome-buggy-erc20-tokens/blob/master/ERC20_token_issue_list.md
GitHub
awesome-buggy-erc20-tokens/ERC20_token_issue_list.md at master · sec-bit/awesome-buggy-erc20-tokens
A Collection of Vulnerabilities in ERC20 Smart Contracts With Tokens Affected - sec-bit/awesome-buggy-erc20-tokens
#vuln
Блокчейн Zilliqa #ZIL известен первой реализацией шардинга.
Сегодня на hackerone опубликовали репорт о забавном критикал баге.
Ноды в шарде обмениваются между собой сообщениями по gossip-протоколу. Для подтверждения достоверности сообщения подписываются ключами нод.
Атакующий мог отправить в сеть по gossip-протоколу сообщение с транзакцией, переводящей все деньги с кошелька любой ноды на свой кошелек, и эта нода передала бы сообщение дальше со своей подписью. Транзакция получается полностью валидная, подписанная
https://hackerone.com/reports/1058879
Блокчейн Zilliqa #ZIL известен первой реализацией шардинга.
Сегодня на hackerone опубликовали репорт о забавном критикал баге.
Ноды в шарде обмениваются между собой сообщениями по gossip-протоколу. Для подтверждения достоверности сообщения подписываются ключами нод.
Атакующий мог отправить в сеть по gossip-протоколу сообщение с транзакцией, переводящей все деньги с кошелька любой ноды на свой кошелек, и эта нода передала бы сообщение дальше со своей подписью. Транзакция получается полностью валидная, подписанная
https://hackerone.com/reports/1058879
HackerOne
Zilliqa disclosed on HackerOne: Using gossip to drain miner wallets
## Summary:
Using a flaw in the gossip protocol, a malicious shard member can trick any other fellow shard member into signing an arbitrary message. One way this can be exploited is by creating a...
Using a flaw in the gossip protocol, a malicious shard member can trick any other fellow shard member into signing an arbitrary message. One way this can be exploited is by creating a...
#tools
Декомпиляторы Solidity:
https://ethervm.io/decompile - онлайн-декомпилятор solidity
https://contract-library.com/ - библиотека контрактов с исходниками и декомпилятором
UPD (thnx @deepcode):
https://eveem.org/ - декомпиляция в псевдокод, похожий на Python
https://www.trustlook.com/services/smart.html (скроллить до раздела "Online tool") - декомпиляция в помесь Solidity и ассемблера
https://oko.palkeo.com/
"Oko contract explorer" Когда контракт верифицирован на Etherscan - берёт код оттуда, а если нет - декомпилирует через Panoramix (как на eveem.org)
Декомпиляторы Solidity:
https://ethervm.io/decompile - онлайн-декомпилятор solidity
https://contract-library.com/ - библиотека контрактов с исходниками и декомпилятором
UPD (thnx @deepcode):
https://eveem.org/ - декомпиляция в псевдокод, похожий на Python
https://www.trustlook.com/services/smart.html (скроллить до раздела "Online tool") - декомпиляция в помесь Solidity и ассемблера
https://oko.palkeo.com/
"Oko contract explorer" Когда контракт верифицирован на Etherscan - берёт код оттуда, а если нет - декомпилирует через Panoramix (как на eveem.org)
Dedaub
Dedaub Security Suite
Smart contract security, monitoring, and analytics for EVM blockchains.
👍1
#cryptography #schnorr #vuln
В ноябре в Биткоине начнут работать подписи Шнорра. Кошельки, биржи и другие сервисы постепенно будут их внедрять. Разработчикам нужно помнить о такой ошибке, как повторное использование nonce, которая иногда встречается в реализациях ECDSA и позволяет восстановить секретный ключ. Со Шнорром точно такая же история: https://ecc2017.cs.ru.nl/slides/ecc2017-tibouchi.pdf
Эта бага ранее была много где от Playstation3 до blockchain·com, и живет до сих пор в многих блокчейнах.
Пример уязвимого #BTC-адреса:
В подписях в его двух транзакциях траты
и
присутствует одинаковое R:
что позволяет из остальных данных из транзакций вычислить K:
K = (H1-H2)/(S1-S2)
и секретный ключ:
Sk = (S1*K-H1)/R =
который соответствует адресу
В ноябре в Биткоине начнут работать подписи Шнорра. Кошельки, биржи и другие сервисы постепенно будут их внедрять. Разработчикам нужно помнить о такой ошибке, как повторное использование nonce, которая иногда встречается в реализациях ECDSA и позволяет восстановить секретный ключ. Со Шнорром точно такая же история: https://ecc2017.cs.ru.nl/slides/ecc2017-tibouchi.pdf
Эта бага ранее была много где от Playstation3 до blockchain·com, и живет до сих пор в многих блокчейнах.
Пример уязвимого #BTC-адреса:
1CUSKYar1yGBAg3MHWhC3sYhTfBQqc2sTNВ подписях в его двух транзакциях траты
ca8f3a25744ae2859f4a5d219274d9e3ae97c23c201a618c543de76640a97ba6 и
378eb2c5b7dadbba35c79c5a370b48db052a80d44b0e0361b39a9c129c86120eприсутствует одинаковое R:
436c023f2e07cdf9a51e884c35037594c930caf7c2c0d0008ac35d10d4de99fcчто позволяет из остальных данных из транзакций вычислить K:
K = (H1-H2)/(S1-S2)
и секретный ключ:
Sk = (S1*K-H1)/R =
KypfcAANPUhYdxAzwNvHvHu1gcV4Bh6KVhkCNnVGVjHh1Hq11LzRкоторый соответствует адресу
1CUSKYar1yGBAg3MHWhC3sYhTfBQqc2sTN#hack
43 eth в токенах вознаграждения вывели из контракта стейкинга NFT StackedToads - в массиве id в запросе передали один id много раз, и контракт для каждого раза посчитал "да, токены выдать"
https://twitter.com/0xwave/status/1448752767917453314?s=21
43 eth в токенах вознаграждения вывели из контракта стейкинга NFT StackedToads - в массиве id в запросе передали один id много раз, и контракт для каждого раза посчитал "да, токены выдать"
https://twitter.com/0xwave/status/1448752767917453314?s=21
Twitter
wave
Identified the exploit mechanism on @StackedToads The claimRewards fn allows for the same staked token ID to be passed in the input array an arbitrary number of times. So claimRewards for [1392, 1392] gives 2x [1392] Attacker just stuffed as many IDs as they…
#cryptography
Неразличимая обфускация кода - следующая крутая тема в криптографии.
Обфускация - известная тема в инфосеке, это включает в себя например протекторы проприетарного софта и "крипторы" малвары, которые используются для скрытия алгоритма и усложнения жизни реверсерам. Быстро или медленно, но все эти штуки взламываются опытными реверсерами. Более того, строго математически доказана невозможность создания идеального обфускатора, превращающего любую программу в "черный ящик", который непонятно как работает, но выдает те же результаты, что и изначальная программа. Казалось бы, эта тема закрыта навсегда.
Однако, в 2013 году вышла бумага https://eprint.iacr.org/2013/451 об успешном создании неразличимого обфускатора. Представьте, что есть две различные программы A и B, которые выдают один и тот же результат. Обфускатор O генерирует программы X=O(A) и Y=O(B). O является неразличимым обфускатором, если имея программы X и Y невозможно различить, какая из них получена из A, а какая из B.
Пускай программа A содержит в себе пароль, рассчитывает и выдает хеш пароля, а программа B содержит только готовый хеш и выдает его. Прогнав A и B через неразличимый обфускатор O, мы получаем программы O(A) и O(B).
Можно ли (за адекватное время) вытащить пароль из O(A)? Пойдем от противного - допустим, что мы можем извлечь пароль из O(A), но тогда в силу свойства неразличимости мы также можем извлечь пароль из O(B). Но ни в B ни тем более в O(B) никогда и не было пароля, а только его хеш. А значит допущение неверно, и из O(A) невозможно вытащить пароль.
Это открывает огромные возможности! Представьте, что private переменная в solidity в полном смысле является private, то есть ее невозможно прочесть из блокчейна. Мы сможем создавать обфусцированные смарт-контракты, которые содержат конфиденциальную информацию, такую как приватные ключи от других блокчейнов (что позволит строить trustless-мосты), данные для доступа к фиатным банковским счетам или даже SSH-ключи для доступа к серверам. Для взаимодействия с внешней средой больше не нужны будут подходы с мультисигами, имеющие огромную дыру в виде необходимости доверия к держателям ключей. Посредники останутся нужны только для пересылки сетевых пакетов во внешний мир, но никак не смогут вмешаться в процессы аутентификации.
P.S. на сегодняшний день это далеко от готовности к коммерческому применению. Имеющиеся техники превращают короткие простые программы в гигантские громоздкие полотна
Неразличимая обфускация кода - следующая крутая тема в криптографии.
Обфускация - известная тема в инфосеке, это включает в себя например протекторы проприетарного софта и "крипторы" малвары, которые используются для скрытия алгоритма и усложнения жизни реверсерам. Быстро или медленно, но все эти штуки взламываются опытными реверсерами. Более того, строго математически доказана невозможность создания идеального обфускатора, превращающего любую программу в "черный ящик", который непонятно как работает, но выдает те же результаты, что и изначальная программа. Казалось бы, эта тема закрыта навсегда.
Однако, в 2013 году вышла бумага https://eprint.iacr.org/2013/451 об успешном создании неразличимого обфускатора. Представьте, что есть две различные программы A и B, которые выдают один и тот же результат. Обфускатор O генерирует программы X=O(A) и Y=O(B). O является неразличимым обфускатором, если имея программы X и Y невозможно различить, какая из них получена из A, а какая из B.
Пускай программа A содержит в себе пароль, рассчитывает и выдает хеш пароля, а программа B содержит только готовый хеш и выдает его. Прогнав A и B через неразличимый обфускатор O, мы получаем программы O(A) и O(B).
Можно ли (за адекватное время) вытащить пароль из O(A)? Пойдем от противного - допустим, что мы можем извлечь пароль из O(A), но тогда в силу свойства неразличимости мы также можем извлечь пароль из O(B). Но ни в B ни тем более в O(B) никогда и не было пароля, а только его хеш. А значит допущение неверно, и из O(A) невозможно вытащить пароль.
Это открывает огромные возможности! Представьте, что private переменная в solidity в полном смысле является private, то есть ее невозможно прочесть из блокчейна. Мы сможем создавать обфусцированные смарт-контракты, которые содержат конфиденциальную информацию, такую как приватные ключи от других блокчейнов (что позволит строить trustless-мосты), данные для доступа к фиатным банковским счетам или даже SSH-ключи для доступа к серверам. Для взаимодействия с внешней средой больше не нужны будут подходы с мультисигами, имеющие огромную дыру в виде необходимости доверия к держателям ключей. Посредники останутся нужны только для пересылки сетевых пакетов во внешний мир, но никак не смогут вмешаться в процессы аутентификации.
P.S. на сегодняшний день это далеко от готовности к коммерческому применению. Имеющиеся техники превращают короткие простые программы в гигантские громоздкие полотна
#guide
Свежий видеокурс Secureum по аудиту безопасности Solidity.
Язык: индусский английский
https://www.youtube.com/channel/UCJIdmjE0J_1zz1kUtbgedCA/videos
Свежий видеокурс Secureum по аудиту безопасности Solidity.
Язык: индусский английский
https://www.youtube.com/channel/UCJIdmjE0J_1zz1kUtbgedCA/videos