ぶるーたるごぶりん

UI, UX, セキュリティとか😘

Content-Disposition の filename という地雷。 (1個の観点で17個の脆弱性を見つけた話)

English ver:
https://gist.github.com/motoyasu-saburi/1b19ef18e96776fe90ba1b9f910fa714#file-lack_escape_content-disposition_filename-md

TL;DR

  • 1つのブラウザ、1つのプログラミング言語、15個の { Web Framework, HTTP Client ライブラリ, Email ライブラリ / Web Service 等} で脆弱性を見つけました。
  • 見つけた脆弱性は、全て 1つの観点で発見した (多分 50-80 くらいのプロダクトの調査をした)。
  • RFC の記載では、(かなりわかりにくく)この問題に対する要件が記載されており、WHATWG > HTML Spec の方はしっかりと書かれているといった状況にある。
  • この問題は、 Content-Dispositionfilename, filename* というフィールドを明確なターゲットとしている。
  • この問題は、 HTTP Request / Response / Email の箇所で影響がそれぞれ変わる。
    • HTTP Request : リクエスト改竄(特にファイルコンテンツの改竄、他のフィールドの汚染等)
    • HTTP Response : Reflect File Download の脆弱性
    • Email : 添付ファイルの改竄(拡張子やファイル名の改竄と、潜在的なファイルコンテンツの改竄等)
  • これらの攻撃ベクトルの明確な攻撃対象として、 Content-Disposition (の filename, filename*) を見ている人は現在はあまりいない。
  • OWASP の刊行物でこのあたりをちゃんとまとめているのはパッと見ない。 ASVS ではこれに関する Issue が立てられている。
  • Content-Dispositionfilename, filename* はちゃんとエスケープしましょう。
    • filename:
      • " --> \" or %22
      • \r --> \\r or %0D
      • \n --> \\n or %0A
    • filename*:
      • ちゃんとフォーマットを守って URL Encode する

はじめに

どうも、涼宮カルビの牛角です。

この記事では、2018-2022 のリサーチ結果で発見した 脆弱性に関して書いていきます。 リサーチ期間が非常に長くなっていますが、単純にやる気のアップダウン等が入り混じって調査していない期間が長くなっただけです。実際の調査期間は 3ヶ月-半年程度です。

リサーチの結果、以下のプロダクト(?)で脆弱性を発見しました。

  • 1個の ブラウザ
  • 1個の プログラミング言語
  • 15個の {Web Framework / Library / Web Service } (あえてぼかすために混ぜてます)

見つけた問題は大きく以下の3つに分かれます。

  1. HTTP Request における multipart/form-data > Content-Disposition 上の filenameエスケープ不足による、ペイロード生成時のコンテンツ改竄の脆弱性
  2. HTTP Response における Content-Disposition ヘッダ上の filename, filename*エスケープ不足による、Reflect File Download の脆弱性
  3. Email の multipart > Content-Disposition における filenameエスケープ不足によるコンテンツ改竄の脆弱性
続きを読む

Meta(Facebook) の偽ECサイト (Phishing) 広告の自動検出

はじめに

こん〜!

今回は、いつかやろうと思っていた Meta(Facebook) 広告上でばら撒かれまくっている悪性広告を自動検出する試みについて、 うまくいったこと・いかなかったこと・考察等をまとめていこうと思います。

先にまとめ

  • Facebook の GraphQL API だと、検索できる広告タイプが限られており、 Graph API を用いた自動化は(現在は)できない
  • 広告ライブラリAPI という Web Page 機能 からの API サーチだと広告の検索が可能であり、悪性広告を検索可能
  • 広告ライブラリAPI からの検索は、(多分)全文検索だと思われるので、特定のキーワード・ドメインをキーワードとした検索が可能
  • 作成したカスタムクエリの一つは、検索結果の20件が全て悪性広告であった
  • 広告の先が悪性なECサイトであるかを判定する方法として、robots.txt を参照する方法を考案して実施した
  • Meta の広告審査方法はもう少し頑張っていただいて、よりよりプラットフォームになってほしい
続きを読む

Google の OSV と CPE の課題解決について

OSV と CPE

炭治郎です。コロナ2日目です。

自分は知らなかったのですが、 Google が2021年2月に OSV (Open Source Vulnerabilities) と言う脆弱性DBを公開していました。

https://opensource.googleblog.com/2021/02/launching-osv-better-vulnerability.html

この OSV に触れた国内記事はそれほど多くなく、 記事の内容自体も OSS-Fuzz について触れているケースが多そうでした。

ただ、自分的にはその点よりも以下の CPE の課題を解決してくれる点というのが非常に良さそうだと思いました。

This comes from the fact that versioning schemes in existing vulnerability standards (such as Common Platform Enumeration (CPE)) do not map well with the actual open source versioning schemes, which are typically versions/tags and commit hashes.

