2015年以降のインテルCPUの脆弱性チェックプログラム

やめて!
japanese.engadget.com

あるものはしょうがないので研究室の該当マシンをチェック。ただ、使い方がいまいちわからなかったのでメモ。

判定ツールの結果の解釈

判定ツールのファイルに含まれているドキュメント Intel-SA-00086_Detection_UG.pdf の9ページ表2.2を転載する。

Message(表示されるメッセージ) Meaning(意味)
Vulnerable(脆弱性あり) The detected version of the Management Engine firmware is considered vulnerable for INTEL-SA-00086.
Not Vulnerable (脆弱性なし) The system meets the “Not Vulnerable” criteria described in Identifying impacted systems using the INTEL-SA-00086 Detection Tool
Maybe Vulnerable (わからない) Tool could not communicate with the MEI/TXEI Driver. Platform vulnerability cannot be ascertained. (意訳:検出ツールがMET/TXEIドライバーにアクセスできなかった。このため、脆弱性があるのかどうか判定できなかった)
Unknown (超わからない) 意味省略

この検出ツールで困るのは、 MEI/TXEIドライバーにアクセスできなかったときに「Maybe Vulnerable」を出してくるところ。今回のCoreプロセッサーは第6~8世代(Skylake、Kaby Lake、Kaby Lake R)が対象なところ、試したのはCore i3 530(Nehalem 世代) で検出ツールを動かした結果「Maybe Vulnerable」と判定された。このため、古いPCを調べる場合は、対象のプロセッサーかどうかの判定も必要となる。

ダウンロード

Windows用でも、Linux用でもこちらのサイトからダウンロードできる。
downloadcenter.intel.com

WIndowsの場合

ダウンロードしたZIPファイルを解凍する。解凍したフォルダに移動する。さらに「DiscoveryTool.GUI」フォルダに移動する。
f:id:next49:20171124125358p:plain

以下のようなファイルがあるので「Intel-SA-00086-GUI.exe」を実行する(必要に応じて管理者権限で実行する。ファイルを選択し、右クリック「管理者として実行(A)」を選択する)。
f:id:next49:20171124125417p:plain

しばらくたつと結果が以下のように表示される。もし、「Vulnerable(脆弱性あり)」ならば、「モデル」の項に記載されているメーカーのWebサイトからファームウェアを探し、インストールする。「Not Vulnerable (脆弱性なし)」なら、問題なし。「Maybe Vulnerable (わからない)」であるならば、「プロセッサー名」の情報を参考に今回の脆弱性の対象CPUであるかどうかを調べる。たとえば、以下の例の場合はGoogleで「Core i3 530」と検索したところja.wikipedia:Intel Core i3のページが見つかり、530はNehalem 世代であるため、脆弱性対象の世代(Skylake、Kaby Lake、Kaby Lake R)ではないことが確認できた。
f:id:next49:20171124125427p:plain

Linux の場合

SA00086_Linuxtar.gzをダウンロードし、調べたいサーバに持っていく。ホームディレクトリにファイルを置いたとする。

% mkdir IntelCPUCheck
% cd IntelCPUCheck
% tar xvfz ~/SA00086_Linuxtar.gz

./documents/Intel-SA-00086_Detection_UG.pdf に説明がある。Linux版の実行にはPython 2.7が必要。pythonが存在するかどうかはwhichコマンドで確認できる(何も反応がなければpythonはインストールされていない)。pythonのバージョンは以下のように確認できる。

% which python
% python --version

ツールを実行する。

% sudo ./intel_sa00086.py

実行結果の例。

INTEL-SA-00086 Detection Tool
Copyright(C) 2017, Intel Corporation, All rights reserved

Application Version: 1.0.0.128
Scan date: 2017-11-24 03:20:37 GMT

*** Host Computer Information ***
Name:「サーバのホスト名」
Manufacturer: ASUS
Model: All Series
Processor Name: Intel(R) Xeon(R) CPU E3-1226 v3 @ 3.30GHz
OS Version: debian 8.9  (3.16.0-4-amd64)

*** Intel(R) ME Information ***
Engine: Intel(R) Management Engine
Version: 9.1.10.1005
SVN: 0

*** Risk Assessment ***
Based on the analysis performed by this tool: This system is not vulnerable.

For more information refer to the SA-00086 Detection Tool Guide or the Intel security advisory Intel-SA-00086 at the following link:
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00086&languageid=en-fr

