Vuls導入メモ IPAテクニカルウォッチ「脆弱性対策の効果的な進め方(ツール活用編)」

IPAテクニカルウォッチ「脆弱性対策の効果的な進め方(ツール活用編)」

https://www.ipa.go.jp/security/technicalwatch/20190221.html

2019年2月21日にIPAが脆弱性対策についての効果的なツール活用としてVulsが紹介されていた。

ちょうど自前でもVulsを導入したので、手順やつまづいた点を備忘録にブログにまとめておく。

 

vuls reportコマンドの正しいオプション指定

公式サイトの例ではrepotコマンドのオプション指定が下記のようになっているが、公式の例のようにcve情報をsqlite3で構築していると下記のオプションでは正しく動作しなかった。

 -cvedb-path="...."
 -ovaldb-path="...."
 -gostdb-path="...."
 -exploitdb-path="...."

正しいオプション指定は以下になる

-cvedb-sqlite3-path="...."
-ovaldb-sqlite3-path="...."
-gostdb-sqlite3-path="...."
-exploitdb-sqlite3-path="...."

config.tomlファイルへ記載してオプションを省略する

DB参照のオプションはconfig.tomlへ登録することができる。confに設定すれば何度も同じオプションを指定する必要がなくなる。

公式を参考にvulsユーザーの環境に構築していればconfig.tomlの記述は下記のようになる。

 

https://vuls.io/docs/ja/usage-report.html

[cveDict]
type="sqlite3"
SQLite3Path="/home/vuls/cve.sqlite3"

[ovalDict]
type="sqlite3"
SQLite3Path="/home/vuls/go/src/github.com/kotakanbe/goval-dictionary/oval.sqlite3"

[gost]
type = "sqlite3"
SQLite3Path="/home/vuls/go/src/github.com/knqyf263/gost/gost.sqlite3"

[exploit]
type = "sqlite3"
SQLite3Path ="/home/vuls/go/src/github.com/mozqnet/go-exploitdb/go-exploitdb.sqlite3"

 

Vulsのレポートをhttps(443ポート)で閲覧

