LinuxユーザーがイジるはじめてのAzure

LinuxユーザーがAzureを使いこなせるように応援するブログです

Azure Linux VMでのsudo脆弱性対応(CVE-2019-14287)

なんだかsudoに脆弱性が発覚し騒がれつつありますね。

 

それもそのはず、CVSSのスコアが「7.0」と警告レベルを超えて

重要だぜ、というスコアになっているのと、一部分だけを読むと

rootユーザー権限が乗っ取られる、と解釈できる部分があるから

でしょうね。

参考:https://access.redhat.com/security/cve/cve-2019-14287

 

いや、そもそもCVSSってなんぞ?スコアって?という方は

以下を参考に。

https://www.ipa.go.jp/security/vuln/CVSS.html

 

まぁいわゆる脆弱性レベルって一概にいっても様々な軸と捉え方が

あるわけで、そこを包括的にオープンな情報として各機関が軸や

考え方をまとめたスコアですよ、ということ。つまりこのスコアを

本人や企業ががどう扱おうと自由なわけですが、エンジニアとしては

今やるべきなの?後回しでもいいの?スルーしていい?というモノサシ

がほしいですよね。

 

そういう意味では今回のは重要レベルのスコアなので踊らされてしまう

のも無理はないですが、ちゃんと中身を読むとsudoをuser毎に厳密に

権限管理されている場合、root権限を与えていないuserでもroot権限で

実行できてしまうセキュリティホールが見つかったよ、というもの。

 

言い方を変えるとsudo = root という扱いでしか利用されていない

Linux環境であれば何の問題もないわけです。具体的にはこんな感じ。

 

通常利用

$ sudo -u#${uid} command

 ⇒ uidを使ってcommandを実行

 

問題となった利用方法

$sudo -u#-1 command

もしくは

$sudo -u#4294967295 command

 ⇒ -1も4294967295も存在しないuidだが、バグで0と解釈されて

   しまい、かつ存在しないuidのためパスワードデータベース

   への参照もされずPAMも制御外となる、そしてuid=0はroot

   のuidのためroot実行されちゃう、というw

 

で、じゃあどうすんだよ、という話に移る。

今回問題があるsudoのバージョンは1.8.28より前のバージョンが該当

するとのこと。

参考:https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-14287

 

で、Azure VM(やっとここでAzureな話w)のRhelCentOSyum upgrade

/update で対応できるかなー、っと思ったけどまだrepositoryに展開されて

いない模様。

 

# yum list sudo
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: ftp.riken.jp
Installed Packages
sudo.x86_64                                        1.8.23-4.el7                                         @base
#

 ※あ、epel-releaseもインストール済でつ。

 

ということでsudo本家の以下サイトから1.8.28をtar.gzでダウンロードしま

しょ。

https://www.sudo.ws/stable.html

 

ソースからの展開なのでパッケージ展開と比べてダルいですがコンパイラ

必要なのでgccあたりはあらかじめyum installしておいてください。

tar.gzを展開するとこんな感じ。

 

f:id:akazure:20191017132019j:plain

 

./configure、make、make installして反映しましょ。

※rootアカウントが利用するsudoはデフォで/bin/sudoになってます。

 このソースからmake installで展開されるのは/usr/bin/sudoのs-linkと

 /usr/local/bin/sudoの実態なので、混乱しないように。

 自分は混乱するので/bin/sudoを/usr/local/bin/sudoの実態を参照する

 ようにS-linkはっておきましたが。

 

で、例の問題となった脆弱性をつつくコマンドを叩いた結果が以下。

f:id:akazure:20191017132330j:plain

 

いいね!ちゃんとエラーとなって解釈できているようでつ。

対応方法と対応した後の確認までの記事があまり見つからなかったので

敢えてこの記事を書きましたが、もう一度言っておくとsudo = rootと

いうシンプルな扱いをされている環境では対応の至急性はないです。

repositoryに反映されたら定期的にyum upgradeかけてるし問題なす!

な話です。

 

ちなみに今回はCentOS(ディストリビューションRHELと同様)で

試しましたが、JPCERT CCが各ディストリビューション毎の記事を

まとめられていたので、ご参考まで。

 

https://www.jpcert.or.jp/newsflash/2019101601.html

 

 

いじょ