意訳すると、 CPE などが package manager 上の package 名などと対応していない問題があり、 それを OSV によって解決するという感じです。

この点について、既存のCPEを元にしたパッケージの特定の限界と、 OSV が良さそうという話をしてみようと思います。

続きを読む

GitHub を狙った Reverse Proxy 型フィッシングサイトの探索と報告

GitHub の Reverse Proxy 型フィッシングサイトの発見と報告

こんにちは、でじこだにょ

今回は GitHub を狙った Reverse Proxy 型のフィッシングサイトを探していこうと思います。 (長いので、Reverse Proxy 型のことをプロキシ型と略しちゃいます) 結論から書くと、24件のフィッシングサイトを新規に発見して報告しました。

今回はそれらのフィッシングサイトの探し方のほか、フィッシングサイトの検出方法や、 セーフブラウジングなどの話をしつつ、 今回見つけたフィッシングドメインに対して、簡単ではありますが、調査と考察を行ってみたいと思います。

探そうとしたきっかけ

数日前、 Twitter を見ていたところ、こちらのツイートが流れてきました。

画像を見る限り、対象ドメイン 520liyan[.]xyzGitHub を模したフィッシングサイトで、 いわゆる Reverse Proxy を用いたフィッシングサイトのように見えます。

続きを読む

log4j2 の対応が終わったと思っている人へ

はじめに

TOOD 加筆

気力と時間があればかく

本題

さて、書きたいことはこちらの方のツイートに全て書いてあります。

おそらく(直感として)多くの開発者の方は、 本件の対応について以下で済ませているのではないかと心配しています。

ソースコードgrep して log4j が import されていなかった!ヨシ!」

ただ、本件の問題はそんな片手間だったり1日で終わるように簡単な問題じゃないはずです。 例えば以下は確認しましたか?

  • 利用しているフレームワークが依存しているライブラリ一覧に log4j が存在しないか確認しましたか?
    • gradle とかの dependency tree を表示する機能などを使って「ちゃんと」確認しましたか?
    • 実はあって、しかもまだライブラリアップデートが存在しないとか、出会ってませんか?
  • サーバーサイド以外に、クライアントサイド(Android App とか)は確認しましたか?
    • 依存していた場合、そのアプリのアップデートをどうするかまで考えてますか?
  • ミドルウェアlog4j に依存している場合のことも考えれていますか?
    • ElasticSearch なども影響を受けると言われています。確認・どうするか検討しましたか?
    • apt install XXX とかでインストールした場合、どうやって対応するか検討できましたか? これらは(自分が知る限り) Dependency Tree を直接出力する術がないはずです。
  • SaaS などの利用しているサービスが攻撃を受ける可能性を検討しましたか?

漏れはあるでしょうが、おそらく観点としてはこの辺りがあるはずです。 本件は表層の問題も大きく、根深い問題も更に大きい厄介な案件です。

各位体調第一で頑張りましょう

パッケージマネージャで配布されるマルウェア、対策と課題について

はじめに

f:id:kumagoro_alice:20211127182904j:plain

画像は記事に全く関係ないカニのフィギュアです👋

近年、善良なパッケージを騙ったマルウェアが配布されているケースが増えてきています。 これらのマルウェアはパッケージマネージャ上で配布され、開発者端末やそれをビルトインしたシステムを利用するユーザー端末で悪事を働きます。

これは俗にいうサプライチェーン型攻撃で、 これらの関連ニュースを目にする機会が増えてきていることを、多くの開発者が体感されていると思います。

ただ、これらのサプライチェーン型攻撃の記事は、 どうしてもエンドユーザー(パッケージを利用する開発者側・それらを組み込んだアプリを実行するユーザー側)の対策に焦点が当てられたものが殆どのように感じています。

そこで本記事では、このエンドユーザー側の対策だけではなく、 パッケージマネージャメンテナーたちがどう対策しているのかも含めて、 「パッケージマネージャ上で行われるマルウェア配布」と、 「これの攻撃からどう保護していくのか」について、現状の課題を含めて書いていこうと思います。

続きを読む

植物の温室DIYした

記事のまとめ

  • やってることの殆どは、こちらの方の記事の真似
  • 最低限のセットで ¥37,580 円程度 (ライト2枚 2万円 + 棚 8000円の値段を含む)
  • 我が家もスマートハウス
  • 色々問題があったが、概ね解決

f:id:kumagoro_alice:20211021205028j:plain

買ったもの

ひとまず買ったものをバシバシ書きます。 組み立てや問題などについては後述します。

合計: ¥37,580 程度

上のが最低限の費用で、プラスで以下のものを買うと良いかもしれません。

  • ヒーター
  • サーキュレーター / 外付けファンなど
  • SwitchBot Hub(エアコンなどの制御)
  • 加湿器
続きを読む