cover of episode Graph Bugs

Graph Bugs

2025/3/10
logo of podcast Data Skeptic

Data Skeptic

AI Deep Dive AI Chapters Transcript
People
A
Asaf
C
Celine
主持人
专注于电动车和能源领域的播客主持人和内容创作者。
Topics
Celine Wüst: 我是ETH Zurich的硕士生,研究方向是安全可靠的系统和数据管理。我的硕士论文研究的是Dynkle,这是一个用于图数据库管理系统(Graph Database Management Systems,简称GDBMS)的fuzzer。Dynkle通过自动生成复杂的Cypher查询来测试GDBMS,旨在发现隐藏的bug,例如缓冲区溢出、空值引用和程序状态异常。Dynkle跟踪查询上下文和图模式两种状态信息,以生成更复杂的查询,提高发现隐藏bug的概率。我们使用Dynkle测试了Neo4j、FalconDB(原RedisGraph)和Apache AGE等多种GDBMS,发现了大量的bug,其中Neo4j的bug最多,因为我们对其进行了更长时间的测试。在发现bug后,我们会通过GitHub或加密邮件向开发者报告,大多数bug都能得到修复。一些bug的重现性较差,需要多次尝试才能提交有效的bug报告。我们也探索了如何使用Dynkle来发现逻辑bug,这需要在Dynkle的基础上添加新的策略。Dynkle是一个持续发展的项目,会随着图数据库的发展而不断改进。 关于编程语言的选择,我认为需要权衡性能、开发速度和开发者经验等多种因素。例如,Neo4j使用Java编写,虽然成熟稳定,但性能不如使用C或C++编写的数据库。Rust语言兼具性能和安全性,但开发速度较慢。 关于图数据库的选择,如果应用面向客户,建议使用Neo4j,因为它成熟稳定且安全;如果应用仅用于内部,建议使用FalconDB,因为它性能更高。 大型语言模型在软件开发中很有用,但需要谨慎使用,并进行人工审查,以避免引入新的bug或安全风险。 Asaf: 我对Celine的研究工作很感兴趣,特别是Dynkle这个工具。它通过生成随机查询来测试图数据库,这是一种创新的方法。我很好奇Dynkle是如何生成复杂的查询的,以及它发现了哪些类型的bug。Celine提到了Dynkle发现的bug通常需要修改GDBMS本身,而不是简单的添加单元测试,这说明Dynkle能够发现一些隐藏较深的bug。我也很好奇Dynkle的效率如何,以及它是否可以应用于关系数据库。Celine的回答让我对图数据库的测试有了更深入的了解,也对图数据库的选择有了更清晰的认识。 此外,我对Celine关于编程语言和图数据库选择方面的观点很感兴趣。她提到了Java、C++、Rust等多种编程语言的优缺点,以及Neo4j和FalconDB等图数据库的优缺点,这为我们选择合适的技术提供了参考。 最后,Celine对大型语言模型在软件开发中的应用提出了谨慎的建议,这提醒我们不能盲目依赖AI技术,而应该保持人工审查和验证的重要性。

Deep Dive

Chapters
Celine introduces Dynkle, a fuzzer for graph databases. It generates complex queries to find bugs by tracking query context and graph schema, increasing the chances of triggering hidden bugs.
  • Dynkle is a fuzzer that automatically generates input for graph database systems.
  • It tracks query context (variables) and graph schema (node/edge labels, properties).
  • It uses stateful information to generate complex queries to find bugs.

Shownotes Transcript

In this episode today’s guest is Celine Wüst, a master’s student at ETH Zurich specializing in secure and reliable systems, shares her work on automated software testing for graph databases. Celine shows how fuzzing—the process of automatically generating complex queries—helps uncover hidden bugs in graph database management systems like Neo4j, FalconDB, and Apache AGE.

Key insights include how state-aware query generation can detect critical issues like buffer overflows and crashes, the challenges of debugging complex database behaviors, and the importance of security-focused software testing.

We'll also find out which Graph DB company offers swag for finding bugs in its software and get Celine's advice about which graph DB to use.


Want to listen ad-free?  Try our Graphs Course?  Join Data Skeptic+ for $5 / month of $50 / year

https://plus.dataskeptic.com)