В декабре 2016 года китайский центр CERT представил 17-страничный отчет по аудиту безопасности блокчейн программного обеспечения. Как следует из отчёта, аудит был проведен в октябре 2016 года и представлен позже в виде «открытого» документа.
В отчёте представлены результаты проверки 25 блокчейн проектов с открытым исходным кодом, по найденным уязвимостям разделенные на 9 классов. В общей сложности было обнаружено 746 векторов узявимостей высокого уровня. Ripple была признана наиболе уязвимой с 223 багами.
Китайский центр CERT, Национальная сеть по реагированию на угрозы компьютерной безопасности, (известная также как CNCERT или CNCERT/CC), была основана в сентябре 2002 года. Это не правительственный, не прибыльный центр по кибербезопасности, главной командой, которая реагирует на угрозы в этой области. CERT говорят о важности технологии блокчейна, вместе с тем предупреждая о безопасности при разработках.
«Любая из уязвимостей может привести к огромным потерям собственности.»
Данные, используемые в отчёте, получены из результатов сканирования сети и поиска специалистами. В отчёте анализируются уязвимости только с точки зрения кода. Из-за ограничений, введённых разработчиками, некоторые проверки приходилось выполнять с помощью теста проникновения.
Обзор 25 проверенных проектов
Основываясь на количестве пользователей и активности их сетевых сообществ, CERT выбрали 25 блокчейнов с хорошей репутацией и популярностью в разных странах мира. Это программное обеспечение было написано на C, C + +, Java, Python, PHP и других языках программирования. Ниже представлен обзор того, что было в отчёте:

Таблица 1: обзор 25 блокчейн проектов
9 категорий уязвимостей
При тестировании обнаружены различные уязвимости, которые были разделены на 9 категорий по следующим критериям: причина возникновения, возможность ущерба, степень вреда и сложность решения.
- Ввод и представление данных
Проблемы со вводом и представлением данных обычно вызываются специальными символами, кодированием и отображением чисел. Некоторые проблемы появляются в результате ошибок ввода. Эти проблемы включают: переполнение буфера, скрипты между сайтами, SQL инъекции, командные инъекции и многие другие.
- Злоупотребление API
API это соглашение между вызывающим и вызываемым, и большинство проблем с API связаны с тем, что вызывающая сторона не понимает цели соглашения. Проблемы с безопасностью также могут возникнуть, когда API не используется правильно.
- Особенности безопасности
В эту категорию входят уязвимости, связанные с аутентификацией, контролем доступа, конфиденциальностью, использованием пароля и управлением правами доступа.
- Управление памятью
С управлением памятью связано большое количество уязвимостей, которые связаны с выполнением операций в памяти, утечками памяти, повторным её использованием и так далее. Этот тип уязвимости обычно приводит к потере производительности системы и падению программ, особенно написанных на языках C / C + +.
- Время и состояние
Распределённые вычисления зависимы от времени и состояния. Взаимодействие между потоками и процессами, а также порядком их выполнения часто задаётся извне, например, семафорами, переменными, системными файлами и так далее. Уязвимости, связанные с распределёнными вычислениями, включают состояние гонки, блокировки и так далее.
- Ошибки при обработке исключительных ситуаций
Этот тип уязвимости связан с обработкой ошибок и обработкой исключений, и наиболее распространенный тип уязвимости — это отсутствие механизма обработки (или наличие не обрабатываемых ошибок), приводящие к неожиданному завершению программы. Другая уязвимость состоит в том, что генерация ошибки выдаёт нападающему слишком много информации.
- Качество кода
Плохое качество кода может привести к непредсказуемому поведению программы. Для атакующего плохой код, наоборот, хороший, поскольку позволяет ему проникнуть в систему не ожиданными способами. Среди этих уязвимостей есть мертвый код, указатель на нулевую точку и утечка ресурсов.
- Инкапсуляция и скрытые дефекты
Разумная инкапсуляция означает задание различий между проверенными и не проверенными данными, между данными различных пользователей, или задания различий между данными, которые видимы или не видимы для пользователей. Распространенные уязвимости включают скрытые поля, утечку информации, подделку запроса к сайту и так далее.
- Ошибки в среде выполнения программы
Уязвимости этих типов являются внешними по отношению к исходному коду, это например, настройки запуска программы, входа в панель управления и так далее, и именно они являются критичными для безопасности продукта.
Первые восемь типов уязвимостей отноятся к проблемам безопасности, связанными с исходным кодом. Их могут использовать атаки, связанные с вредоносным ПО. После проникновения они могут вызвать проблемы безопасности, связанные с утечкой информации, ложной авторизацией и внедрением в запуск программ. Этот последний тип уязвимости описывает то, что является внешним по отношению к действующему коду. Они могут привести к не нормальным действиям ПО, потере данных и другим серьезным проблемам.
Рейтинг уязвимостей
Исследователи разделили проблемы с безопасностью исходного кода на три уровня: высокий, средний и низкий. Критерий для изменения уровня включает два измерения, уверенность и серьезность. Уверенность описывает вероятность того, что здесь есть проблема. Например, вызов strcpy (), помеченный как переполнение буфера, является уязвимостью с низкой уверенностью. Серьезность, по уникальной технике описывает важность проблемы. Например, переполнение буфера чаще всего является показателем более серьезной проблемы с безопасностью, чем пустой указатель. Комбинация этих двух факторов позволяет классифицировать угрозы безопасности, как показано на диаграмме 1.

Диаграмма 1
Ripple это самый не безопасный проект
746 высокоуровневых и 3497 среднеуровневых багов были обнаружены среди 25 проектов, и Ripple заняли лидерство с 223 рискованными участками кода. Диаграмма 2 показывает статистику уязвимостей безопасности, обнаруженных в 25 проектах. Красная линия показывает количество узявимостей на тысячу линий кода (общее количество багов / линии кода * 1000).

Диаграмма 2 статистика уязвимостей, найденных в 25 проектах
«Важно заметить, что среди всех проверенных в этот раз проектов, Ripple наиболее широко используется и имеет самую крупную пользовательскую базу. На момент написания статьи, эта компания по разработке программного обеспечения получила 100 миллионов USD инвестиций от Google и Accenture. Некоторые крупные финансовые учреждения объявили, что присоединяются к этой платёжной сети, среди которых есть Standard Chartered, Westpac, Shanghai Huarui Bank и так далее. Принимая во внимание тот факт, что Ripple напрямую связан с финансовыми активами, и эти участки кода уязвимы для хакеров, данные учреждения могут потерпеть невообразимые убытки.»
Ethereumj это проект на втором месте по небезопасности, со 110 уязвимостями высокого уровня. Bitshares содержит 4 высокорискованных бага и 665 средних, и это наибольшее количество среди всех проектов.
Риппл не только не будет валится,но и будет расти, так как представляет собой готовое решенпие для банковской сферы
И почему же это Ripple не валится?
При таких результатах отчета, свалится. Или уже валят.
К осени рипл будет в районе выше 50 центов. Зря скепсис разводите. Эфир по отчету тоже не блещет результатами, одна ползёт вверх.