关于GraphGenie
GraphGenie是一款针对图形数据库引擎的安全检测工具,该工具可以通过改变图形查询模式来检测图形数据库引擎中的逻辑错误。
GraphGenie 是一款错误查找工具,用于检测图形数据库管理系统中的逻辑错误、性能问题和内部错误。具体来说,与大多数现有的测试工作改变查询谓词不同,GraphGenie 利用图形查询转换 (GQT) 来构建语义等效或变体图形查询模式,从而可以对其结果进行比较分析以发现错误。GraphGenie 已经过测试(20.04.2 LTS Ubuntu Linux 64 位发行版、Python 3.8.10),并发现了 Neo4j 等流行图形数据库引擎上以前未知的错误。
工具要求
Python 3.8.10+
python3-pip
configparser
neo4j
redisgraph
psycopg2
工具安装
由于该工具基于Python 3.8.10开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3.8.10+环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/YuanchengJiang/GraphGenie.git
然后切换到项目目录中,运行下列命令安装该工具所需的其他依赖组件:
cd GraphGenie apt install python3-pip pip3 install configparser pip3 install neo4j pip3 install redisgraph pip3 install psycopg2
图形数据库引擎设置
我们不需要初始化图形数据,可以直接使用现有的图形数据集(点击【这里】获取)。针对Neo4j的配置如下:
apt install openjdk-17-jdk; cd dbs; wget https://dist.neo4j.org/neo4j-community-5.11.0-unix.tar.gz; tar -xvf neo4j-community-5.11.0-unix.tar.gz; git clone https://github.com/neo4j-graph-examples/recommendations.git; cd neo4j-community-5.11.0; ./bin/neo4j-admin dbms set-initial-password 12344321 ./bin/neo4j-admin database load --from-stdin --overwrite-destination=true neo4j < ../recommendations/data/recommendations-50.dump; echo "dbms.transaction.timeout=30s" >> ./conf/neo4j.conf ./bin/neo4j start
工具使用
先配置graphgenie.ini,然后开始测试。如果您测试的是Neo4j,只需运行 main.py即可:
./main.py
对于其他数据库,您需要先初始化数据集并在main.py的第332行指定下列参数:
node_labels, edge_labels, node_properties, connectivity_matrix
执行完成后,可以在./bug.log中找到检测到的安全问题详情,./testing.log文件将记录下所有执行过的查询信息。
许可证协议
本项目的开发与发布遵循Apache-2.0开源许可协议。
项目地址
GraphGenie:【GitHub传送门】
参考资料
https://github.com/neo4j-graph-examples/recommendations.git
https://github.com/neo4j/neo4j