|
| 1 | + |
| 2 | +# |
| 3 | + |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +TABBY is a static code analysis tool tailored for the Java language, designed to swiftly uncover a multitude of vulnerabilities specific to Java. |
| 8 | + |
| 9 | +TABBY leverages the [Soot](https://github.com/soot-oss/soot) static analysis framework as its semantic extraction engine to convert JAR/WAR/CLASS files into Code Property Graphs (CPGs). It then employs the [Neo4j](https://neo4j.com/) graph database to store these generated CPGs. |
| 10 | + |
| 11 | +Furthermore, by extending Neo4j's [path traversal logic](https://github.com/wh1t3p1g/tabby-path-finder), TABBY can perform complex taint analysis and output potential vulnerability call chains with straightforward Cypher queries. |
| 12 | + |
| 13 | +## #1 Usage |
| 14 | + |
| 15 | +To use Tabby, the following environment requirements must be met: |
| 16 | + |
| 17 | +- JAVA Environment |
| 18 | +- An available Neo4j graph database |
| 19 | +- Neo4j Browser or another visualization tool for Neo4j, or the [Tabby IDEA Plugin](https://github.com/wh1t3p1g/tabby-intellij-plugin) |
| 20 | + |
| 21 | +For detailed instructions on how to use Tabby, please refer to the [Tabby Quick Start Guide](https://www.yuque.com/wh1t3p1g/tp0c1t/lf12lg69ngh47akx). |
| 22 | + |
| 23 | +## #2 Target Audience for Tabby |
| 24 | + |
| 25 | +The development of Tabby was initiated with the aim of enhancing the efficiency of code audits and minimizing the workload associated with manual searches. |
| 26 | + |
| 27 | +With the Code Property Graphs generated by Tabby , the following scenarios can be addressed: |
| 28 | + |
| 29 | +- Identifying deserialization exploitation chains within target projects, supporting a wide range of serialization mechanisms, including Java's native serialization, Hessian, XStream, and others. |
| 30 | +- Uncovering common web vulnerabilities within target projects, capable of analyzing WAR/JAR/FATJAR/JSP/CLASS files. |
| 31 | +- Searching for functions or classes that meet specific criteria, such as static methods that invoke dangerous functions. |
| 32 | + |
| 33 | +By leveraging the Code Property Graphs generated by Tabby, users can conduct dynamic, custom vulnerability mining and exploitation chain analysis within the Neo4j graph database. |
| 34 | + |
| 35 | +## #3 Achievements |
| 36 | + |
| 37 | +- [Existing Exploit Chain Coverage](https://github.com/wh1t3p1g/tabby/wiki/%E7%8E%B0%E6%9C%89%E5%88%A9%E7%94%A8%E9%93%BE%E8%A6%86%E7%9B%96) |
| 38 | +- Papers && Slides |
| 39 | + - KCon 2022 [Tabby: Java Code Review Like A Pro](https://github.com/knownsec/KCon/blob/master/2022/tabby%20java%20code%20review%20like%20a%20pro%E3%80%90KCon2022%E3%80%91.pdf) |
| 40 | + - KCon Topic Supplement [Automated Vulnerability Mining Practice Based on Code Property Graphs](https://blog.0kami.cn/blog/2023/%E5%9F%BA%E4%BA%8E%E4%BB%A3%E7%A0%81%E5%B1%9E%E6%80%A7%E5%9B%BE%E7%9A%84%E8%87%AA%E5%8A%A8%E5%8C%96%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98%E5%AE%9E%E8%B7%B5/) |
| 41 | + - DSN 2023 [Tabby: Automated Gadget Chain Detection for Java Deserialization Vulnerabilities](https://ieeexplore.ieee.org/document/10202660) |
| 42 | + - BlackHat EU 2024 [Tabby: Simplifying the Art of Java Vulnerability Hunting](https://github.com/wh1t3p1g/tabby/blob/v2/papers/Tabby%20Simplifying%20the%20Art%20of%20Java%20Vulnerability%20Hunting.pdf) |
| 43 | + - ICASSP 2025 [VulKiller: Java Web Vulnerability Detection with Code Property Graph and Large Language Models]() |
| 44 | +- CVEs |
| 45 | + - CVE-2021-21346 |
| 46 | + - CVE-2021-21351 |
| 47 | + - CVE-2021-39147 |
| 48 | + - CVE-2021-39148 |
| 49 | + - CVE-2021-39152 m0d9 |
| 50 | + - CVE-2021-43297 |
| 51 | + - CVE-2022-39198 yemoli |
| 52 | + - CVE-2023-23638 |
| 53 | + |
| 54 | +## #4 Frequently Asked Questions |
| 55 | + |
| 56 | +- [FAQ](https://www.yuque.com/wh1t3p1g/tp0c1t/ueduxuz6fmxhpoyb) |
| 57 | + |
| 58 | +If you encounter any other issues while using Tabby, feel free to ask in the [discussions](https://github.com/wh1t3p1g/tabby/discussions)! |
| 59 | + |
| 60 | +If you discover any bugs in the implementation of Tabby, please submit the relevant error details in the [issues](https://github.com/wh1t3p1g/tabby-path-finder/issues) section. |
| 61 | + |
| 62 | +## #5 Motivation & Acknowledgments |
| 63 | + |
| 64 | +Initially, during the process of exploit chain analysis, it became clear that this process could be automated (whether for Java or PHP). However, there was a noticeable lack of open-source tools in this area within China. Existing GI tools did not perform well in practical detection scenarios. Based on my understanding of program analysis, I developed the Tabby tool. My vision for Tabby extends beyond just exploit chain mining; I also hope that it can be utilized from a vulnerability analysis perspective, leveraging its Code Property Graphs for deeper insights. It is my wish that Tabby introduces a new working model for Java security researchers. |
| 65 | + |
| 66 | +Of course, the current version of Tabby still has many areas for improvement, and I welcome developers with experience in program analysis to join in the development of Tabby. If you have any questions, feel free to contact me directly! |
| 67 | + |
| 68 | +If Tabby has facilitated your work, please do not hesitate to give it a star ⭐! |
| 69 | + |
| 70 | +If you discover vulnerabilities using Tabby, we warmly welcome you to share related success stories. |
| 71 | + |
| 72 | +If you are able to contribute to its development, let's engage in discussions, or submit Pull Requests or Issues directly. |
| 73 | + |
| 74 | +- [soot](https://github.com/soot-oss/soot) |
| 75 | +- [gadgetinspector](https://github.com/JackOfMostTrades/gadgetinspector) |
| 76 | +- [ysoserial](https://github.com/frohoff/ysoserial) && [marshalsec](https://github.com/mbechler/marshalsec) |
0 commit comments