安全でないコーディング方法を開発者に警告する警告を暗号ライブラリに組み込むことは、アプリケーションのセキュリティを向上させる効果的な方法であることがわかりました。
今週開催されたUSENIX Symposium on Usable Privacy and Security (SOUPS) 2018において、ドイツの複数の大学の研究者グループがこの件に関する調査結果を報告した。
カンファレンスで発表された論文「開発者にもセキュリティ警告が必要: 統合セキュリティアドバイスが暗号化 API の誤用に与える影響」では、Peter Leo Gorski、Luigi Lo Iacono、Dominik Wermke、Christian Stransky、Sebastian Moeller、Yasemin Acar、および Sascha Fahl が、実装アドバイスを提供するために Python 暗号ライブラリをどのように変更し、より安全なコードを実現したかについて説明しています。
介入主義的なシステムはしばしば人々を苛立たせます。Microsoft Office Assistant(別名Clippy)への反感を例に挙げましょう。しかし、少なくともこの文脈においては、求められていないアドバイスは開発者を自らの手から救う可能性があります。
科学者たちは、多くのソフトウェアの脆弱性は、安全なネットワーク接続、モバイル アプリの権限、暗号化 API に関連するセキュリティ API を誤用する開発者に起因すると考えています。
セキュリティライブラリを簡素化したり、IDE(統合開発環境)プラグインによる支援を追加したりするといった代替アプローチ(プログラミングインターフェースの変更と複数のIDE用プラグインの継続的な開発が必要)の代わりに、研究者らはPyCryptoライブラリを修正して問題を検出し、ターミナルに修復アドバイスを表示するようにした。
研究参加者にとって、これは次のように見えるでしょう。
/!\ 警告 弱い暗号化アルゴリズムRC4(別名ARC4またはARCFOUR)を使用しています。ファイル: SecurityAdviceExample.py 行: 14 パス: /filepath 関数: arc4_example コード: cipher = ARC4.new(tempkey) ARC4を使用すると、処理されたデータの機密性が危険にさらされ、データ漏洩につながる可能性があります。(AESを適切に実装する方法を示すサンプルコードが続きます。)
PyCryptoの修正版は、Crypto.Cipher.ARC2.new()
安全でないARC2アルゴリズムに依存する などの脆弱な暗号オブジェクトをインスタンス化するAPI呼び出しにフックします。このようなオブジェクトが作成されると、修正されたライブラリは適切な警告を表示するためのアドバイスメソッドを呼び出します。
「セキュリティアドバイスは可能な限り、原因となっているセキュリティ問題を修正するためのコード変更を提案します」と研究者らは論文で説明している。「このアプローチにより、コードのセキュリティが大幅に向上することが分かりました。セキュリティアドバイスを受けた参加者の73%が、安全でないコードを修正しました。」
質の悪いドキュメント、複雑なAPI、間違ったアドバイスに悩まされているJavaのセキュリティ
続きを読む
科学者たちは、キー生成(サイズとランダム性)、キーの保存(キーが実際に暗号化されているか、提供されたパスワードから派生したものか)、暗号アルゴリズムの選択などの関連指標をチェックしてセキュリティを判断しました。
調査の規模は大きくなく、有効な参加者はわずか 53 人でしたが、これは調査への参加を促すメールによる招待が約 39,000 件あり、割り当てられたコーディング タスクに取り組み始めたのは 177 人でした。
研究者が直面した課題は、テキストのみの端末の制約内で情報を効果的に提示するだけでなく、リスクを十分に詳細に説明し、警告をトリガーしたソースコード内で文脈的に適切な説明を提供し、問題を解決するための有意義なオプションを提示することでした。
研究者らは、API 統合セキュリティ アドバイスはコード セキュリティに大きな影響を与えると結論付けていますが、状況に応じたアドバイスを提供することはかなり複雑であり、今後の調査の価値があることも認めています。®