SherlockChain:基于高级AI实现的智能合约安全分析框架
关于SherlockChain
SherlockChain是一款功能强大的智能合约安全分析框架,该工具整合了Slither工具(一款针对智能合约的安全工具)的功能,并引入了高级人工智能模型,旨在辅助广大研究人员针对Solidity、Vyper和Plutus智能合约执行安全分析。
核心功能
1、全面的漏洞检测:SherlockChain的检测器可以识别各种不同类型的漏洞,包括重入漏洞和无保护升级等高危安全问题;
2、AI驱动的安全分析:集成的人工智能模型提高了漏洞检测的精准度,为开发人员提供了高价值的安全实践建议;
3、无缝集成:SherlockChain支持与流行的开发框架(如Hardhat、Foundry和Brownie)无缝集成,使其易于融入现有的工作流程;
4、直观的分析报告:SherlockChain可以生成包含有清晰解释和代码段的详细报告,能够帮助开发人员快速理解和解决已发现的安全问题;
5、自定义分析:框架提供了灵活的API,允许用户编写自定义分析和检测器,并根据实际需求对SherlockChain进行自定义开发;
6、持续性监控:我们可以将SherlockChain集成到自己的CI/CD管道中,为智能合约代码库提供持续监控和警报服务;
AI驱动功能
1、智能漏洞优先级确认:人工智能模型分析检测到的漏洞上下文和潜在影响,为开发人员提供一个需要解决的问题优先级列表;
2、自动修复建议:人工智能组件会提供漏洞修复和代码修改方案,以解决已识别的漏洞,加快修复过程;
3、主动安全审计:SherlockChain的人工智能模型会持续监控目标代码库,主动识别新出现的威胁并提供预警信号;
4、自然语言交互:用户可以使用自然语言与SherlockChain进行交互,从而查询工具、请求特定分析并收到详细响应;
工具安装
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/0xQuantumCoder/SherlockChain.git
然后切换到项目目录中,执行安装脚本即可:
cd SherlockChainpip install .
工具使用
1、漏洞检测:--detect和--exclude-detectors选项允许用户指定要执行的漏洞检测器,包括内置的和AI驱动的检测器;
2、分析报告:--report-format、--report-output和各种--report-*选项可以控制分析报告的形式,支持以不同格式生成报告,例如JSON、Markdown和SARIF等;
3、过滤器:--filter-*选项可以对报告的问题根据严重性、影响程度、可信度和其他标准进行过滤;
4、AI集成:--ai-*选项允许用户配置和控制SherlockChain的AI功能,例如优先考虑高影响漏洞、启用特定的人工智能检测器和管理人工智能模型配置等;
5、与开发框架的集成:--truffle和--truffle-build-directory选项允许我们将SherlockChain集成到Truffle之类的流行开发框架中;
6、杂项:提供了用于编译智能合约、枚举检测器和自定义分析过程的附加选项;
下列命令可以查看工具的帮助选项:
sherlockchain --help
执行上述命令后,即可查看到SherlockChain框架可提供的全部参数选项以及对应的描述信息:
usage: sherlockchain [-h] [--version] [--solc-remaps SOLC_REMAPS] [--solc-settings SOLC_SETTINGS][--solc-version SOLC_VERSION] [--truffle] [--truffle-build-directory TRUFFLE_BUILD_DIRECTORY][--truffle-config-file TRUFFLE_CONFIG_FILE] [--compile] [--list-detectors][--list-detectors-info] [--detect DETECTORS] [--exclude-detectors EXCLUDE_DETECTORS][--print-issues] [--json] [--markdown] [--sarif] [--text] [--zip] [--output OUTPUT][--filter-paths FILTER_PATHS] [--filter-paths-exclude FILTER_PATHS_EXCLUDE][--filter-contracts FILTER_CONTRACTS] [--filter-contracts-exclude FILTER_CONTRACTS_EXCLUDE][--filter-severity FILTER_SEVERITY] [--filter-impact FILTER_IMPACT][--filter-confidence FILTER_CONFIDENCE] [--filter-check-suicidal][--filter-check-upgradeable] [--filter-check-erc20] [--filter-check-erc721][--filter-check-reentrancy] [--filter-check-gas-optimization] [--filter-check-code-quality][--filter-check-best-practices] [--filter-check-ai-detectors] [--filter-check-all][--filter-check-none] [--check-all] [--check-suicidal] [--check-upgradeable][--check-erc20] [--check-erc721] [--check-reentrancy] [--check-gas-optimization][--check-code-quality] [--check-best-practices] [--check-ai-detectors] [--check-none][--check-all-detectors] [--check-all-severity] [--check-all-impact] [--check-all-confidence][--check-all-categories] [--check-all-filters] [--check-all-options] [--check-all][--check-none] [--report-format {json,markdown,sarif,text,zip}] [--report-output OUTPUT][--report-severity REPORT_SEVERITY] [--report-impact REPORT_IMPACT][--report-confidence REPORT_CONFIDENCE] [--report-check-suicidal][--report-check-upgradeable] [--report-check-erc20] [--report-check-erc721][--report-check-reentrancy] [--report-check-gas-optimization] [--report-check-code-quality][--report-check-best-practices] [--report-check-ai-detectors] [--report-check-all][--report-check-none] [--report-all] [--report-suicidal] [--report-upgradeable][--report-erc20] [--report-erc721] [--report-reentrancy] [--report-gas-optimization][--report-code-quality] [--report-best-practices] [--report-ai-detectors] [--report-none][--report-all-detectors] [--report-all-severity] [--report-all-impact][--report-all-confidence] [--report-all-categories] [--report-all-filters][--report-all-options] [--report-all] [--report-none] [--ai-enabled] [--ai-disabled][--ai-priority-high] [--ai-priority-medium] [--ai-priority-low] [--ai-priority-all][--ai-priority-none] [--ai-confidence-high] [--ai-confidence-medium] [--ai-confidence-low][--ai-confidence-all] [--ai-confidence-none] [--ai-detectors-all] [--ai-detectors-none][--ai-detectors-specific AI_DETECTORS_SPECIFIC] [--ai-detectors-exclude AI_DETECTORS_EXCLUDE][--ai-models-path AI_MODELS_PATH] [--ai-models-update] [--ai-models-download][--ai-models-list] [--ai-models-info] [--ai-models-version] [--ai-models-check][--ai-models-upgrade] [--ai-models-remove] [--ai-models-clean] [--ai-models-reset][--ai-models-backup] [--ai-models-restore] [--ai-models-export] [--ai-models-import][--ai-models-config AI_MODELS_CONFIG] [--ai-models-config-update] [--ai-models-config-reset][--ai-models-config-export] [--ai-models-config-import] [--ai-models-config-list][--ai-models-config-info] [--ai-models-config-version] [--ai-models-config-check][--ai-models-config-upgrade] [--ai-models-config-remove] [--ai-models-config-clean][--ai-models-config-reset] [--ai-models-config-backup] [--ai-models-config-restore][--ai-models-config-export] [--ai-models-config-import] [--ai-models-config-path AI_MODELS_CONFIG_PATH][--ai-models-config-file AI_MODELS_CONFIG_FILE] [--ai-models-config-url AI_MODELS_CONFIG_URL][--ai-models-config-name AI_MODELS_CONFIG_NAME] [--ai-models-config-description AI_MODELS_CONFIG_DESCRIPTION][--ai-models-config-version-major AI_MODELS_CONFIG_VERSION_MAJOR][--ai-models-config-version-minor AI_MODELS_CONFIG_VERSION_MINOR][--ai-models-config-version-patch AI_MODELS_CONFIG_VERSION_PATCH][--ai-models-config-author AI_MODELS_CONFIG_AUTHOR][--ai-models-config-license AI_MODELS_CONFIG_LICENSE][--ai-models-config-url-documentation AI_MODELS_CONFIG_URL_DOCUMENTATION][--ai-models-config-url-source AI_MODELS_CONFIG_URL_SOURCE][--ai-models-config-url-issues AI_MODELS_CONFIG_URL_ISSUES][--ai-models-config-url-changelog AI_MODELS_CONFIG_URL_CHANGELOG][--ai-models-config-url-support AI_MODELS_CONFIG_URL_SUPPORT][--ai-models-config-url-website AI_MODELS_CONFIG_URL_WEBSITE][--ai-models-config-url-logo AI_MODELS_CONFIG_URL_LOGO][--ai-models-config-url-icon AI_MODELS_CONFIG_URL_ICON][--ai-models-config-url-banner AI_MODELS_CONFIG_URL_BANNER][--ai-models-config-url-screenshot AI_MODELS_CONFIG_URL_SCREENSHOT][--ai-models-config-url-video AI_MODELS_CONFIG_URL_VIDEO][--ai-models-config-url-demo AI_MODELS_CONFIG_URL_DEMO][--ai-models-config-url-documentation-api AI_MODELS_CONFIG_URL_DOCUMENTATION_API][--ai-models-config-url-documentation-user AI_MODELS_CONFIG_URL_DOCUMENTATION_USER][--ai-models-config-url-documentation-developer AI_MODELS_CONFIG_URL_DOCUMENTATION_DEVELOPER][--ai-models-config-url-documentation-faq AI_MODELS_CONFIG_URL_DOCUMENTATION_FAQ][--ai-models-config-url-documentation-tutorial AI_MODELS_CONFIG_URL_DOCUMENTATION_TUTORIAL][--ai-models-config-url-documentation-guide AI_MODELS_CONFIG_URL_DOCUMENTATION_GUIDE][--ai-models-config-url-documentation-whitepaper AI_MODELS_CONFIG_URL_DOCUMENTATION_WHITEPAPER][--ai-models-config-url-documentation-roadmap AI_MODELS_CONFIG_URL_DOCUMENTATION_ROADMAP][--ai-models-config-url-documentation-blog AI_MODELS_CONFIG_URL_DOCUMENTATION_BLOG][--ai-models-config-url-documentation-community AI_MODELS_CONFIG_URL_DOCUMENTATION_COMMUNITY]
许可证协议
本项目的开发与发布遵循AGPL-3.0开源许可协议。
项目地址
SherlockChain:【GitHub传送门】
相关文章:

