1 Star 0 Fork 0

OSCHINA-MIRROR/WeBank-WeBASE-Solidity-Security

Join Gitlife
Discover and participate in excellent open source projects with over 10 million developers. Private repositories are also completely free :)
Join for free
This is a mirrored repository, synchronized daily from the source repository.
Clone/Download
Contribute code
Sync code
Cancel
Hint: Since Git does not support empty folders, creating a folder will generate an empty .keep file.
Loading...
README.md

WeBASE-Solidity-Security

1. Описание услуги по обнаружению уязвимостей в контрактах Solidity

Услуга по обнаружению уязвимостей в контрактах Solidity предоставляет интерфейс для внешнего использования.

Этот интерфейс принимает zip-архив с файлами контрактов, закодированными в Base64, и после распаковки и анализа возвращает результаты проверки на уязвимости.

2. Интерфейс обнаружения уязвимостей в Solidity контрактах

2.1. Интерфейс обнаружения уязвимостей

Описание интерфейса

Интерфейс используется для проведения проверки контрактов на уязвимости.

Входные данные: zip-архив, содержащий файлы контрактов в папке contracts, имена файлов должны соответствовать именам контрактов. Файлы должны быть расположены в следующей структуре:

|- contracts
| |- Evidence.sol
| |- EvidenceFactory.sol
|- docs
| |- deploy.md

Архив должен быть назван в соответствии с бизнес-идентификатором appid. Затем архив кодируется в Base64.

URL интерфейса

http://localhost:5007/WeBASE-Solidity-Security/scan

Метод вызова

HTTP POST

Параметры запроса

Таблица входных параметров

Входной параметр Тип Обязателен Примечание
1 appid String Да Бизнес-идентификатор, используется для различения контрактов
2 contractSource String Да Zip-архив с контрактами, закодированный в Base64

Формат данных

{
  "appid": "appid001",
  "contractSource": "UEsDBBQAAAAAACizbFAAAAAAAAAAAAAAAAAKAAAAY29udHJhY3RzL1BLAwQUAAAACAAIiGVQuSZqBJ0AAABvAQAAGAAAAGNvbnRyYWN0cy9IZWxsb1dvcmxkLnNvbIWOMQvCMBCF90L/w43tUiS4FXcnFwc3IbRnCCQXSa6CSP+7sakYpNo33r33vXf1UlkJwRnda77DedNsG9GWReeIvewY9miMOzlv+kdZQFRgr0kBSYttuuANieGIfIi3KvvXSwax5LgM1LF2BAq5qmN5YBkjHnnwFOZE/VqQNH/yFeMXKUTSuylPotWfsTQNSJpgO/qNE6s88R84PgFQSwMEFAAAAAAAE7NsUAAAAAAAAAAAAAAAAAUAAABkb2NzL1BLAwQKAAAAAADjgGxQ1Qj/mQkAAAAJAAAADgAAAGRvY3MvZGVwbG95Lm1kIyBEZXBsb3kKUEsBAj8AFAAAAAAAKLNsUAAAAAAAAAAAAAAAAAoAJAAAAAAAAAAQAAAAAAAAAGNvbnRyYWN0cy8KACAAAAAAAAEAGACqQxwMevjVAapDHAx6+NUBEu2Y9Xn41QFQSwECPwAUAAAACAAIiGVQuSZqBJ0AAABvAQAAGAAkAAAAAAAAACAAAAAoAAAAY29udHJhY3RzL0hlbGxvV29ybGQuc29sCgAgAAAAAAABABgAselMfMzy1QF9ieU0evjVAapDHAx6+NUBUEsBAj8AFAAAAAAAE7NsUAAAAAAAAAAAAAAAAAUAJAAAAAAAAAAQAAAA+wAAAGRvY3MvCgAgAAAAAAABABgAa0Sa9Xn41QFrRJr1efjVARPSmfV5+NUBUEsBAj8ACgAAAAAA44BsUNUI/5kJAAAACQAAAA4AJAAAAAAAAAAgAAAAHgEAAGRvY3MvZGVwbG95Lm1kCgAgAAAAAAABABgAIBTBN0X41QFrRJr1efjVAWtEmvV5+NUBUEsFBgAAAAAEAAQAfQEAAFMBAAAAAA=="
}

Выходные параметры

Таблица выходных параметров

Выходной параметр Тип Обязателен Примечание
1 code Int Да Код результата: 0 — нормальный результат, другие значения — ошибка
2 message String Нет Сообщение об ошибке
3 data Json Да Результаты проверки

a. Пример результатов успешной проверки