関連リンク

  • HPのファームウェア
    • HPのファームウェアは機器ごとに対応している様子。HP Software and Driver Downloads for HP Printers, Laptops, Desktops and More | HP® Customer Supportのページに使用しているモデルの情報を入力してドライバーのダウンロードのページへ移動し、「Driver-Chipset」→「Intel Management Engine Driver」を探す。「Detail」をクリックし、そこの説明に「Intel-SA-00086」という記載があったら、対応済みのドライバー。

Debian 9上でrbenvをシステムワイドにインストールする

Debian 9 "Stretch" を用いたサーバ設定メモ - 発声練習の続き。

gitのインストール

Debianのパッケージシステムでもgitでインストールできるようになったみたい。

% sudo aptitude install git

rbenvのインストール

CentOSでrbenvをシステムにインストールする - Qiitarbenvでsystem wideに入れるときに気をつけたいこと - Qiitaを参考にインストールする。

Githubからrbenv, ruby-build, そして rbenv-default-gemsを取得する。

% cd /usr/local
% sudo git clone https://github.com/rbenv/rbenv.git rbenv
% sudo mkdir plugins
% sudo git clone https://github.com/rbenv/ruby-build.git plugins/ruby-build
% sudo git clone https://github.com/rbenv/rbenv-default-gems.git plugins/rbenv-default-gems

rbenvの設定をログイン時を読み込むことができるように/etc/profile.d/rbenv.shを作成する。

% sudo touch /etc/profile.d/rbenv.sh
% sudo vi /etc/profile.d/rbenv.sh

中見は以下のようにした。

export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init --no-rehash -)"

rbenvで初期化を行う。

% sudo su
# source /etc/profile
# exit

rbenvでsystem wideに入れるときに気をつけたいこと - Qiitaでおすすめのrbenv-default-gemsを設定する。これを設定することでrubyのインストール時に合わせてインストールするべきgemライブラリを指定することができる。

% sudo touch /usr/local/rbenv/default-gems
% sudo vi  /usr/local/rbenv/default-gems

中見は以下のようにした。

bundler
pry
rbenv-rehash

rubyのインストール

rubyのコンパイルに必要なパッケージをインストールする。

% sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev

rubyのインストール

% sudo su
# source /etc/profile
# which rbenv
# rbenv install --list
# rbenv install 2.4.2
# rbenv rehash
# rbenv global 2.4.2

gemのバージョンを最新にしておく。

# gem update --system

gemパッケージをインストールする際にドキュメントをつくらないように設定する。

# touch ~/.gemrc
# vi ~/.gemrc

.gemrcの中見は以下の通り。

install: --no-document
update: --no-document

Ruby on Railsのインストール

SQLite3関連のパッケージをインストールする。

sudo apt-get install libsqlite3-dev sqlite3

Ruby on Railsをインストールする。

% sudo su
# gem install rails

動作確認をする。

% cd /tmp
% rails new demo --skip-bundle
% cd demo
% vi Gemfile

Javascriptの実行環境であるtherubyracerをコメントインする。

gem 'therubyracer'

パッケージをインストールする。

% bundle install

動かしてみる。

% rails generate scaffold person name:string age:integer
% rails db:migrate
% rails server

Debian 9 "Stretch" を用いたサーバ設定メモ

Debian 9 (stretch)を使ってサーバを構築した際のメモ。

Debian 8との変更点

net-tools (ifconfig, netstatなど)ではなくiproute2 が入っているとのこと。また、GCC6になったのでカーネルのコンパイルしなおしが必要である場合がこと。

Debian stretch で提供される GNU GCC 6 コンパイラは、デフォルトですべての実行ファイルを position independent なものとしてコンパイルします。これはあらゆる種類の脆弱性に対する緩和を提供します。

残念なことに、(8.7 までの) Debian 8 での Linux カーネルは、position independent な実行ファイルとしてコンパイルされたプログラムのうちの幾つかがセグメンテーションフォルトのような、よくある問題を起こしてクラッシュする可能性がある問題がありました。この問題は 8.8 で提供される linux バージョン (3.16.43 以降) および Debian 9 でのカーネル (4.9 以降) で解決されています。

stretch へのアップグレードを開始する前に、カーネルを修正されたバージョンにアップグレードしてから再起動するのをお勧めします。Debian 8.8 以降のカーネルを稼働させている場合は、この問題の影響を受けません。