SherlockChain:基于高级AI实现的智能合约安全分析框架
关于SherlockChain SherlockChain是一款功能强大的智能合约安全分析框架,该工具整合了Slither工具(一款针对智能合约的安全工具)的功能,并引入了高级人工智能模型,旨在辅助广大研究人员针对Solidity、Vyper和Plutus智…...
MySQL中Explain执行计划各参数的含义
EXPLAIN 语句输出的各个列的作用先大致罗列一下: 列名 描述 id 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id select_type SELECT关键字对应的那个查询的类型 table 表名 partitions 匹配的分区信息 type 针对单表的访问方法 possible_keys…...

Redis队列自研组件
背景 年初的时候设计实践过一个课题:SpringBootRedis实现不重复消费的队列,并用它开发了一个年夜饭下单和制作的服务。不知道大家还有没有印象。完成这个课题后,我兴致勃勃的把它运用到了项目里面,可谁曾想,运行不久后…...
ArchLinux挑战安装(ZFS、Wayland、KDE、xero)
目录 0. 前言: 1. 先期准备 1.1 引导ArchLinx光盘。 1.2 禁用 reflector 服务 1.3 防止网卡禁用 1.4 wifi设置 1.5 测试网络是否连接 1.6 更新系统时间 1.7 更换源 1.8 下载ZFS模块 1.9 加载ZFS模块 2. 磁盘处理 2.1 查看磁盘分区 2.2 清除与整个磁盘…...

