最速! 危険度の高い脆弱性をいち早く解説
「脆弱性研究所」第1回 8月分まとめ
今回からスタートする本連載では、毎月公開される脆弱性の中から、特に危険度、緊急度の高い脆弱性について詳しく解説していきます。第1回目は先ごろDEFCONと Black Hat で公開された危険度の高い脆弱性についてデモ動画などを交えながら解説していきたいと思います。
8月に公開された重大な脆弱性
8月に新たに公開された脆弱性は1821となります。この中で特に重大な脆弱性を幾つかピックアップして説明したいと思います。
1. Realtek の RTL819xを搭載したデバイスに影響を与える重大な脆弱性(CVE-2022-27255)のPoC公開 (2022年8月)
8月18日、Realtekが提供しているネットワークデバイス向けのシステムオンチップ(SoC)に報告されている脆弱性「CVE-2022-27255」について、これを攻撃に悪用する概念実証(PoC)コードが公開されました。
CVE-2022-27255は、Faraday Securityの研究チームによって発見されました。
Realtekでは、2022年3月にセキュリティアドバイザリ(PDF)をリリースしています。8月に米国で開催されたセキュリティカンファレンスのDEFCONにおいて、同研究チームがその技術的な詳細とPoCコードを公開しました。
DEF CONで発表されたスライド:こちらのPDFになります。
PoC動画:https://github.com/infobyte/cve-2022-27255/blob/main/DEFCON/poc.mp4
その他資料:https://github.com/infobyte/cve-2022-27255/
脆弱性詳細
今回の概念実証では、Nexxt Nebula 300 Plusが使用されました。

この機器のOSは”eCos”というリアルタイムOSを使用しています。実際にはいくつかのスタックがOSSとして公開されており、入手することが可能です。これらのソースコードとログイン時のコマンドプロンプト(Linuxのbashなどとは異なる独自のものです)を用いて、研究チームがリバースエンジニアリングを行い、今回の脆弱性を発見したとのことです。BoF (buffer overflow) によるコード実行が可能であったが、一部のソースコードのみしか開示されていなかったため、問い合わせを行ったところ、RealTekのeCos用SDKに問題があることがわかりました。
RealTekのeCos用SDKの’SIP ALG’モジュールでは、バッファ入力のチャックが不十分なところがあり、さらにstrcpyコマンドを用いてコピーを行っていました。’SIP ALG’モジュールがstrcpyでSIPパケットのいくつかのコンテンツを予め定義されている固定サイズバッファにコピーした際に、コピーされるコンテンツ長がチェックされていなかったことがバッファオーバーフロー脆弱性の原因となっていた様です。
リモートの攻撃者はこの脆弱性を利用して、SDPデータやSIPヘッダを改変した特別なSIPパケットをWANインターフェイスに送り込むことで、ルータなどのデバイスをクラッシュさせたりすることでリモートコード実行を可能にしました。
PoCは、先のgithubのリンクに「poc.mp4」がありますので、そちらを見て頂ければと思います。
影響範囲
今回のDEFCONのプレゼンでは、OEM製品を含めた該当するデバイスでadminパネルがInternetに露出している製品は、世界中でもこれだけ動作しているようです。

また、(現在わかっているだけで)OEM製品を含めてこれらの製品が本脆弱性に該当しているようです。

本脆弱性は正確にはRealtekのSDKの脆弱性のため、単にRTL819xチップを使っているからと言って、日本でも使われているバッファローやASUSなどの製品に影響があるかどうかははっきりとは言えません。しかし、脆弱性の影響を受ける可能性は当然有りえます。この辺は、各ベンダーの発表を待つ(あるいは直接問い合わせる)必要があります。
今回の発表を行った彼らのGitHubに、これまで判明した本脆弱性の影響を受けるデバイスのリストと、影響を受けるかどうかを確認するためのツールがありますので、気になる方は是非お試しください。
2. Linux Kernelのローカルユーザ特権昇格脆弱性(Dirty Cred: CVE-2021-4154, CVE-2022-2588) (2022年8月)
2022年8月17日にLinux Kernelの脆弱性(Dirty Cred:CVE-2021-4154, CVE-2022-2588)が公開されました。Dirty COW (CVE-2016-5195)と似たような脆弱性で、cred(LSMなどのセキュリティ系で特権情報をLinux Kernel内で扱う際に使用する構造体及びシステム)が対象となります。こちらはBlack Hat 2022で発表された脆弱性になります。
発表資料:こちらのPDFになります。図がわかりやすいものになっています。
PoC動画:こちらにアップしました。
その他資料:https://github.com/Markakd/DirtyCred
脆弱性詳細
Linux KernelのCredentialに関しては、こちらのLinux Kernelドキュメントにまとまっています。
本脆弱性(Dirty Cred)は、「非特権のcred(credential)を特権のcredと入れ替えることができないか」というアイデアから見つけられた脆弱性になります。
Linux Kernelのcred(Credential)はセキュリティ関連で特権などを扱うときに使われています。
credには下記のように大きく分けて
- task credential(struct cred)
- open file credential(struct file)
の二種類が存在しています。
1.Dirty Credは、kernel heap内に展開されたこの2種類のcredをそれぞれ ヒープ中に展開されている非特権プロセスのcredを無理やりfreeにして、そこに特権ユーザーのcredが展開されるようにする。



2.ヒープ中でファイルディスクリプタがopenしたfile構造体を、権限チェックが終わった直後で、かつディスクに書き込む直前に無理やりfreeにして、/etc/passwdなどのREADONLYのファイルオブジェクトをそこにアロケートする。



という形で書き換えるものになります。
この上記のステップが
を用いて検証できた、という話になります。 (現在判明しているCVEは上述になりますが、今後CVEが追加される可能性があります)。
PoC
PoCデモはZhenpeng Lin氏のTwitterで見ることが出来ます。
また、筆者の方でもPoC(CVE-2021-4154の方のみ)を確認しました。Youtubeにアップしていますので、貼っておきます。
筆者の環境ではCentOS8.4を用いましたが、動画をみてわかる通り、SELinuxを有効にしていても影響を受ける脆弱性となります。
影響範囲
現在判明しているCVEは上述の2種類になりますので、それぞれのディストリビューション内で情報を確認したほうが良いでしょう。下記に代表的なディストリビューションの情報を示します。
- Debian
https://security-tracker.debian.org/tracker/CVE-2021-4154
https://security-tracker.debian.org/tracker/CVE-2022-2588 - Red Hat Enterprise Linux/CentOS
https://access.redhat.com/security/cve/CVE-2021-4154
https://access.redhat.com/security/cve/CVE-2022-2588
Ubuntu
https://ubuntu.com/security/CVE-2021-4154
https://ubuntu.com/security/CVE-2022-2588
SUSE/openSUSE
https://www.suse.com/security/cve/CVE-2021-4154.html
https://www.suse.com/security/cve/CVE-2022-2588.html
8月のまとめ
8月はDEFCONやBlack Hatと重なったこともあり、重大な脆弱性がPoC付きで公開されました。9月以降も8月のカンファレンス発表を受けて脆弱性公開が続々とされていくと思われますので、引き続き注意が必要です。

<著者> 面 和毅
サイオステクノロジー株式会社 上席執行役員
OSS/セキュリティエバンジェリスト
OSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダーや外資系、ユーザー企業などでさまざまな立場を経験。
2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍中。また、ヒートウェーブ株式会社でも講師として活動中。
専門分野はSELinuxを含むOSのアクセス制御、AntiVirus、SIEM、脅威インテリジェンス。