{
  "code": 0,
  "message": null,
  "data": {
    "detectors": [
      {
        "elements": [
          {
            "source_mapping": {
              "starting_column": 1,
              "ending_column": 24,
              "filename_used": "/WeBASE-Solidity-Security/dist/contracts/appid001/contracts/HelloWorld.sol",
              "filename_relative": "contracts/HelloWorld.sol",
              "start": 0,
              "length": 23,
              "filename_short": "contracts/HelloWorld.sol",
              "is_dependency": false,
              "lines": [
                1
              ],
              "filename_absolute": "/WeBASE-Solidity-Security/dist/contracts/appid001/contracts/HelloWorld.sol"
            },
            "name": "^0.4.2",
            "type": "pragma",
            "type_specific_fields": {
              "directive": [
                "solidity",
                "^",
                "0.4",
                ".2"
              ]
            }
          }
        ],
        "impact": "Informational",
        "confidence": "High",
        "markdown": "Pragma version[^0.4.2](contracts/HelloWorld.sol#L1) allows old versions\n",
        "description": "Pragma version^0.4.2 (contracts/HelloWorld.sol#1) allows old versions\n",
        "id": "b93b7ce0902076867f801a1b62ad7557d0305767e196372ed38c0d7076440c1e",
        "check": "solc-version"
      }
    ]
  }
}

b. Пример результатов неудачной проверки

{
  "code": 203003,
  "message": "Traceback (most recent call last):\n  File \"/usr/local/lib/python3.6/dist-packages/crytic_compile/platform/solc.py\", line 309, in _run_solc\n    ret = json.loads(stdout)\n  File \"/usr/lib/python3.6/json/__init__.py\", line 354, in loads\n    return _default_decoder.decode(s)\n  File
``` **3. Возвращаемые коды**
| Код | Сообщение | Описание |
| --- | --- | --- |
| 0 | success | Нормальное выполнение |
| 103001 | system error | Системная ошибка |
| 103002 | param valid fail | Ошибка параметров |
| 203001 | There is no sol files under contracts folder | В папке контрактов нет файлов Sol |
| 203002 | shell execute error | Ошибка выполнения в оболочке |
| 203003 | contracts abnormal | Аномалия в контрактах |

## 3. Установка сервиса
### 3.1 Предварительные условия
| Программное обеспечение | Версия |
|---|---|
| Java | JDK8 или выше |
| Python | 3.6+ |
| solc | 0.4.25 |
| slither | — |
#### Установка slither
Установите slither с помощью pip:
```bash
pip install slither-analyzer

В зависимости от версии контракта, который вы хотите проверить, установите компилятор контрактов solc. В этом примере используется версия 0.4.25. Загрузите и распакуйте файл, затем скопируйте исполняемый файл в каталог PATH.

curl -LO https://github.com/FISCO-BCOS/solidity/releases/download/v0.4.25/solc-linux.tar.gz

После успешной установки проверьте версию с помощью команды:

slither --version

3.2 Установка WeBASE-Solidity-Security

3.2.1 Клонирование кода

Клонируйте код с GitHub:

git clone https://github.com/WeBankFinTech/WeBASE-Solidity-Security.git

Перейдите в каталог:

cd WeBASE-Solidity-Security

3.2.2 Компиляция кода

Скомпилируйте код одним из следующих способов: Способ 1: Если на сервере установлен Gradle и его версия не ниже 4.10, выполните команду:

gradle build -x test

Способ 2: Если Gradle не установлен или его версия ниже 4.10, используйте gradlew для компиляции:

chmod +x ./gradlew && ./gradlew build -x test

По завершении компиляции в корневом каталоге WeBASE-Solidity-Security будет создана папка dist с уже скомпилированным кодом.

3.2.3 Запуск и остановка сервиса

Вернитесь в папку dist и выполните следующие команды:

  • Запуск: bash start.sh
  • Остановка: bash stop.sh
  • Проверка статуса: bash status.sh Примечание: После запуска службы убедитесь, что она работает нормально, проверив журнал. Если служба не запускается должным образом, сначала выполните stop.sh, а затем start.sh.

3.2.4 Просмотр журнала

Чтобы просмотреть журнал, перейдите в папку dist:

...
    Application() - main run success...

Comments ( 0 )

You can comment after Login

Introduction

No description available Expand Collapse
Apache-2.0
Cancel

Releases

No releases yet

Contributor

All

Recent Activities

Load more
No more results to load
1
https://gitlife.ru/oschina-mirror/WeBank-WeBASE-Solidity-Security.git
git@gitlife.ru:oschina-mirror/WeBank-WeBASE-Solidity-Security.git
oschina-mirror
WeBank-WeBASE-Solidity-Security
WeBank-WeBASE-Solidity-Security
master