纯css写一个动态圣诞老人
效果预览 在这篇文章中,我们将学习如何使用CSS来创建一个生动的圣诞老人动画。通过CSS的魔力,我们可以让圣诞老人在网页上摇摆,仿佛在向我们招手庆祝圣诞节和新年。 实现思路 实现这个效果的关键在于CSS的keyframes动画规则以及各种CSS属性…...
百度Apollo的PublicRoadPlanner一些移植Ros2-foxy的思路(持续更新)
如今的PublicRoadPlanner就是之前耳熟能详的EM planner 计划 —— ROS2与CARLA联合仿真 结构化场景: 规划算法:EM-planner 控制算法:MPC和PID 非结构化场景: 规划算法采用Hybrid A* (1)小车模型搭建(计划参考Github上Hybrid上的黑车,比较炫酷) (2)车辆里程计: 位…...
Linux内存管理(七十三):cgroup v2 简介
版本基于: Linux-6.6 约定: 芯片架构:ARM64内存架构:UMACONFIG_ARM64_VA_BITS:39CONFIG_ARM64_PAGE_SHIFT:12CONFIG_PGTABLE_LEVELS :31. cgroup 简介 术语: cgroup:control group 的缩写,永不大写(never capitalized); 单数形式的 cgroup 用于指定整个特性,也用…...

