Стулья ETH на Рупстен

Кто-нибудь столкнулся со следующим сценарием на Ropsten:

  1. Вы создаете учетную запись в Geth и начинаете передавать некоторые ETH себе через кран.
  2. Вы открываете учетную запись и начинаете компилировать и запускать контракты.
  3. Вдруг вы обнаружите, что все ваши ETH ушли, перенесены в 0x6Ef57BE1168628A2bD6c5788322A41265084408a.

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

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

Хотел выяснить, насколько это объяснимо. Я понял, что тот же адрес 0x6Ef57BE1168628A2bD6c5788322A41265084408a также найден на Rinkeby.

6 голосов | спросил Jackson Ng 7 AMpSat, 07 Apr 2018 09:36:44 +030036Saturday 2018, 09:36:44

1 ответ


2

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

Комментарии Smarx указывают на исправление для блокировки доступа к вашей локальной машине: --rpcaddr 127.0.0.1 и удаление --rpccorsdomain "*" будет держать вещи в закрытом состоянии.

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

  1. используйте Nginx (или аналогичный) как обратный прокси открыть эту точку доступа, но ограничить ее только уполномоченными сторонами. Это не сильно отличается от подхода infura.io , и безопасность будет такой же хорошей, как вы ее делаете, в зависимости от о применяемых методах аутентификации. Настройте Nginx для пересылки запросов на ваш порт geth RPC и настройте geth только для приема локальных запросов с помощью --rpcaddr 127.0.0.1
  2. web3.js 1.0 позволяет удалять транзакции удаленно , чтобы вы могли удерживать узел онлайн без учетных записей и просто использовать его для прямого распространения подписанных транзакций без внешнего доступа к вашим учетным записям через интерфейс HTTP-RPC. Это не мешает кому-либо использовать ваш узел для чтения состояния и потенциально ударить его с помощью атаки DDOS.
  3. ( очень рискованно, гораздо менее безопасно, а не что-то, что я рекомендовал бы ) - заблокируйте учетные записи ваших накопительных узлов и включите personal в вашей конфигурации RPC, затем отправьте web3.personal.unlockAccount(eth.accounts[0], "<password>") и web3.personal.lockAccount(eth.accounts[0]) непосредственно перед и после любых строк транзакций в вашем коде. Не позволяя средствам легко извлекаться из разблокированной учетной записи, включение тега personal приносит свои риски, поскольку вы оставляете дверь открытой на несколько различных атак здесь.
ответил TC8 7 PMpSat, 07 Apr 2018 13:09:15 +030009Saturday 2018, 13:09:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132