アップグレード中、影響を受けるバージョンのカーネルで稼働している場合、アップグレード直後にこの問題が直撃するのを避けるため、再起動を実行して stretch のカーネルにするのを強くお勧めします。
5.1.5. 実行ファイルはデフォルトで PIE (position independent executables) が有効でコンパイルされています

インストール

省略。

/etc/apt/sources.list を編集する

contoribとnon-freeを追加する。また、私はaptitudeが好きなのでインストールする。

% su
# apt-get update
# apt-get upgrade
# apt-get install aptitude

セキュリティ関係の設定

そこそこセキュアなlinuxサーバーを作る - Qiitaを参考に以下を実行する。

  • sshでrootにlogin出来なくする
  • sshdのプロトコルを2に限定する
  • sshguardかfail2banを導入する
  • 使わないポートを閉じる
  • passpromptを変える
  • logwatchを入れる

passpromptを変える

まず、sudoをインストールする。

% su
# aptitude install sudo
# visudo

sudoを実行した際のパスプロンプトをそこそこセキュアなlinuxサーバーを作る - Qiitaの設定を参考に変更する。

sshdの設定の変更

/etc/ssh/sshd_configの設定をそこそこセキュアなlinuxサーバーを作る - Qiitaの設定を参考に変更する。

sshguardかfail2banを導入する

% sudo aptitude sshguard

使わないポートを閉じる

iptableを使って、使わないポートを閉じる。まず、iptables-persistentをインストールする。

% sudo aptitude  install iptables-persistent

/etc/iptablesに設置されているrules.v4を変更する。変更は以下のサイトを参考にする。

logwatchを入れる

% sudo aptitude install logwatch

Debian 8 (Jessie) - ログ解析ツール logwatch インストール! - mk-mode BLOGに従い、設定ファイルを設置する。

% cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

logwatch.conf の「MailTo =」でログを送信したい宛先メールアドレスを設定する。

自動時刻合わせ

ntpdateをインストールする。

% sudo aptitude install ntpdate

crontabで時間合わせする。/etc/cron.weekly にスクリプトを置く。

% sudo touch /etc/cron.weekly/ntpdate.sh
% sudo chmod 755 /etc/cron.weekly/ntpdate.sh

組織内のNTPサーバがhogehoge.jpとしたとき、ntpdate.shの内容は以下の通り。

#!/bin/sh
/usr/sbin/ntpdate hogehoge.jp > /dev/null 2>&1

GCC関連のインストール

% sudo aptitude install gcc g++ make autoconf m4 bison flex

メモ:ジンバブエのムガベ大統領辞任

ジンバブエとしえば「ハイパーインフレ」としか知らなかった。先日のSession 22でジンバブエの歴史が説明されていて大変おもしろかった。「世界最悪の独裁」というのは宗主国イギリスのポジショントークだったというのは全く知らんかった。
www.tbsradio.jp

ムガベ大統領の後継者が今回の騒動の問題だったとのこと。
www.afpbb.com

www.bbc.com

結局、辞任した様子。
jp.reuters.com

アカハラを防ぐ大学教員しぐさ「常に学生に録音させる」

最近の学生のほとんどはスマートフォン or タブレットを所持しているので、教員と学生でミーティングするときには必ず学生に録音させるようにしておくとよいのではないかと。

元々は私がついていた教授がやっていたこと。最初は留学生とミーティングするときにICレコーダーで録音させていたのが、徐々に日本人学生にも録音させるようになり、最終的には「ミーティングしましょう。録音して下さい。」と決まり文句に発展していた。私もそれを受け継ぎ、学生とミーティングするときには録音させるようにしている。ミーティングを録音させておくと以下の点で大学教員にもメリットがある。

  • 「言った」「言わない」論争にケリが付く。特に常に「ミーティングしましょう。録音して下さい。」と言うようにしていれば、「言った」「言わない」論争が発生したときに「あのときの録音出して下さい」といえば終わる(当然、自分が「言った」つもりが「言っていなかった」、「言わなかった」つもりが「言っていた」と論争に負ける場合もあるけど)。
  • 「録音されている」ということが常に意識にあるので、暴言を吐きづらくなる。結果として、アカハラ発生を防ぐことになり、自分も職を失いづらくなる。

録音されている状態で暴言吐いてしまったら、すぐにごめんなさいするしかない。

関連過去エントリー

next49.hatenadiary.jp