c++习题01-ljc的暑期兼职
目录 一,题目描述 二,思路 三,伪代码 四,流程图 五,代码 一,题目描述 二,思路 1,根据题目要求需要声明4个变量:a,b,c,d ;牛奶价格a,活动要求b&…...

有哪些方法可以恢复ios15不小心删除的照片?
ios15怎么恢复删除的照片?在手机相册里意外删除了重要的照片?别担心!本文将为你介绍如何在iOS 15系统中恢复已删除的照片。无需专业知识,只需要按照以下步骤操作,你就能轻松找回宝贵的回忆。 一、从iCloud云端恢复删除…...

nacos漏洞汇总
1 nacos介绍 1.1 nacos是啥 Alibaba Nacos是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,可以快速实现动态服务发现、服…...

React Antd ProTable 如何设置类似于Excel的筛选框
React Antd ProTable 如何设置类似于Excel的筛选框 目标:在web页面的table表格中完成类似于EXCEL的Filter筛选功能。 示例图:点击标题列上方的漏斗状图标,即可对数据进行筛选。 ProTable 前景提要 ProTable API中有说明,是有…...

句法分析概述
第1关:句法分析概述 任务描述 本关任务:通过对句法分析基本概念的学习,完成相应的选择题。 相关知识 为了完成本关任务,你需要掌握: 句法分析的基础概念; 句法分析的数据集和评测方法。 句法分析简介…...
简单了解css的基本使用
CSS 一、基础认知 1、CSS引入方式 1.1、内嵌式(CSS写在style标签中) style标签虽然可以写在页面的任意位置,但是通常约定写在head标签中 2.2、外联式(CSS写在一个单独的.css文件中) 需要通过link标签在网页中引入…...

构建网络图 (JavaScript)
前序:在工作中难免有一些千奇百怪的需求,如果你遇到构建网络图,或者学习应对未来,请看这边文章,本文以代码为主。 网络图是数据可视化中实用而有效的工具,特别适用于说明复杂系统内的关系和连接。这些图表…...
洛谷U389682 最大公约数合并
这道题最后有一个性质没有想出来,感觉还是有一点遗憾。 性质一、贪心是不对的 8 11 11 16虽然第一次选择8和16合并是最优的,但是如果合并两次的话8 11 11是最优的。 性质二 、有1的情况就是前k1个,也就是说,很多情况下取前k1都…...
video_多个m3u文件合并成一个m3u文件
主要是用#EXT-X-DISCONTINUITY进行拼接,用简单的例子说明: 第一个文件: #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:69 #EXT-X-MEDIA-SEQUENCE:1001 #EXTINF:60.000000, xmt202406_11001.ts #EXTINF:60.000000, xmt202406_11002.ts #EXTINF:60.000000, xmt202406_11…...
x264 码率控制 MBtree 原理:i_propagate_cost计算过程
x264 码率控制 MBtree 原理 关于x264 码率控制中 MBtree 算法的原理具体可以参考:x264 码率控制MBtree原理。 i_propagate_cost介绍 该值在 frame.h 中 x264_frame_t结构体中声明。该值是一个 uint16_t型指针变量,在 MBtree 算法中用来存储每个宏块的传播代价。在*frame_ne…...

C语言基础笔记(全)
一、数据类型 数据的输入输出 1.数据类型 常量变量 1.1 数据类型 1.2 常量 程序运行中值不发生变化的量,常量又可分为整型、实型(也称浮点型)、字符型和字符串型 1.3 变量 变量代表内存中具有特定属性的存储单元,用来存放数据,即变量的值&a…...
通过注释语句,简化实体类的定义(省略get/set/toString的方法)
引用Java的lombok库,减少模板代码,如getters、setters、构造函数、toString、equals和hashCode方法等 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructorData…...

springboot框架使用Netty依赖中解码器的作用及实现详解
在项目开发 有需求 需要跟硬件通信 也没有mqtt 作为桥接 也不能http 请求 api 所以也不能 json字符串这么爽传输 所以要用tcp 请求 进行数据交互 数据还是16进制的 写法 有帧头 什么的 对于这种物联网的这种对接 我的理解就是 我们做的工作就像翻译 把这些看不懂的 字节流 变成…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...