吉田顧問2019年12月

安易な「コピー&ペースト」禁止!(吉田行男 氏)

OSS

吉田 行男

「Stack Overflow」のQ&Aからコピー&ペーストされるサンプルコードに脆弱性が含まれ、そのまま他のプロジェクトで再利用されるケースが多いことが判明しました。1,325件の投稿から72,000を超えるC++のソースコードを分析した結果、29種類の69個の脆弱な断片が見つかり、そのうち2,589のプロジェクトで再利用されていることが発覚しました。開発者に対して、コピー&ペーストする際はコード内容を十分に理解し、脆弱性チェックを行う拡張機能の利用も推奨されています。

コピー&ペーストによる脆弱ソースコード

インドのハイテクメディアである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 ヌルポインタ参照
(*1)CWE: Common Weakness Enumerationの略で、ソフトウェアにおけるセキュリティ上の弱点の種類を識別するための共通の基準

このように安易にインターネット上にソースコードをコピー&ペーストすることで、脆弱性を含んだソフトウェアをリリースしてしまうことになります。

また、「Stack Overflow」で最もコピー&ペーストされたJavaのコードに不具合があることも指摘されています。そのコードは、バイト数を人間が読みやすい形に変換するためのコードですが、そのコードがGitHubの6,000以上のプロジェクトに含まれていることが判明しています。

コピー&ペーストは内容精査と理解が原則

このように多くのコードをコピー&ペーストすることで、開発効率を上げようとする開発者もいるようですが、安易にコピー&ペーストすることで、バグや脆弱性が拡散していきますので、せめてコピー&ペーストする場合は、書かれているコードの内容を精査し理解したうえで、活用してもらいたいものです。

脆弱性チェックをサポートする拡張機能に期待

また、コードのセキュリティを判断するためのChromeの拡張機能を研究者たちは開発しています。この拡張機能のインストール時にコピーされたコードをCWEのデータベースで照合し、既知の問題がある場合は、開発者に警告します。まもなく、この拡張機能はリリースされるようなので、楽しみにお待ちください。

(*2)本文中記載の会社名、商品名、ロゴは各社の商標、または登録商標です。
<< 【最新】オープンソースDBの企業活用(吉田行男 氏)どんなOSSがよく使われているのか?(吉田行男 氏) >>

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解