オープンソースソフトウェアへのサプライチェーン攻撃とHypocrite Commits論文について改めて考える
コンピューターセキュリティサミット2021(CSS2021) の「Hypocrite Commits論文から考える サイバーセキュリティ研究倫理」というセッションを聴講しました。
- 今年の4月、米ミネソタ大学の研究グループが研究目的で脆弱性を意図的に含んだパッチを Linuxカーネルコミュニティへ投稿していたことが判明し話題になりました。また先日、コンピューターセキュリティサミット2021(CSS2021) の「Hypocrite Commits論文から考える サイバーセキュリティ研究倫理」というセッションを聴講しました。セッションの内容はアカデミックの観点から論文の内容や研究の倫理面についての議論が主立っていましたが 聴講後、あらためてこの事件について考察をしてみようと考えました。
- まず大前提として、どのようなソフトウェアでも脆弱性が存在する可能性があります、これはオープンソースであろうとなかろうと、どのような開発モデルを採用してもコーディングの間違いは起こりえます、またコードを書いたときには発見されていなかった、未知の手法でソフトウェアへの攻撃手法が見つかる可能性があります。ソースコードがオープンであるかどうかは、セキュリティ上の無謬性を示すわけではありませんし、プロプライエタリなソフトウェアでも同様です。
- しかしながら活発なコミュニティで、十分なピアレビュープロセスを経て、開発、メンテナンスがされているオープンソースソフトウェアでは提出される変更(コミュニティによって投稿方法はパッチやPull Request/Merge Requestなど異なる方法が用いられます )は、衆目に晒され、メンテナのレビューを経てからマージされるため、不注意や技量不足によって入り込んだバグや脆弱性はほとんどがすぐに修正されるか、ピアレビューのプロセスによって弾かれると信じられています。
- 当該論文の衝撃的な部分は、意図して脆弱性を、活発でピアレビューの行われているオープンソースソフトウェア(Linuxカーネル)に混入させることができる可能性を示したことです。今回の事件ではコミュニティにより調査、修正、報告が行われましたが、この世にあるすべてのソフトウェアが活発にメンテナンスされているわけではなく、悪意ある攻撃者は広く使われているにも関わらずコードの管理者が注意を払っていないリポジトリに対して、何らかの方法でマルウェアや脆弱性を忍ばせることができるかもしれません。パッチ投稿者の身元確認を行うのも現実的ではありません。
- 最近では今年、10月22日に UAParser.jsという npm のライブラリが攻撃を受けました。https://github.com/faisalman/ua-parser-js/issues/536
- この攻撃では npm のアカウントの乗っ取りを攻撃手法としていて、目新しい攻撃手法ではありませんが、このようなサプライチェーンのどこかに悪意あるコードを忍ばせる攻撃は近年明らかに増加しているように見えます。機能拡張やバグ修正を装って、アップストリームのコードに脆弱性を巧妙に埋め込んだ場合、発覚はさらに遅れるでしょう。
まとめ
- 報じられた事件は、明るみに出ているため攻撃手法や原因なども分析されますが、表面化していないケースも考えられます、そのためこのような攻撃はすでに広く行われている可能性が十分にあると思われます。
その他参考情報
- 「Linux Foundationのコミュニティは、「サイバーセキュリティに関する米国大統領令で要求されるセキュリティ対策」をどのように実現していくのか」https://www.linuxfoundation.jp/blog/2021/06/how-lf-communities-enable-security-measures-required-by-the-us-executive-order-on-cybersecurity/
- 当社ブログ 「1 年で 650% も増加した OSS へのサプライチェーン攻撃に対応するには?」