Atheris、Pythonコードテストツールキット

Googleが発表 最近のリリース アテリスプロジェクト、の開発です オープンソースツールのセット 特化した Pythonコードのファジーテスト用 およびC / C ++で記述されたCPythonの拡張機能。

プロジェクト libFuzzerベースのエンジンを使用 また、アドレスサニタイザーおよび未定義の動作サニタイザーツールと組み合わせて使用​​して、追加のエラーを検出できます。 コードはApache2.0ライセンスの下で開かれています。

GoogleAtherisについて

Google Atherisの言葉を借りれば、これはPythonコードとネイティブ拡張機能のエラーを自動的に見つけるために使用できるツールキットです。 Atherisは「カバレッジ駆動型」のファザーです。つまり、Atherisは、プログラムの実行を監視しながら、プログラムへのさまざまな入力を繰り返しテストし、興味深いパスを見つけようとします。

Python2.7およびPython3.3以降のコードレビューがサポートされています、ただし、完全なガイド付きカバレッジの場合は、Python 3.8および3.9ブランチを使用することをお勧めします。これらのブランチは、opcodeによるopcode統計をサポートするようになりました。

過程の中で、 Atherisは、入力データの可能な組み合わせをリストし、レポートを生成します 検出されたすべての障害と検出されなかった例外。

たとえば、AtherisでYAML解析ライブラリをチェックすると、整数値の代わりに「-_」を指定したり、キーの代わりにリストを使用したりするなど、一部のYAML構造が予期しない例外をスローすることがわかりました。 YAMLErrors標準エラー。

ファズテストは、プログラミングエラーを発見するためのよく知られた手法です。 これらの検出可能なエラーの多くは、セキュリティに深刻な影響を及ぼします。 この手法を使用すると、Googleは何千ものセキュリティの脆弱性やその他のバグを発見しました。 ファズは伝統的にCやC ++などのネイティブ言語で使用されますが、昨年、新しいPythonファズエンジンを作成しました。 本日、オープンソースとしてAtherisファズエンジンをリリースしました。

アテリス 動作の違いを識別するためにも使用できます 同一のタスクを対象とするライブラリの数。 たとえば、国際化されたドメイン名をデコードするタスクを実行するPythonパッケージ「idna」とライブラリ「libidn2」の要約チェックでは、必ずしも同じ結果が得られるとは限らないことがわかりました。

Atherisの最適な用途の2つは、差動ディフューザーです。 これらは、同じことを行うことを目的としたXNUMXつのライブラリの動作の違いを探すファザーです。 Atherisにバンドルされているファザーの例のXNUMXつは、Pythonの「idna」パッケージをCの「libidnXNUMX」パッケージと比較するためにこれを正確に実行します。

特に、ドメインがUnicodeシーケンスを使用している場合、「idna」と「libidn2」は国際化されたドメイン名を異なるホストに変換しました。

一般に、Atherisは、「正しい」動作を表現する方法、または少なくともどの動作が間違いなく正しくないかを表現する方法がある限り、純粋なPythonコードで役立ちます。 これは、ライブラリの出力の精度を評価するファザーのカスタムコードのように複雑な場合もあれば、予期しない例外が発生していないことを確認する場合のように単純な場合もあります。

それを考慮に入れることが重要です ファジーテストは、入力データのあらゆる種類のランダムな組み合わせのストリームを生成します。 実際のデータ(たとえば、ランダムなタグパラメータを持つhtmlページ、異常な見出しを持つファイルまたは画像など)に近づけ、プロセスで発生する可能性のあるグリッチを修正します。

シーケンスの結果が例外になるか、期待される応答と一致しない場合、この動作はバグまたは脆弱性を示している可能性があります。

最後に、前述のように Atherisは、バージョン2.7および3.3以降のPythonコードで動作します。 ただし、3.8以降およびCPython用に作成されたネイティブ拡張機能を使用することを強くお勧めします。

Windowsはまだサポートされているオペレーティングシステムに含まれていませんしたがって、このエンジンは、現時点ではLinuxおよびMac OSXユーザーのみが対象です。

これらのプラットフォームで使用するには、開発者は現在のバージョンのClangコンパイラフロントエンドをインストールする必要があります。

あなたがそれについてもっと知りたいなら、元のメモを確認できます 次のリンク。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。