5hadowblad3 / Titan

Research artifact for Oakland (S&P) 2024, "Titan: Efficient Multi-target Directed Greybox Fuzzing"
45 stars 5 forks source link

Producer: 'LLVM11.0.0' Reader: 'LLVM 4.0.0' #1

Open vannussina opened 11 months ago

vannussina commented 11 months ago

Hello, is there any chance to see the source code of the precondInfer executable? I'm trying to use Titan for my own project, not the Magma suite and I keep getting this error. What exactly is producer and consumer here and how does precondInfer check the llvm version? A run of readelf -p .comment on my binary gives the following output:

String dump of section '.comment':  
    [     0]  GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0  
    [    2b]  clang version 4.0.0 (tags/RELEASE_400/final)

So it seems to use clang 4, that's why I don't get the error message. Is the GCC version a problem?

5hadowblad3 commented 11 months ago

Yep.

As mentioned in the README, the static analyzer of Titan is based on our previous work, Beacon(S&P'22). You can have more details by accessing its repo to achieve the LLVM version update.

If your upgrade works well, please create a pull request for updates. Thanks!

vannussina commented 11 months ago

Thanks! The source code provided in the Beacon repo helped.

CXWorks commented 7 months ago

@5hadowblad3 Can you provide any insights on how to support llvm 11 or higher versions? Or do you have plans to do so? The LLVM-4 is too old nowadays, thanks!

5hadowblad3 commented 7 months ago

@CXWorks We plan to do so, but it is not a high priority since many APIs changed.

One fundamental plan for updating the LLVM version is to update Beacon to the target LLVM version and then update the related algorithm for Titan.

As we would like to make these a series of work to become a more practical fuzzing framework, the update for Beacon is on the way and may be released this year. Meanwhile, we also plan to upgrade the LLVM for the recently undergoing projects and, eventually, upgrade the LLVM version in Titan for better integration.

If possible, your help is also deeply appreciated!

CXWorks commented 7 months ago

@5hadowblad3 Thanks for your quick reply. I understand the effort of refactoring across LLVM versions. Although I'm not familiar with static analysis, I'm willing to help refactor the fuzzer pass.