SE_BOKUのまとめノート的ブログ

SE_BOKUが知ってること・勉強したこと・考えたことetc

ツールやライブラリの安全性について調べて報告してくれとの依頼を乗り切る

f:id:arakan_no_boku:20190509011608j:plain

目次

ツールやライブラリの安全性についての調査依頼は面倒だ

たまに「オープンソースの〇〇というツールが良いらしいけど、会社で使っても安全かを確認しといてくれ」と頼まれることがあります。

でも。

頼んできた人がどうなっていたら「安全」と判断してよいのかの基準を示してくれることは、ほぼ100%ありません。

適当にやってもとがめられたりはしませんが、万が一、それを使って問題がおきたら責任を押し付けられるリスクがあるので、あまりいい加減にもできない。

かといって、それに時間をかけてたら「余計なことやってないで、自分の仕事をちゃんとやれ」とか言われて、ストレスをためないといけなくなる。

そんなこんなで面倒です。

そんな面倒な依頼を乗り切る方法

そんな面倒な依頼を乗り切る方法を、経験もふまえてまとめてみました。

報告する相手と「安全と判断する基準」を合意する

最大の問題は「安全の基準が人によって違うこと」なわけです。

だから。

後に憂いを残さないために最も大事なこと。

それは基準をあわせておくことです。

具体的には、報告する相手と「安全と判断する基準」を合意することになります。

それも口頭ではなく文書で。

自分の場合は、メールを使います。

例えば、こんな項目をならべて、この基準をを満たしていれば「安全」と判断しますよと送信して、返信とあわせて保存しておくわけです。

例えば、こんな項目です。

  • 少なくともリリース後2年以上の稼働実績がある。
  • 開発元がメジャーまたはメジャーなディストリビューションの採用実績がある。
  • 現在も開発が継続していて、定期的にバージョンアップされている。
  • 少なくとも、5年間は開発中止になるリスクを考えなくてよさそう
  • 致命的な脆弱性の報告がないか、修正されている
  • マルウエアなどによる障害の報告がないか、問題が完全に解決済である。
  • ホームページ・ダウンロードサイトが安全である
  • 開発責任者および開発チームメンバーの身元がはっきりしている。
  • 開発元がセキュリティ的にリスクがあると言われている国ではない。

ちょっと面倒ですが、身を守る術みたいなもんですね。

でも、これができれば半分くらいOKみたいなもんです。

もっとも、実際は安全かどうかだけではなくて、機能の評価をして、適用しようとしている局面で役にたつかという判断も頼まれたりすることもありますが、そこは今回ははしょってます。 

第一段階の確認

あとは確認の方法です。

先にお断りしておきますが「完璧な調査の方法」を述べるつもりはありません。

自分はセキュリティの専門家でもないですし。

述べるのは、あくまで「他の仕事と並行しながら、短い期間で、できるだけ説得力のある報告ができて、かつ、そこそこの安全性は担保できるであろう(笑)方法」です。

その点はご容赦くださいね。

さて。

確認の依頼が来るということは、名前がわかっているということを前提にします。 

まずは、それをキーワードにして情報を探して、第一段階の確認をします。

Google検索をするわけですが、やみくもにやっても効率が悪いです。

自分は、以下のような順番でするようにしてます。

  1. Wikipediaを見る。
  2. Google検索で対象と関連しそうなキーワード検索をしてみる。
  3. 英語版のStackOverflow等でのコメントを探す。
  4. 脆弱性データベースで検索してみる
  5. マルウエア情報データベースで検索してみる

ポイントは、この段階で「対象ソフト・ライブラリのホームページやダウンロードサイト」を安易には開かないことですかね。

ソフト・ライブラリ自体が安全でも、ダウンロードサイトが汚染されているなんてことも珍しくはないというか、そちらの方が危なかったりしますので。

5項目ありますが、上記の1~3までは、実質的な調査で、4、5は念のため+調査報告に説得力をもたせる意味合いの項目になります。 

第一段階の確認:Wikipediaを見る 

日本語版と英語版を両方チェックするようにはした方がいいです。

日本語版だけだと漏れますし、後で網羅性の落ち度として問題にされるリスクが残りますので。

どちらかでひっかかれば、開発元・開発者とか、リリース年月とか採用されているLinuxディストリビューションとか、かなりの情報がWikipediaから取得できます。

方法は簡単で、例えば、「darktable」というソフトを調べる場合なら。

wikipedia darktable

 みたいにググればいいだけです。

正直言えば、この段階でメジャーなディストリビューションに採用とかされているのがわかれば、ほぼ大丈夫なわけですから、第一段階はここで終わって、第二段階のダウンロードサイト等の脅威の確認だけする・・ってな場合も当然あります。 

第一段階の確認:Google検索で関連しそうなキーワード検索 

画像加工なのか、テキスト処理なのかなど対象の機能と関連しそうなキーワードで検索するとともに、わざと「危険」とかのネガティブワードでも検索してみます。

