問題タブ [libfuzzer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
382 参照

go - libfuzzer を使用した Go アプリケーションのファジング: 間違ったカバレッジ

私は論文を書いていますが、現在のセットアップに関する意見をいただければ幸いです。libfuzzer を使用してターゲットの Go アプリケーションをファジングしたいので、次のようにしました。

テストする go 関数を呼び出すメイン パッケージを作成しました。コード:

llvm-goアプリケーションを実際に共有ライブラリとしてビルドするには、メインパッケージが必要です。ここで二重の抽象化を行う理由は、ビルド パイプラインを go-fuzz と互換性を持たせたいからです。go-fuzz は、"Fuzz" 関数名をファジング エントリ ポイントとして使用します。私のセットアップでは、libfuzzer を利用するために必要なコードをラップするだけです。

次に、アプリケーションをコンパイルしますllvm-go

これで、Go 共有ライブラリを計測する方法が 2 つあります。動的にロードするか、バイナリに静的にリンクするかです。静的にリンクされたコードを使用して問題を説明します。そのために、Go 共有ライブラリを計測するファジング スタブを作成しました。

次に、次のようにコンパイルしました。

ここで、コードを実行すると、次の 2 つの問題が発生します。

カバレッジと機能は増加していないようで、メモリ要件は実行ごとに増加します。ファザーの実行に環境変数を追加することで、別の SO 投稿のおかげでメモリの増加を修正できました。ASAN_OPTIONS=quarantine_size_mb=20 ./fuzz-target -timeout=12

ただし、おそらく主な問題は、実際のターゲットが 2 つのレベルの抽象化の下に「埋もれている」ことです: LLVMFuzzerTestOneInput --calls-> main.go を介した共有 Go ライブラリ。 --> ファジング関数 --calls--> ターゲット関数。ただし、これらの各関数は、データを変更せずに直接次のレイヤーに渡すだけであることに注意してください。これが正しく機能していることを確認するには、どのような手順を実行できますか? 私は何か間違ったことをしていますか?

0 投票する
1 に答える
314 参照

clang - libfuzzers カスタムミューテーター API の使用方法は?

Libfuzzer は、カスタム ミューテーターを開発するための 2 つの API を提供します。

これらの API はどのように使用されますか? ファザーは決定論的である必要があります。カスタムミューテーターでそれを確認するにはどうすればよいですか?

0 投票する
1 に答える
47 参照

c++ - 外部オブジェクト ファイルで名前が変更されたシンボルを呼び出す方法は?

main()関数を外部に公開するだけの LLVM libFuzzer を使用して、特定のコードをファジングしようとしています。ターゲット コードのソースにアクセスできますが、変更できません。

オブジェクト ファイルを直接インクルードしようとすると、mainによって提供される定義と競合します-fsanitize=fuzzermainオブジェクト ファイル内のシンボルの名前を変更することで、これを解決できるかもしれないと考えました。

次に、ハーネス コードで次のように宣言します。

そして、リンク行に含めながら、stub_main()の代わりに呼び出します。ただし、これは機能していないようで、リンカーは への参照を見つけることができません。main()main.stubstub_main(int, char**)

main独自の を提供する別のコードからこの関数を呼び出すにはどうすればよいmain()ですか?

0 投票する
0 に答える
17 参照

c - Autotools ライブラリの libfuzzer を作成する

Autotools Mythbusterをビルド システムとして使用する Linux ライブラリがあります。Makefile.amライブラリのは次のとおりです。

このライブラリの libfuzzer を作成したいので、次のファイルに fuzzer の単純なエントリ ポイント ポイントを作成しましたsampletest.c

そしてMakefile.am、私のlibfuzzerを構築するために次のように書きました

しかし、先に進んで と入力makeすると、次のエラーが表示されます。

gcc: error: unrecognized argument to '-fsanitize=' option: 'fuzzer'

に「ファザー」部分を含めない場合、次のように表示Makefile.amされます。

(.text+0x24): undefined reference to メイン」

私は何をすべきか ?