コピー&ペーストによる脆弱ソースコード
インドのハイテクメディアであるFossbytesによると人気の高いQ&Aサイトである「Stack Overflow」に掲載されているサンプルコードをコピー&ペーストすることが原因で脆弱な状態のソースコードを含んだソフトウェアがGitHubに多数存在していると伝えました。
研究者のグループが発表したレポートによると、「Stack Overflow」への1,325件の投稿から72,000を超えるC++のソースコードの断片を分析した結果、
29種類の69個の脆弱な断片を発見したそうです。そして、その脆弱なコードがそのまま2,589ものプロジェクトで再利用されているそうです。
Stack Overflowの対応
これを受けて、「Stack Overflow」もQ&Aに掲載されているサンプルコードは脆弱性を含んでいる可能性があることを認識するとともに、ソースコードの内容を理解してから活用することを推奨しています。
また、上位8つの脆弱性として、下記のものをあげています。
CWE(*1) | 内 容 |
CWE-754 | 異常条件または例外条件の不適切なチェック |
CWE-20 | 不適切な入力値検証 |
CWE-252 | 返り値チェックの未実施 |
CWE-477 | 非推奨または廃止された機能の使用 |
CWE-789 | 制御されていないメモリ割り当て |
CWE-158 | ヌルバイトまたはヌル文字の不適切な処理 |
CWE-134 | 外部制御文字の使用 |
CWE-476 | ヌルポインタ参照 |
このように安易にインターネット上にソースコードをコピー&ペーストすることで、脆弱性を含んだソフトウェアをリリースしてしまうことになります。
また、「Stack Overflow」で最もコピー&ペーストされたJavaのコードに不具合があることも指摘されています。そのコードは、バイト数を人間が読みやすい形に変換するためのコードですが、そのコードがGitHubの6,000以上のプロジェクトに含まれていることが判明しています。
コピー&ペーストは内容精査と理解が原則
このように多くのコードをコピー&ペーストすることで、開発効率を上げようとする開発者もいるようですが、安易にコピー&ペーストすることで、バグや脆弱性が拡散していきますので、せめてコピー&ペーストする場合は、書かれているコードの内容を精査し理解したうえで、活用してもらいたいものです。
脆弱性チェックをサポートする拡張機能に期待
また、コードのセキュリティを判断するためのChromeの拡張機能を研究者たちは開発しています。この拡張機能のインストール時にコピーされたコードをCWEのデータベースで照合し、既知の問題がある場合は、開発者に警告します。まもなく、この拡張機能はリリースされるようなので、楽しみにお待ちください。
(*2)本文中記載の会社名、商品名、ロゴは各社の商標、または登録商標です。