200 open source проектов спустя: опыт статического анализа исходного кодаAndrey Karpov
Одна из особенностей работы нашей команды — анализ большого количества различных программных проектов. Рассказывать о закрытых коммерческих проектах часто запрещает NDA, а вот об open source можно и нужно говорить. Какие ошибки допускают в open-source-проектах? Какой код более качественный — закрытый или открытый? Нужно ли придерживаться стандартов кодирования, или они давно устарели? Какие ошибки сложнее найти и исправить — сложные архитектурные или простые опечатки? Проанализировав за несколько лет сотни программных проектов от zlib до Chromium, мы готовы поделиться своим опытом и ответить на эти вопросы.
200 open source проектов спустя: опыт статического анализа исходного кодаAndrey Karpov
Одна из особенностей работы нашей команды — анализ большого количества различных программных проектов. Рассказывать о закрытых коммерческих проектах часто запрещает NDA, а вот об open source можно и нужно говорить. Какие ошибки допускают в open-source-проектах? Какой код более качественный — закрытый или открытый? Нужно ли придерживаться стандартов кодирования, или они давно устарели? Какие ошибки сложнее найти и исправить — сложные архитектурные или простые опечатки? Проанализировав за несколько лет сотни программных проектов от zlib до Chromium, мы готовы поделиться своим опытом и ответить на эти вопросы.
Bitcoin, Ethereum и другие блокчейн-сети растут экстенсивно за счёт количества предлагаемых приложений. Существенные темпы роста количества активных пользователей и транзакций приводят к тому, что блокчейн-сети начинают не справляться с качественным исполнением своей базовой функции быстрого создания и передачи ценности.
Проблема хорошо известна и понятна разработчикам, которые пытаются подойди к её решению сразу с нескольких сторон. В докладе доступно описаны современные подходы к масштабированию блокчейн-сетей — эффективные алгоритмы консенсуса, блокчейн-сети второго уровня, шардинг и другие.
Марк рассказывает о различных схемах проведения ICO на примере QTUM, Cosmos, Aragon, BAT, Bancor, Status, QRL, TenX, Tezos и EOS.
Как успеть поучаствовать? Все секреты в этой презентации.
«The Heartbleed Bug» или OpenSSL как вектор атаки.Oleg Lipin
Программисты создают код, а хакеры находят в нем ошибки и пользуются ими. Это уже мейнстрим.
Однако обнаруженная дыра в самом распространенном (open-source) криптографическом пакете OpenSSL потенциально могла привести к хищению данных большинства пользователей интернета, что назвать мейнстримом вряд ли получится.
Событие: https://vk.com/heartbleedbug
Лекторы:
Владислав Свольский - https://vk.com/phone287495
Денис Сапожников - https://vk.com/denisnewtown
Почитать: http://debian-help.ru/
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
Флеш-накопители используются в самых разных устройствах, от мобильных телефонов до компьютеров и серверов. Для каждой модели накопителя нужна прошивка с определённым набором параметров, которые могут отличаться в зависимости от ситуации. В докладе будет описан универсальный фреймфорк на С++, который предоставляет разработчикам симуляторов простой, прозрачный и быстрый доступ к любому параметру. Тестировщикам же он позволяет управлять конфигурациями при помощи стандартных инструментов редактирования и слияния.
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
Основываясь на опыте разработки Крипты, Дмитрий рассмотрит средства реализации статического и динамического полиморфизма в C++, а также некоторые их паттерны и антипаттерны.
Как показывает практика, применение классического, основанного на callback’ах подхода к асинхронному программированию обычно оказывается неудобным. Для упрощения написания и поддержки сложного асинхронного кода можно использовать иной подход, основанный на прозрачном использованием сопрограмм. Он значительно сокращает объём и сложность кода, превращая его в понятный, легко читаемый и структурируемый код.
Оракулы для блокчейнов. Обзор платформы Exonum. Спикер: Алексей СидоровCyber Fund
Данная презентация была представлена на одном из еженедельных образовательных митапов от компании cyber•Fund.
Посмотреть полное видео с митапа можно здесь:
https://www.youtube.com/watch?v=vauazQe_dQE
Прочитать текстовую версию выступления:
https://golos.io/ru--blokcheijn/@cyberevents/orakuly-dlya-blokcheinov-obzor-platformy-exonum-spiker-aleksei-sidorov
Подробнее о проекте Exonum - exonum.com
Дополнительная информация о компании cyber•Fund
Мы инвестируем и развиваем блокчейн проекты, способные кардинально менять наш мир в лучшую сторону, создавая экономику роботов и самовыражения людей. Больше о нашей работе вы можете узнать из следующих ресурсов:
Наши проекты:
сyber•Fund - аналитика и разработка блокчейн систем
Golos.io - медийная блокчейн платформа
Satoshi•Fund - первый фонд инвестирующий в криптоактивы
Cyberstudio.io - помощь в проведении ICO
Мы ждем вас в наших сообществах:
Блог:
https://blog.cyber.fund/
Email Newsletter:
http://company.cyber.fund/#newsletter
Социальные сети:
https://golos.io/@cyberfund
https://steemit.com/@cyberfund
https://twitter.com/cyberfundio
https://www.reddit.com/r/cyber_Fund/
https://www.facebook.com/cyberfund - официальная страница сyber•Fund
https://www.facebook.com/blockchainmeetups/ - официальная страница cyber•Events (Блокчейн митапы, конференции, доклады)
https://www.slideshare.net/CyberFund-Official
Для разработчиков:
https://t.me/CyberFundDev - telegram чат для блокчейн разработчиков
https://github.com/cyberFund - наш репозиторий на Github с open source software
https://github.com/cyberFund/Library - библиотека знаний по блокчейн
Positive Hack Days. Терешкин. "Злая горничная" атакует PGPPositive Hack Days
Полнодисковое шифрование широко применяется для защиты информации от несанкционированного доступа. Наиболее часто с помощью таких систем защищают информацию на жестких дисках ноутбуков и сменных носителях, так как они легко могут быть потеряны или украдены. В докладе рассматривается, может ли владелец полагаться на надежность полнодискового шифрования в свое отсутствие в случае, если злоумышленник имеет возможность не только завладеть носителем, но и произвести незаметные манипуляции над ним. Речь пойдет о доверенной загрузке, контроле целостности, статическом и динамическом контроле корней доверия и их использовании в системах полнодискового шифрования.
Будет показано, насколько надежно подобный контроль реализован в продукте PGP® Whole Disk Encryption и нет ли в нем недочетов с криптографической точки зрения.
Bitcoin, Ethereum и другие блокчейн-сети растут экстенсивно за счёт количества предлагаемых приложений. Существенные темпы роста количества активных пользователей и транзакций приводят к тому, что блокчейн-сети начинают не справляться с качественным исполнением своей базовой функции быстрого создания и передачи ценности.
Проблема хорошо известна и понятна разработчикам, которые пытаются подойди к её решению сразу с нескольких сторон. В докладе доступно описаны современные подходы к масштабированию блокчейн-сетей — эффективные алгоритмы консенсуса, блокчейн-сети второго уровня, шардинг и другие.
Марк рассказывает о различных схемах проведения ICO на примере QTUM, Cosmos, Aragon, BAT, Bancor, Status, QRL, TenX, Tezos и EOS.
Как успеть поучаствовать? Все секреты в этой презентации.
«The Heartbleed Bug» или OpenSSL как вектор атаки.Oleg Lipin
Программисты создают код, а хакеры находят в нем ошибки и пользуются ими. Это уже мейнстрим.
Однако обнаруженная дыра в самом распространенном (open-source) криптографическом пакете OpenSSL потенциально могла привести к хищению данных большинства пользователей интернета, что назвать мейнстримом вряд ли получится.
Событие: https://vk.com/heartbleedbug
Лекторы:
Владислав Свольский - https://vk.com/phone287495
Денис Сапожников - https://vk.com/denisnewtown
Почитать: http://debian-help.ru/
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
Флеш-накопители используются в самых разных устройствах, от мобильных телефонов до компьютеров и серверов. Для каждой модели накопителя нужна прошивка с определённым набором параметров, которые могут отличаться в зависимости от ситуации. В докладе будет описан универсальный фреймфорк на С++, который предоставляет разработчикам симуляторов простой, прозрачный и быстрый доступ к любому параметру. Тестировщикам же он позволяет управлять конфигурациями при помощи стандартных инструментов редактирования и слияния.
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Yandex
Основываясь на опыте разработки Крипты, Дмитрий рассмотрит средства реализации статического и динамического полиморфизма в C++, а также некоторые их паттерны и антипаттерны.
Как показывает практика, применение классического, основанного на callback’ах подхода к асинхронному программированию обычно оказывается неудобным. Для упрощения написания и поддержки сложного асинхронного кода можно использовать иной подход, основанный на прозрачном использованием сопрограмм. Он значительно сокращает объём и сложность кода, превращая его в понятный, легко читаемый и структурируемый код.
Оракулы для блокчейнов. Обзор платформы Exonum. Спикер: Алексей СидоровCyber Fund
Данная презентация была представлена на одном из еженедельных образовательных митапов от компании cyber•Fund.
Посмотреть полное видео с митапа можно здесь:
https://www.youtube.com/watch?v=vauazQe_dQE
Прочитать текстовую версию выступления:
https://golos.io/ru--blokcheijn/@cyberevents/orakuly-dlya-blokcheinov-obzor-platformy-exonum-spiker-aleksei-sidorov
Подробнее о проекте Exonum - exonum.com
Дополнительная информация о компании cyber•Fund
Мы инвестируем и развиваем блокчейн проекты, способные кардинально менять наш мир в лучшую сторону, создавая экономику роботов и самовыражения людей. Больше о нашей работе вы можете узнать из следующих ресурсов:
Наши проекты:
сyber•Fund - аналитика и разработка блокчейн систем
Golos.io - медийная блокчейн платформа
Satoshi•Fund - первый фонд инвестирующий в криптоактивы
Cyberstudio.io - помощь в проведении ICO
Мы ждем вас в наших сообществах:
Блог:
https://blog.cyber.fund/
Email Newsletter:
http://company.cyber.fund/#newsletter
Социальные сети:
https://golos.io/@cyberfund
https://steemit.com/@cyberfund
https://twitter.com/cyberfundio
https://www.reddit.com/r/cyber_Fund/
https://www.facebook.com/cyberfund - официальная страница сyber•Fund
https://www.facebook.com/blockchainmeetups/ - официальная страница cyber•Events (Блокчейн митапы, конференции, доклады)
https://www.slideshare.net/CyberFund-Official
Для разработчиков:
https://t.me/CyberFundDev - telegram чат для блокчейн разработчиков
https://github.com/cyberFund - наш репозиторий на Github с open source software
https://github.com/cyberFund/Library - библиотека знаний по блокчейн
Positive Hack Days. Терешкин. "Злая горничная" атакует PGPPositive Hack Days
Полнодисковое шифрование широко применяется для защиты информации от несанкционированного доступа. Наиболее часто с помощью таких систем защищают информацию на жестких дисках ноутбуков и сменных носителях, так как они легко могут быть потеряны или украдены. В докладе рассматривается, может ли владелец полагаться на надежность полнодискового шифрования в свое отсутствие в случае, если злоумышленник имеет возможность не только завладеть носителем, но и произвести незаметные манипуляции над ним. Речь пойдет о доверенной загрузке, контроле целостности, статическом и динамическом контроле корней доверия и их использовании в системах полнодискового шифрования.
Будет показано, насколько надежно подобный контроль реализован в продукте PGP® Whole Disk Encryption и нет ли в нем недочетов с криптографической точки зрения.
"Performance Analysis of In-Network Caching in Content-Centric Advanced Meter...Khaled Ben Driss
"Performance Analysis of In-Network Caching in Content-Centric Advanced Metering Infrastructure" The International Journal of Advanced Computer Science and Applications(IJACSA), Volume 7 Issue 11, 2016.
How to run the blockchain.info Bitcoin wallet in NodeJS (experimental).
Dutch Blockchain Hackathon - Tech Deep Dive - 2016-12-07 in Delft
Presentation made with Deckset, source:
https://gist.github.com/Sjors/b39f1e4135c05e8dfe2cf337608ec7a8
Instructions:
https://github.com/blockchain/My-Wallet-V3/wiki/NodeJS
How to create a Dapp - In this presentation I explain some Ethereum concepts to understand Dapps - and put this into practice using a real example : Allowance : A smart contract driven Dapp that allows a parent to give a weekly allowance to his/her kids. It was presented om aug 10 2016 in Antwerp in the API Craftsmanship Belgium meetup. Enjoy
🔸Тема доклада - Применение блокчейн технологий в eCommerce (часть 1)
🔸Cпикер - Игорь Алексеенко, имеет опыт веб-разработки больше 11 лет, с Magento - 8 лет, а последний год активно изучает Blockchain и разработку web3.
🔸Модератор - Андрей Забара, Magento Tech Lead
О чем поговорили в первой части этой темы:
- Что такое блокчейн, история блокчейна и смарт-контрактов
- Как работает блокчейн
- Смарт-контракты
- Токенизация
- Возможности блокчейн технологий в eCommerce
----------------------------
🔸Speech topic - Application of blockchain technologies in eCommerce (part 1)
🔸Speaker - Igor Alekseenko, has more than 11 years of experience in web development, 8 years with Magento, and has been actively studying Blockchain and web3 development for the last year.
🔸Moderator - Andrey Zabara, Magento Tech Lead
What was discussed in the first part of this thread:
- What is blockchain, the history of blockchain and smart contracts
- How blockchain works
- Smart contracts
- Tokenization
- Opportunities of blockchain technologies in eCommerce
My presentation from European Robotics Forum 2019 about R&D "Air and water quality control system based on IoT and Blockchain."
In 2018 Airalab R&D team did several experiments with mobile robotics and environmental sensors on board. As the information about air and water quality is sensitive in most cases of using, Airalab engineers decided to use public blockchain as an immutable and transparent ledger. In the presentation, we will speak about technical details and principal schemes of creating such a cyber-physical system that can be used as an independent observer of human activity.
The AIRA project embodies the idea of responsive robot economics meaning that "lights-out" manufacturings and logistics are able to change their methods of work for working at more profitable markets.
Robot economics protocol by Airalab short presentationSergey Lonshakov
AIRA project implements the standard of economic interaction between human-robot and robot-robot via liability smart contract. Aira makes it possible to connect a variety of different robots to the market of robot's liabilities which existing on Ethereum for the direct sale of data from robot sensors, ordering of logistics services and organization ordering of personalized products at fully automated enterprises.
Презентация к докладу 17 апреля 2016 года в Москве на мероприятии "FoundersDevelopers: Blockchain/Bitcoin Unicorns" (https://www.facebook.com/events/1003435819739445/)
3. Цели
#msdevcon
Создание умного
контракта в
Ethereum
Blockchain
Проверка умного
контракта в
Ethereum
Blockchain
Известные атаки
на умные
контракты на
Ethereum
Рекомендации от ведущих
разработчиков Ethereum.
Выдержки из презентаций с
devcon2 в Шанхае
Атака по глубине стека, DoS
при вызове исключения,
условия гонки, DoS при
переполнении лимита газа.
Пример инфраструктуры из
нескольких видов умных
контрактов
5. Контракт – это аккаунт
Есть два типа аккаунтов в Ethereum:
Аккаунт пользователя (Externally owned account сокр. EOAs):
учетная запись контролируемая закрытым ключом, и если у вас
есть закрытый ключ, связанный с EOA у вас есть возможность
отправлять эфиры и сообщения от EOA.
Контракт: учетная запись, которая имеет свой собственный код, и
управляемая с помощью кода.
6. Токены
contract MyToken {
/* This creates an array with all balances */
mapping (address => uint256) public balanceOf;
}
Описание стандарта ERC20:
https://github.com/ethereum/EIPs/issues/20
8. Управление взаимоотношениями
Alice и Bob заключают пари
на 100 GavCoin с триггером
на основе данных о
температуре в Москве.
Если температура в Москве
не будет выше 35 градусов в
течении года, то Bob
получит 100 GavCoin, иначе
их получит Alice.
11. Обобщенные рекомендации к проверке
кода контрактов на Ethereum платформе
1. Избегайте внешних вызовов когда это возможно, очень часто они являются
причиной уязвимости
2. Отдавайте приоритет изменению состояния над внешним вызовом
вызовом (включая .send())
3. Изолируйте внешние вызовы в отдельной транзакции, например,
метод withdraw для вывода средств
4. Будьте внимательны при делении целых чисел (округление происходит к
ближайшему целому)
5. При делении на ноль возвращается ноль, проверяйте аргументы
самостоятельно
12. Обобщенные рекомендации к проверке
кода контрактов на Ethereum платформе
6. Будьте внимательны к переполнению целых чисел (особенно в
сравнениях) и приведению знаковых к беззнаковым в JS
7. Будьте осторожны при переборе динамических массивов, это может
потребовать большое количество газа
8. Будьте осторожны с привязкой логики контракта ко времени блока, оно
устанавливается майнером
9. Подумайте о способе обновления контракта в будущем
10. Используйте метки остановки работы контракта в случае чрезвычайной
ситуации, например обнаружении уязвимости
13. Обобщенные рекомендации к проверке
кода контрактов на Ethereum платформе
11. Разделяйте критически важные вызовы во времени, например, вывод
большого количества средств не чаще раза в неделю
12. Используйте формальную верификацию контрактов
15. DoS при переполнении лимита газа
Идея: объем газа в блоке ограничен, если для транзакции
требуется газа больше, чем помещается в блок - она никогда
не будет исполнена.
16. DoS при переполнении лимита газа
struct Payee {
address addr;
uint256 value;
}
Payee payees[];
uint256 nextPayeeIndex;
function payOut() {
uint256 i = 0; // при достаточно большом размере payees возможно
превысить лимит газа while
(i < payees.length) { payees[i].addr.send(payees[i].value); i++;
}
}
17. DoS при переполнении лимита газа
Противодействие: избегать итерации по большим массивам
данных, либо переносить перебор на программную логику вне
контракта; если невозможно избавиться от перебора,
необходимо разбить его на несколько шагов, либо выполнять
действия по запросу, например, добавить метод withdraw для
вывода средств.
18. Атака по глубине стека
Идея: разрешенная глубина стека составляет 1024, вызовы
глубже не будут выполнены, однако транзакция не прервется;
атакующий может вызвать код с глубиной стека 1023, в таком
случае вызовы из уязвимого кода, например send() не будут
исполнены.
19. Атака по глубине стека
// INSECURE
contract auction {
mapping(address => uint) refunds;
// [...]
function withdrawRefund(address recipient) {
uint refund = refunds[recipient];
refunds[recipient] = 0;
recipient.send(refund); // эта строка исполнится не так, как ожидается
}
}
// ATTACKER contract xxx {
function foo(address target, address recipient, uint iter) {
if (iter < 1023) foo(target, recipient, iter+1);
else auction(target).withdrawRefund(recipient);
}
}
20. Атака по глубине стека
Противодействие: минимизация вызовов внутри методов,
приоритет записи и учета над вызовом другого метода; а
также .send() возвращает false если не может быть
исполнена, необходимо при каждой отправке средств
проверять возвращаемое значение.
22. Условия гонки
// INSECURE
mapping (address => uint) private userBalances;
function withdrawBalance() public {
uint amountToWithdraw = userBalances[msg.sender]; // в этом месте внешний
контракт может вызвать метод withdrawBalance снова
if (!(msg.sender.call.value(amountToWithdraw)())) { throw; }
userBalances[msg.sender] = 0; }
/// ATTACKER
contract xxx {
uint iter;
address target;
function foo(address _target) {
iter = 0;
target = _target;
token(_target).withdrawBalance(); }
function () payable { if (iter < 10) // Withrawal 10 times
token(_target).withdrawBalance();
}
}
23. Условия гонки
Противодействие: для недоверенного кода(msg.sender)
приоритет в использовании .send() над .call.value(), так как
количество газа для .send() очень ограничено и не может быть
использовано для эксплуатации уязвимости.