Пост
Поделитесь своими знаниями.
Лучшие инструменты для аудита кода Sui Move?
Я провожу аудит смарт-контракта Sui Move, и мне необходимо убедиться в безопасности, правильности и эффективности использования газа Передовые практики
Текущие проблемы:
- Ручное рецензирование занимает много времени
- Не уверены, какие инструменты охватывают уникальные функции Sui
- Нужен как статический, так и динамический анализ
Вопросы:
- Какие статические анализаторы для Sui Move самые эффективные?
- Как формально тестировать сложные инварианты?
- Существуют ли сканеры безопасности, специфичные для SUI?
- Какие методы ручного рецензирования улавливают то, чего не хватает инструментам?
- Sui
- Move
Ответы
2В целях безопасности я по-прежнему предпочитаю не только использовать инструмент, но и проводить аудит у третьей стороны.
Независимо от того, разрабатываете ли вы приложение DeFi, блокчейн-игру или любой блокчейн-проект на Sui, ряд аудиторских фирм уже активно поддерживают экосистему, предлагая услуги безопасности на разных стадиях разработки: -Asymptotic— создал Sui Prover — инструмент формальной верификации, специально разработанный для валидации смарт-контрактов Sui. -Blaize.Security— предоставляет комплексные услуги безопасности, ориентированные на программные коды, включая ручной аудит, защиту конвейеров CI/CD, мониторинг в реальном времени и анализ инцидентов. -Certora— сочетает традиционный ручной аудит с формальной проверкой для проведения тщательных гибридных оценок безопасности. -MoveBit— одна из первых компаний, внедривших формальную верификацию в аудиты Sui, а также вложила свой вклад в это дело с помощью инструментов для разработчиков и мероприятий CTF. -OtterSec— известна тщательным ручным аудитом и тесным сотрудничеством с командами на протяжении всего жизненного цикла аудита. -Zellic— обладает обширным опытом работы на языке Move и активно работает с несколькими проектами в экосистеме Sui.
Кроме того, разработчики Sui могут использоватьMove Registry (MVR) — сетевую систему управления пакетами, которая позволяет командам прикреплять ключевую информацию, такую как исходный код, документацию и результаты аудита, непосредственно к развернутым смарт-контрактам.
####1. Базовый набор инструментов для аудита
#####Статический анализ
Инструмент | Назначение | Ключевые функции |
---|---|---|
** Move Prover** | Формальная верификация | - Математическое доказательство инвариантов - Обнаружение арифметических переполнений - Обеспечение правильности управления доступом |
** Move Analyzer** | Интеграция с IDE | |
sui move verify sui client verify-source | ** Проверки безопасности с помощью интерфейса командной строки** | Встроенные аудиты |
Пример использования Prover:
spec balance_never_negative {
invariant balance >= 0;
}
#####Динамический анализ
Инструмент | Тип | Охват |
---|---|---|
** Платформа тестирования Sui** | Модульные тесты | - 100-процентное покрытие маршрута - Макетные объекты/часы |
** Sui Fuzzer** | Тесты свойств |
Пример теста Fuzz:
#[test_only]
fun fuzz_transfer(amount: u64) {
let balance = 1000;
transfer(&mut balance, amount); // Auto-tests 0, MAX, etc.
}
####2. Специальные сканеры
#####Средства проверки жизненного цикла объектов -** Анализатор скидок на хранение Sui** | Обнаруживает:
- Неограниченный рост объектов
drop
- Недостающие способности - Осиротевшие самодельные дети
######Аудит контроля доступа
# Find all entry functions without signer checks
grep -r "public entry" ./sources | grep -v "&signer"
#####Линтеры для общих объектов Настраиваемые правила для:
- Отсутствуют проверки эпох
- Риски параллельных модификаций
- устаревшие ссылки на общие объекты
####3. Методы ручного рецензирования
#####Критические проверки 1.Паттерны возможностей:
// Verify admin caps are properly guarded
assert!(address_of(signer) == admin_cap.admin, EUnauthorized);
2.Динамическая безопасность в полевых условиях:
// Ensure no unvalidated user input in dynamic fields
dynamic_field::add(&mut obj, user_input, value); // RISKY
#####Горячие точки газа -Операции по хранению:
// Prefer Table over vector for large collections
let bad: vector<u64>; // Expensive deletions
let good: Table<ID, u64>; // O(1) ops
#####Соблюдение фреймворка Sui
####4. Интегрированный рабочий процесс аудита
Шаг 1: статическое сканирование
sui move build --lint && \
sui move prove --path ./sources
Шаг 2: динамическое тестирование
sui move test --coverage && \
move-fuzzer ./sources -iterations 1000
Шаг 3: проверка вручную
- Проверьте все
entry
функции:
- Присутствует подписавший?
- Проверка введенных данных?
- Аудит общих объектов:
- Проверки эпохи?
- Запорные механизмы?
####5. Общие результаты по инструментам
Инструмент | Типичные уловы |
---|---|
Move Prover | |
Sui CLI | |
Fuzzer | |
Руководство |
####6. Советы профессионалов
✅Непрерывный аудит
# GitHub Action example
- uses: MoveAnalyst/move-security-check@v1
with:
path: ./sources
✅Сравните известные уязвимости
✅Используйте несколько RPC Протестируйте против:
- Локальная сеть
- Тестовая сеть
- Различные поставщики полнонодных узлов
Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Заработай свою долю из 1000 Sui
Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.
- Почему BCS требует точного порядка полей для десериализации, когда структуры Move содержат именованные поля?53
- «Ошибки проверки нескольких источников» в публикациях модуля Sui Move — автоматическое устранение ошибок43
- Сбой транзакции Sui: объекты, зарезервированные для другой транзакции25
- Как ограничения возможностей взаимодействуют с динамическими полями в гетерогенных коллекциях?05