Facebook、Instagramを支えるPythonコードの静的解析ツール「Pysa」をOSSで公開:コードにおけるデータフローを解析し、セキュリティ問題を検出
Facebookは、Pythonコードのセキュリティやプライバシーの問題を検出するオープンソースの静的解析ツール「Pysa」の詳細を発表した。
Facebookは2020年8月7日(米国時間)、Pythonコードの静的解析ツール「Pysa」の詳細を発表した。
Pysaは、「Python static analyzer」を略した名称。Pythonコードのセキュリティやプライバシーの問題を検出、防止するために、オープンソースソフトウェア(OSS)として開発された。
Pysaの使いどころ
PysaはFacebookにおいて、Pythonコードが特定の社内フレームワーク(技術プライバシーポリシーに基づいて、ユーザーデータへのアクセスや、ユーザーデータの開示を防ぐ)を適切に使用しているかどうかのチェックや、Webアプリケーションの一般的なセキュリティ問題(XSSやSQLインジェクションのような)の検出などを通じて、幅広い問題検出に役立っているという。
Facebookは、同社の大規模Pythonアプリケーションのセキュリティ対策にPysaが貢献している事例の最たるものとして、同社の「Instagram」サービスを支えるサーバのコードベース開発における変更の自動解析を挙げている。
FacebookはPysaを、セキュリティ問題の検出に必要な定義の多くとともに、OSSとして公開した。同社は自社サービスでOSSのPythonサーバフレームワーク(「Django」「Tornado」など)を使っており、こうしたフレームワークを使っているプロジェクトにPysaを適用すれば、初回実行時からセキュリティ問題を検出し始めることができる。Facebookがカバーしていないフレームワークを対象にする場合は、データがサーバに入る場所をPysaに知らせる数行の構成コードを追加するだけで、Pysaを使用できるという。
なおFacebookは、Pysaを使って、OSSのPythonプロジェクトにおけるセキュリティ問題の検出、開示も行っており、実績例として「CVE-2019-19775」を挙げている。
Pysaの仕組み
Facebookは、PHPと互換性のあるOSSのプログラミング言語「Hack」のコードの静的解析ツール「Zoncolan」を開発し、Hackコードのセキュリティ問題の防止に役立ててきた。このZoncolanの成功にヒントを得て開発したというPysaは、Zoncolanと同じアルゴリズムを使って静的解析を行い、Zoncolanと一部のコードを共有している。
Pysaは、Facebookが開発したOSSのPython型チェッカ「Pyre」上に構築されており、Pythonコードにおけるデータフローの解析に使われている。「セキュリティ問題やプライバシー問題の多くは、不適切な場所へのデータの流入としてモデル化できるため、データフロー解析は有益だ」と同社は説明している。
Pysaを使う際にユーザーは「ソース」と「シンク」を定義する。ソースは、重要なデータの起源を指す。シンクは、ソースからのデータが到達してはならない場所だ。
セキュリティアプリケーションでは、最も一般的な種類のソースは、ユーザーが制御するデータがアプリケーションに入る場所だ。DjangoのHttpRequest.GETディクショナリがその一例だ。シンクは多くの場合、はるかに多様だが、「eval」のようなコードを実行するAPIや、「os.open」のようなファイルシステムにアクセスするAPIを含むことができる。
Pysaは反復的に解析を行い、「どの関数がソースからのデータを返すか」「どの関数が、最終的にシンクに到達するパラメーターを持つか」を識別し、要約を作成する。ソースが最終的にシンクに接続することを発見すると、問題を報告する。このプロセスは、下図のようなツリー構造になる。
呼び出し間でのデータのフローをたどるインタープロシージャ解析には、関数呼び出しをその実装にマッピングできる必要があった。そのため、Facebookはコード内で利用可能な情報を全て利用しなければならなかった。その中には、オプションの静的型が含まれる(存在する場合)。この情報を理解するのに静的型チェッカであるPyreが使用される。PysaはPyreに大きく依存しており、両者はリポジトリを共有しているが、これらは用途が異なる別のツールだ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Microsoft、ソースコード解析ツール「Application Inspector」をOSSとして公開
Microsoftは、オープンソースでクロスプラットフォームのソースコード解析ツール「Microsoft Application Inspector」を公開した。多種多様なプログラミング言語で記述されたコンポーネントを使用した数百万行のコードを解析できる。コードの時間的な変化はもちろん、特に「危険な」部分がどこなのかを特定できる。 - C++やPython向けのコード可視化ツール「Sourcetrail」がオープンソースに
Coati Softwareは、クロスプラットフォームのインタラクティブなコード可視化ツール「Sourcetrail」を、無料のオープンソースソフトウェアとして公開した。CやC++、Java、Pythonなどに対応している。コードを読むことにほとんどの時間を費やす開発者に役立つツールだ。 - ソニーの開発者が立ち上げた企業、Rocroが世界で売る開発者向けツールSaaSとは
継続的インテグレーション(Continuous Integration)は円環的で、「ろくろ」に似ているから「Rocro株式会社」。ソニーグループのエンジニアたちがソフトウェア開発者向けツールサービスを開発・販売する新会社を設立し、米国のスタートアップ企業や日本の先端企業への売り込みを始めた。どういうサービスを提供しようとしているのか。