Method Overwrite をリバースプロキシ環境下で悪用する

X-HTTP-Method-Override ヘッダは知っている人も多いと思います。 いわゆる Method Override と呼ばれるもので POST で他のメソッドを代替するときなどに使用されます。 例えば次のようなリクエストを送ると POST ではなく PUT として処理されます。 POST /posts HTTP/1.1 Host: example.com X-HTTP-Method-O...

Helm Chart で生成された manifests をテストする

chart のテストは https://helm.sh/docs/topics/chart_tests/#helm にあるように、実際に helm install する必要があります。 そうではなくて、単純に吐き出される manifests が期待したものかどうかをテストしたいというケースもあると思います(僕はあった)。 helm template --execute (v3 だと --show-...

Vault の Agent Sidecar Injector を使う

Vault の Agent Sidecar Injector を使うと Vault に格納された Secret を Sidecar 経由で Pod に渡したりすることができます。 https://github.com/hashicorp/vault-k8s ここでは、Agent SIdecar Injector の概要を把握し、Vault の PKI Secret Engine で生成した証明...

Vault の TOTP Secrets Engine を使う

Vault には TOTP Secrets Engine があり、TOTP コードの生成や検証が可能になっている。 ここでは、TOTP Secrets Engine を利用し、Go からそれを利用する方法についてメモ程度に書く。 TOTP Secrets Engine を有効にする $ vault secrets enable totp デフォルトでは totp/ という Path になるので、...

How to Bypass Falco

falco のルールは、そこそこ柔軟に書けるのだが、故にバイパスできてしまうよという話。 1. /proc/self/root を使う falco のデフォルトルールに /etc/shadow などが開かれたことを検知するルールがある。 https://github.com/falcosecurity/falco/blob/dev/rules/falco_rules.yaml#L1405 抜粋...

Wazuh API の Ruby クライアントを作った

作りました。https://github.com/mrtc0/wazuh-ruby-client 使い方は README や YARD に書いてあるとおりで、こんな感じで使えます。 Wazuh.configure do |config| config.endpoint = "https://wazuh.local:55000" config.basic_user = &quot...

kamus で Kubernetes の secrets や configMap を暗号化する

Kubernetes の secrets や configMap を管理する際に気をつけることがいくつかあります。 例えば manifests に base64 エンコードされた値が記載されてしまうため、GitOps の場合はリポジトリに平文同然の manifests が置かれることになり、あまりセキュアとは言えません。 この場合 sealed-secrets などを使って暗号化するという方法など...

cxray で falco のルールを生成する

以前 は BPF を使ってコンテナの中のイベントを取得する cxray を作った話を書いた。 cxray で現在取得できるイベントは次の4つ。 起動したプロセス 開かれたファイル TCPv4 での接続先 TCPv4 での network listener cxray のユースケースとして、生成されたイベントをホワイトリストとして定義し、別のモニタリングツールのルールなどに利用することを想定して...