レポートが生成されるとWebブラウザで結果を表示することができるのだが、デフォルトだとvuls repotサーバに接続するためには5111ポートを開放しなければならない。(例:http://example.com:5111/)脆弱対策のレポート閲覧にポートの追加開放が必要というのはスマートではないし本末転倒。

Webサーバ構築に慣れている人はすぐに気づくと思いますが、nginxやapacheをプロキシとして設定すれば外部からのレポート参照はhttpから閲覧できる。私の場合はnginxでproxy設定したのだが一般的なconfの記述でSSL設定(https)とBasic認証の設定が可能だった。

(vulsのマニュアルでは5111ポートにvuls用のSSLとvuls用の認証設定が記載されている)

 

リモートスキャン設定

方法1.http経由のスキャンでは5515ポートを開放してスキャンサーバを実行させて、かつクライアントからhttpを実行、ログはクライアント側に出力される。

方法2.ssh経由のスキャンではスキャン対象のssh鍵が必要。fast scan以外の実行にはsudo権限が必要になる。(実質的にいくつかOSファイルをインストールが必要になる場合がある)

どちらも試したのだが、1の方法は5515のポート開放が必須でログがリモート側に保存されて管理が煩雑になるため5515ポートを閉じて利用しない事にした。現在は2の方法でssh経由のスキャンを運用している。

基本的にバッチ処理の組み合わせなのでcronで定期実行を設定しておけばレポート画面を自動更新することができる。慣れてくるとレポート画面の確認をサボってしまうので、出力結果をメールやslack, mattermost等に飛ばしておくと忘れることがなくなる。

 

※システム連携のサンプル

出典:

https://github.com/future-architect/vuls/

vulsのgithubから引用

感想

ディストリビューションが提供する最新パッケージを適用していても修正されていない脆弱性が大量にあるため、セキュリティリスクを把握して対策できるものは対策する、対策する必要がない場合はそのリスクを把握する判断が必要とされる。

 

◇Vuls導入の利点・長所、個人的に良いと思うところ:

・Vulsのリモートスキャンはエージェントレスなので、対象のサーバに追加アプリケーションのインストールが不要(※yumのパッケージ管理の場合は1つだけパッケージインストールが必要)

・一般的なCVEの脆弱性情報を利用するため、標準的なLinux/Windowsシステムであればプラットフォームに依存しない、AWSやVPS環境でも利用可能

・全てのCVE情報を対象とするため診断精度が高い。システムの脆弱性診断としてはAWSのInspectorよりも詳細なレポートが得られる

・スキャン設定が選択可能でFastでは高速に検査できる。Deep設定では追加の権限設定が必要だが詳細情報を取得可能。

・基本的にバッチ処理とレポート生成だけなので、サーバーリソースが少なくても快適に動作する

・OSS版だけでもセキュリティリスクの現状把握として十分に有用だが、OSS版に対応できるエンジニアがいなくて予算に余裕があるならクラウド版を導入するとよさそう。(1台あたり4000円かかる)

◇Vulsではたりなさそうな短所、個人的にイマイチだと思えるところ:

・SSHでスキャンする場合、スキャン元から接続できるSSHポートが必要、かつSSH鍵のパスフレーズを削除する必要があり、鍵が漏洩したときに第三者の攻撃の懸念になる。(iptablesやsshd_configで接続元を制限することで対策可能)

・CVSS情報にない脆弱性(例えばAWSの固有設定についての脆弱性、AWSだとTrustedadvisor相当の情報)は検査できない。version 007からWordPress特有のセキュリティリスクは内部的にWPScanと同等の検査が行われるようになったらしい。
※version 007にアップデートして検査したがWordPres関連と見られる検査結果は見当たらなかった。。。

・Vuls商用版がメインで提供されているため、OSS版の構築や運用手順、検出したCVSSの情報が少ない。Windowsの脆弱性スキャンは有料版のみ対応。

・有料版の案内が不明瞭。vulsをGoogle検索しても有料版のURLが10位内に表示されない。クラウド版は1台のスキャン設定あたり4,000円(税抜き)とあるがVMやクラウドでも台数があるとそれなりの金額になる。固定のGIPが必要なのかSSH接続ができないオンプレは対応しているのか等がわからない。新規契約者には初期導入や運用について「コンサルティングサービス」オプションの別費用で提供するらしいが相応に費用がかかりそう。

 

OpenCVでWebカメラの解像度を変更すると落ちる不具合の対処方法

所有しているPCを買い替えたところ、OpenCVを利用したアプリが動かなくなった。

 

■アプリ(OpenCV)から見た症状

・動作環境はWindows10、OpenCVのバージョンは3.4.5
・RealSense D435カメラだとOpenCVの機能は正常に稼働する
・新しいPCに内蔵されたWebカメラだと、OpenCVからカメラを呼び出した瞬間に例外終了する
・Webカメラ単体であれば問題なく動作する(OpenCVから呼び出さなければ正常動作)
・OpenCVは最新版3.4.5をリファレンス通りにビルドして利用している

 

■原因の推測

OpenCVからWebカメラを呼び出すときに、カメラ解像度を設定変更するためにWITH_V4Lを参照するが、WITH_V4Lを参照できずに落ちてしまう。

 

■対策

ビルドオプションのWITH_V4LをONにすればカメラ解像度の変更でWITH_V4Lを参照したときの不具合が解消するらしい。
該当するOpenCVのソースコード、platforms/js/build_js.py 107行に定義されている値を変更。

変更前
"-DWITH_V4L=OFF",

変更後
"-DWITH_V4L=ON",

 

■結果

WITH_V4Lオプションを変更してcmakeを実行し、VisualStudioでリビルド、OpenCVライブラリを差し替えると新しいWebカメラでも正常にOpenCVが作動した。

 

the notebook PC

CacooのAWS構成図自動生成機能を試す

Visioの代わりに使っている設計用の作画サービス「Cacoo」でAWSの構成図Export機能が追加された。

https://cacoo.com/ja/blog/aws-architecture-import/

紹介記事の手順ではアクセスキーを登録するリスクが心配ですが、サポートページではクロスアカウントのIAMロールで登録する方法が掲載されているので、後者を参考にすると良いです。

https://support.cacoo.com/hc/ja/articles/360010495594-AWS%E6%A7%8B%E6%88%90%E5%9B%B3

 

AWS構成図の対象

  • CloudFront+ELB(ALB)AutoScaling+EC21台(待機2台)+RDS+その他一般的なCloudWatch,SNSあり
    (※ARNやVPC名等は消去しています)

利用した感想

  • AWS構成図の自動生成で有名な「CloudCraft」と比べると、出力結果が物足りない(見た目とサービス間の情報が貧弱)
  • 競合の「CloudCraft」「lucidchart」と比べると、コストパフォーマンスが最も良い。
  • ELB/ALBに登録されているAutoScalingの情報が出力されない(競合のlucidchartは出力される)
  • CloudFrontとALBの連携が出力されない(図から省略したがCloudFrontとS3 web frontの連携は出力される)
  • CloudWatchの情報が出力されない(競合のlucidchartはCloudWatchのアラート登録が出力される)
  • DynamoDBの情報が出力されないが、構成図の出力に対応してほしい(競合のlucidchart Basicも同様に出力されない)
  • Lambdaの情報が出力されない(ALBにもマウントできるので、できれば出力してほしい)
  • S3とSNSはバケットとCloudWatchの名称だけが表示される
  • 可能であれば、ELBやCloudfrontに登録されているRoute53, Config, セキュリティグループあたりの情報もほしい
  • 未検証だが「CloudMapper」というAWSの構成図を出力できるOSSがある。
    https://github.com/duo-labs/cloudmapper
    出力結果がCLoudformationで提供されているエディタに類似していて、商用サービスよりも強力かもれない。

 

AWS構成図の生成はCloudCraftが有名でしたが、低価格のサービスで提供されるようになったのは嬉しいところです。

 

 

ひさしぶりにPCを自作 / Coffee Lake + Geforce GPUを導入

個人の開発で機械学習やCUDAを利用するために機材を揃えた。

量販店やPCショップで販売されているものは、価格の安いCoffee Lake世代のCPUとGeforceの組み合わせを選べるものが皆無なので、久しぶりにPCを自作した。過去のCore i5相当のスペックがCeleron or Pentiumで代替できるのでPentium+Geforce1050Tiの構成とした。

電源とケース、ビデオカードのファンに気をつけて騒音が少ないものを選択、以下の構成でフルサイズのGeforceビデオカード対応かつ、標準のCPUクーラーでほぼ無音のPCが完成、これで合計金額は82,779円。

 

目的の品/利用意図 商品名 条件 購入価格 リンク
マザーボード ASUS Intel H310搭載 マザーボード LGA1151対応 PRIME H310I-PLUS 【Mini-ITX】 Coffee Lake対応 ¥ 11,558
電源 SilverStone SFX電源 300W 92mmFAN搭載 SST-ST30SF V2 Geforce 1050Ti対応で静音対応 ¥ 5,680
CPU Intel CPU Pentium G5400 3.7GHz 4Mキャッシュ 2コア/4スレッド LGA1151 BX80684G5400【BOX】 2コア以上のCore i5相当CPU ¥ 7,059
PCケース Lian Li Mini-Qシリーズ Mini-ITX対応キューブケース 拡張スロットx2 ブラック PC-Q21B 国内正規代理店品 コンパクトで見栄えよいケースで、フルサイズのグラフィックカードを搭載可能なもの ¥ 7,962
メモリ CFD販売 デスクトップPC用メモリ PC4-19200(DDR4-2400) 8GBx2枚 288pin (無期限保証)(Crucial by Micron) W4U2400CM-8G 16GB以上 ¥ 20,734
グラフィックカード ASUS NVIDIA GeForce GTX1050TI搭載ビデオカード オーバークロック メモリ4GB PH-GTX1050TI-4G Geforce1050Ti以上のスペックでファンクーラーが静かなもの ¥ 19,969
SSD/HDD SanDisk 内蔵SSD 2.5インチ/480GB/SSD PLUS/SATA3.0 500GB前後のSSDでCrucial, Sandisk, Toshiba, SamsungいずれかのTLC世代 ¥ 9,817

 

・マザーボード:Coffee Lake対応で小さなPCに組み込めるmini-ITX規格。ASUSかASrockで台湾製を探したけど最近はベトナム製造らしい。

・電源:SFX電源でファンが静かなものを選択。80Plus GOLD以上の高効率のものが希望だったが、実績あるSilverStoneなので80Plus Bronzeで妥協した。

・CPU:Geforce1050のベンチマークを基準にCPUは2コア4スレッドで妥協、スペック不足があればアップグレードする予定。

・メモリ:DockerでCUDAの開発環境を組みたいので16GB必須、コスパのよいCrucialチップのCFD販売のもの。

・PCケース:ITXで組めて無難なデザインのもの。自作PC屋が乱立していた頃よりも安くて良質なものが増えていて驚いた。

・グラフィックカード:TDPの低いGeforce1050TiでGPUクーラーが静かなものを選択。ネットの表版をあてにするしかなかったのだが、高負荷でなければほぼ無音、サスペンド等の省電力も正常に動作している。

・SSD/HDD:480GBのSandiskが1万円を割っていたので起動ドライブ用に購入。中華SSDでも気にしないのだけどメモリチップのリマーク品や粗悪品の噂が絶えないので選択から外した。データ用には3.5インチのHDDがあまっているので足りなくなったらマウントする予定。

 

メーカー製品を買ったほうが面倒が少ないけど、省電力PC・静音PC・機械学習対応・デザイン良好・ゲーミングPCの条件をクリアして8万円台前半で揃えたので、コストパフォーマンスには満足している。

 

DIY-PC