Content-Disposition の filename という地雷。 (1個の観点で17個の脆弱性を見つけた話)
TL;DR
- 1つのブラウザ、1つのプログラミング言語、15個の { Web Framework, HTTP Client ライブラリ, Email ライブラリ / Web Service 等} で脆弱性を見つけました。
- 見つけた脆弱性は、全て 1つの観点で発見した (多分 50-80 くらいのプロダクトの調査をした)。
- RFC の記載では、(かなりわかりにくく)この問題に対する要件が記載されており、WHATWG > HTML Spec の方はしっかりと書かれているといった状況にある。
- この問題は、
Content-Dispositionのfilename,filename*というフィールドを明確なターゲットとしている。 - この問題は、 HTTP Request / Response / Email の箇所で影響がそれぞれ変わる。
- これらの攻撃ベクトルの明確な攻撃対象として、
Content-Disposition(のfilename,filename*) を見ている人は現在はあまりいない。 - OWASP の刊行物でこのあたりをちゃんとまとめているのはパッと見ない。 ASVS ではこれに関する Issue が立てられている。
Content-Dispositionのfilename,filename*はちゃんとエスケープしましょう。filename:"-->\"or%22\r-->\\ror%0D\n-->\\nor%0A
filename*:- ちゃんとフォーマットを守って URL Encode する
はじめに
どうも、涼宮カルビの牛角です。
この記事では、2018-2022 のリサーチ結果で発見した 脆弱性に関して書いていきます。 リサーチ期間が非常に長くなっていますが、単純にやる気のアップダウン等が入り混じって調査していない期間が長くなっただけです。実際の調査期間は 3ヶ月-半年程度です。
リサーチの結果、以下のプロダクト(?)で脆弱性を発見しました。
- 1個の ブラウザ
- 1個の プログラミング言語
- 15個の {Web Framework / Library / Web Service } (あえてぼかすために混ぜてます)
見つけた問題は大きく以下の3つに分かれます。
- HTTP Request における multipart/form-data > Content-Disposition 上の
filenameのエスケープ不足による、ペイロード生成時のコンテンツ改竄の脆弱性 - HTTP Response における Content-Disposition ヘッダ上の
filename,filename*のエスケープ不足による、Reflect File Download の脆弱性 - 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 を見ていたところ、こちらのツイートが流れてきました。
あっぶね GitHubだと思ったら全然違ったわ pic.twitter.com/SRtHUu3XDM
— ./もぐもぐ.ps1 (@YumNumm) 2022年3月9日
画像を見る限り、対象ドメイン 520liyan[.]xyz は GitHub を模したフィッシングサイトで、
いわゆる Reverse Proxy を用いたフィッシングサイトのように見えます。
パッケージマネージャで配布されるマルウェア、対策と課題について
はじめに

画像は記事に全く関係ないカニのフィギュアです👋
近年、善良なパッケージを騙ったマルウェアが配布されているケースが増えてきています。 これらのマルウェアはパッケージマネージャ上で配布され、開発者端末やそれをビルトインしたシステムを利用するユーザー端末で悪事を働きます。
これは俗にいうサプライチェーン型攻撃で、 これらの関連ニュースを目にする機会が増えてきていることを、多くの開発者が体感されていると思います。
ただ、これらのサプライチェーン型攻撃の記事は、 どうしてもエンドユーザー(パッケージを利用する開発者側・それらを組み込んだアプリを実行するユーザー側)の対策に焦点が当てられたものが殆どのように感じています。
そこで本記事では、このエンドユーザー側の対策だけではなく、 パッケージマネージャメンテナーたちがどう対策しているのかも含めて、 「パッケージマネージャ上で行われるマルウェア配布」と、 「これの攻撃からどう保護していくのか」について、現状の課題を含めて書いていこうと思います。
続きを読むパッケージファイルに擬態したマルウェアのコードを読む part1
ライブラリに擬態したマルウェアを見てく
今作ってるツールでどうしても複数の事例を知っておく必要があるので、 半分自分用に乱雑にまとめていく。
この記事では、主にPypi (Pythonのパッケージマネージャ)にて配布されていた 「ライブラリに似せた名前」のマルウェアのコードを見ていく。
とはいえ、かなりシンプルなものばかりだったので、 記事の内容的には微妙かも。
はじめに
近年、タイトルにある通りライブラリに擬態したマルウェアというのがそれなりに配布されていたりする。
これらは大抵の場合、 Typo Squatting と呼ばれる攻撃手法をベースにしてライブラリとして公開・配布されている。
これらのマルウェアは、インストール・使用した端末に対して、なにかしらの悪性なコードを実行させることを狙っている。
そもそも Typo Squatting とは、(大抵は)フィッシングサイトなどで悪用される攻撃テクニックで、
google[.]com などと、正規のドメインをタイピングしなければならないところを、
タイピングミスを狙って gooogle[.]com などと言った、少しだけズラしたドメインで、
悪性なサイトをホスティングし、被害者がタイポして悪性ドメインに訪れてくるのを待つ・・・という感じの攻撃が行われる。
先ほども書いた通り、大抵はフィッシングサイトで使われる攻撃手法だったのだが、
近年(特に観測範囲だと node.js, python 周り)で pypi などのパッケージマネージャーなどに
マルウェアが上げられていることがある。
これらのマルウェアでは、先ほど言った Typo Squatting と呼ばれる攻撃手法が利用され、
有名なライブラリー名を少しだけズラした形でマルウェアが公開されていたりする。
つい最近の記事だと - というライブラリが npm で配布されており、
70万回ダウンロードされたとか。
https://labs.cybozu.co.jp/blog/akky/2021/08/empty-npm-package-downloaded-sub-one-million-times/
こう言った背景もあり、Pypi から抽象構文木(AST)を使ったマルウェア検出を行った人がいたりする。 https://bertusk.medium.com/detecting-cyber-attacks-in-the-python-package-index-pypi-61ab2b585c67
まとめると、「問題ないライブラリと思ったら実はマルウェアでした」というのがこの攻撃の手法であり、 近年話題のサプライチェーン攻撃としてカテゴライズされている。
今回は「この辺りをもうちょっと(防御面で)なんとかできんのかー」と思い、 セコセコ亀のスピードで開発をしているツールのために、数個のマルウェアのコードを読んでいこうと思う。
なお、本記事はGithubやブログなどのオープンな情報をベースとしており、 マルウェアの流布などを目的とした反社会的行為を推奨してるわけではない。
続きを読む