Facebookは「Pysa」と呼ばれるオープンソースの静的アナライザーを導入しました»(Python Static Analyzer)これは Pythonコードの潜在的な脆弱性を特定するように設計されています。
ピサ データフロー分析を提供します コード実行の結果として、 多くの潜在的な脆弱性と問題を特定できます 表示されるべきではない場所でのデータの使用に関連するプライバシーの保護。
たとえば、Pysa 通話での生の外部データの使用を追跡できます ファイル操作およびSQL構造で外部プログラムを実行します。
今日は、Pythonコードのセキュリティとプライバシーの問題を検出して防止するために構築したオープンソースの静的分析ツールであるPysaの詳細を共有します。 昨年、100億行を超えるハッキングコードの分析に役立ち、エンジニアが数千の潜在的なセキュリティ問題を防ぐのに役立つ静的分析ツールであるZoncolanを作成した方法を共有しました。 その成功により、Python StaticAnalyzerの頭字語であるPysaを開発することになりました。
Pysaは同じアルゴリズムを使用します 静的分析を実行し、コードを共有する Zoncolan。 ゾンコランのように、ピサ プログラムを介したデータフローを追跡します。
ユーザーは、ソース(重要なデータが発生する場所)とシンク(ソースデータが終了してはならない場所)を定義します。
セキュリティアプリケーションの場合、最も一般的なタイプのソースは、Django辞書など、ユーザーが制御するデータがアプリケーションに入力される場所です。
レシーバーははるかに多様である傾向がありますが、次のようなコードを実行するAPIを含めることができます。 eval
、またはファイルシステムにアクセスするAPIなどos.open
.
Pysaは、抽象を構築するために分析の反復ラウンドを実行します どの関数がソースからデータを返し、どの関数が最終的にシンクにヒットするパラメーターを持っているかを判別するため。 Pysaは、ソースが最終的にシンクに接続していることを検出すると、問題を報告します。
アナライザー作業 つまり、受信データソースを特定することです。 元のデータを使用してはならない危険な呼び出し。
Pysaは、一連の関数呼び出しを介したデータの通過を監視し、元のデータをコード内の潜在的に危険な場所に関連付けます。
自社製品にはDjangoやTornadoなどのオープンソースのPythonサーバーフレームワークを使用しているため、Pysaは、最初の実行からこれらのフレームワークを使用するプロジェクトでセキュリティの問題に遭遇し始める可能性があります。 まだカバーしていないフレームワークにPysaを使用することは、データがサーバーに着信する場所をPysaに通知するために、いくつかの構成行を追加するのと同じくらい簡単です。
Pysaによって特定された一般的な脆弱性は、サムネイルを表示するときに汚れた外部パラメータを渡すことによって引き起こされる、Zulipメッセージングプラットフォームのオープンリダイレクトの問題(CVE-2019-19775)です。
Pysaのデータフロー追跡機能を使用して、追加のフレームの使用を検証し、ユーザーデータ使用ポリシーへの準拠を判断できます。
例えば 追加の構成のないPysaを使用して、フレームワークを使用してプロジェクトを検証できます ジャンゴとトルネード。 Pysaは、SQL置換やクロスサイトスクリプティング(XSS)など、Webアプリケーションの一般的な脆弱性を特定することもできます。
Facebookでは、アナライザーを使用してInstagramサービスのコードを検証します。 2020年の第44四半期に、Pysaは、FacebookエンジニアがInstagramのサーバー側コードベースで見つけたすべての問題のXNUMX%を特定するのに役立ちました。
その過程で合計330の問題が特定されました Pysaを使用した自動変更検証のうち、49(15%)が重要であると評価され、131(40%)は危険ではありませんでした。 150のケース(45%)で、問題は誤検知に起因していました。
新しいパーサーは、Pyreタイプ検証ツールキットのアドオンとして設計されており、リポジトリに配置されます。 コードはMITライセンスの下でリリースされています。
最後に あなたがそれについてもっと知りたいのなら、 詳細は元の投稿で確認できます。 リンクはこちらです。