これは評判や事例を調べたり、日本で利用しているユーザがいそうかどうかとかの巷の噂話集め程度のことでしかないですが、この手順は誰でも気づくものだけに、はしょると後で手抜き呼ばわりされかねませんから、きっちりやっときます。

特に、依頼者が気にしているキーワードは、必ず押さえておきましょう(笑)。 

第一段階の確認:英語版のStackOverflow等でのコメントを探す 

日本語版でない・・ところがミソです。

例えば、「darktable」というソフトについて確認するなら、

site:stackoverflow.com darktable

 みたいにするわけです。

残念ながら、日本版の方は情報が遅いのと、まだまだ利用者が少ないのか量も不足しています。

日本で一般的でないソフトの情報は、ほぼありません。

悲しいかな・・日本発の新技術は少ないですしね。

経験的に「stackoverflow.com 」で質問・回答がそれなりの件数あって、かつ、内容的に超ネガティブでない限りは、それなりに使われているんだなと判断することができると思っていて、意外に報告したときに説得力を持ちます。 

第一段階の確認:脆弱性データベースで検索してみる 

Google検索でも探せますが、自分はこちらは必ずチェックするようにはしてます。

jvndb.jvn.jp

引用すると。

JVNに掲載される脆弱性対策情報のほか、国内外問わず日々公開される脆弱性対策情報のデータベースです。

 となっていて、JVNというのは「JPCERT コーディネーションセンターと独立行政法人情報処理推進機構 (IPA)が共同で運用する脆弱性対策情報ポータルサイト」なので、日本語で読めるこの種の情報としては一番充実しているのでは・・と思ってます。

正直。

ここで引っ掛かることはないでしょうけど、一応、チェックしました・・という実績としては押さえておいたほうがいいかなと思ってます。 

第一段階の確認:マルウエア情報データベースで検索してみる 

上記のチェックに加えて、一応、トレンドマイクロの「脅威データベース」にひっかかってないよね?くらいのチェックするようにしてます。

www.trendmicro.com

これも、念のためレベルですけどね。

ダイレクトに調査するソフトもしくはライブラリの名前で何かがひっかかることはないはずなのですけど、「チェックした対象」として報告にいれとくと、なぜか若干説得力が増す(笑)ということもあります。 

第一段階の確認まとめ 

ここまでで、だいたい以下の確認はできている状態のはずです。

  • 少なくともリリース後2年以上の稼働実績がある。
  • 開発元がメジャーまたはメジャーなディストリビューションの採用実績がある。
  • 現在も開発が継続していて、定期的にバージョンアップされている。
  • 少なくとも、5年間は開発中止になるリスクを考えなくてよさそう
  • 致命的な脆弱性の報告がないか、修正されている
  • マルウエアなどによる障害の報告がないか、問題が完全に解決済である。 
第二段階の確認 

あとはこの3つです。

  • ホームページ・ダウンロードサイトが安全である
  • 開発責任者および開発チームメンバーの身元がはっきりしている。
  • 開発元がセキュリティ的にリスクがあると言われている国ではない。 
第二段階の確認:ホームページ・ダウンロードサイトが安全である 

ホームページとかダウンロードページが安全かどうかを客観的に証明するのは難しいのですが、今はとても便利なサイトがあります。 

securl.nu

ここでURLを入力して、チェックボタンを押すと、仮想ブラウジングで脅威の検出までやってくれて、OKかどうかを判定してくれます。

注意するとしたら、検査対象URLの取得方法です。

無防備に開いてしまってはだめです。

なので、例えばGoogleの検索結果から「リンクのアドレスをコピー」とかで取得するとかの工夫は必要です。

f:id:arakan_no_boku:20190511231959p:plain

第二段階の確認:開発責任者や開発元の身元の確認 

実のところ、一番面倒くさいのがこれです。

上記でホームページが安全なことを確認したら、そこを起点に開発者の名前や身元の情報を探します。

開発者や責任者・開発元会社の情報がなかったり、匿名情報だったりする場合は「グレー」だと考えたほうがいいと、自分では思ってます。

Contactのところとかに、写真付きで名前とプロフィールが載っていても、なりすましの可能性はゼロではないので、念のため、、その人の名前とかを使って地道に「エゴサーチ」をかけていきます。

しっかりかかわっている人だと、FacebookとかTwitterとかで話題にしてたり、あと、大学や企業に属している人だと、そちらの組織のほうの経歴欄で言及してたりとか。

そういう感じで双方向で一致していると、まあ、大丈夫だと判断してます。

正直、海外の人とかだとなかなか探しづらいってのはあります。。

英語ですらない場合もありますし。

でも、Google翻訳で頑張っていくしかない・・そういう作業です。  

 

こんなもんですかね。

ちょっとグダグダしてますが・・(笑)。

ではでは。