Issue 3

🗞️ Article

The State of Messaging Security 2020: メールおよびメッセージングアプリのセキュリティプロトコルの現在

メールやメッセージングアプリのセキュリティプロトコルについての歴史と現在の状況についてまとめた文書。
PGP や E2E 暗号化について非常によくまとまっている。

CVE-2020-15157 “ContainerDrip” Write-up

CVE-2020-15157 の Writeup. CVE-2020-15157 は細工された Docker Image などを取得すると、レジストリにアクセスするためのクレデンシャルが漏洩する containerd の脆弱性。
Image Manifest V2 の Spec には layersurl というフィールドが利用できる。containerd はイメージの pull 時に、この URL に対してアクセスを行うが、プライベートリポジトリの場合には認証のためのクレデンシャルも付与される。   これを利用して、攻撃者は細工した Docker Image をターゲットに Pull させることでプライベートリポジトリの認証情報を取得することが可能。

Discord デスクトップアプリの RCE

Electron の contextIsolation オプションの不使用と外部コンテンツの XSS、CVE-2020-15174 を組み合わせた RCE の解説。

GitHub - RCE via git option injection (almost) - \$20,000 Bounty

GitHub Enterprise で git コマンドのオプションをインジェクションできた脆弱性。ブランチ名を細工することで git diff-tree にオプションとしてインジェクション可能であったため、 --output を利用して任意ファイルに書き込みを行っている。

GitHub Gist - Account takeover via open redirect - \$10,000 Bounty

url_for に対して request.query_parameters.merge(...) 相当のことが行われていたため、リクエストに script_name=... を付与することで、XSS および Open Redirect に持ち込めた。

GitHub Pages - Multiple RCEs via insecure Kramdown configuration - \$25,000 Bounty

kramdown の input オプションと formatter を利用して RCE に持ち込む話。

SECRET FRAGMENTS: REMOTE CODE EXECUTION ON SYMFONY BASED WEBSITES

Symfony には /_fragment で実行される FlagmentListner と呼ばれるクラスがあり、これを利用して任意の PHP コードを実行できる。
ただし、リクエストには HMAC を利用して署名する必要があり、これは secret として Symfony で設定されている。

この secret は ezPlatform や Bolt CMS の特定のバージョンではデフォルト値が判明している他、使い方によっては CSRF トークンなどからブルートフォース可能な問題を指摘している。

Deprecating document.domain

document.domain は Same Origin Policy のバイパスにつながるため、廃止をする提案。

Chrome の新しいパスワード保護とその他の情報

Chrome の .well-known/change-password URL のサポートや  Mixed Contents のブロックに関する案内。

table_to_xml 関数と SQL インジェクション

PostgreSQL の table_to_xml 関数を利用して SQL インジェクションに利用する方法。

💣 CVE

CVE-2020-15136 : Gateway TLS authentication only applies to endpoints detected in DNS SRV records

etcd の TLS 認証不備の脆弱性。TLS 認証は --endpoints で指定されたエンドポイントに対して認証されず、内部で解決される DNSSRV レコードで確認されたエンドポイントにしか設定されない。

CVE-2020-16845 : encoding/binary: ReadUvarint and ReadVarint can read an unlimited number of bytes from invalid inputs

Go の encoding/binary パッケージの ReadUvarintReadVarint に不正な値を与えることで、無制限に読み取りさせることができた。

🧰 Tools

moloch–/burp-multiplayer

Burp Suite の画面をリアルタイムで Burp Suite 同士で sync できる extension.

msrkp/PPScan

Client Side Prototype pollution を検知するための Chrome Extension. Gadget は https://github.com/BlackFan/client-side-prototype-pollution にある。

Cloud Security Tools

クラウドのセキュリティツールに関するまとめ。

💰 BugBounty

🚚 Intent to Ship

Anchor target=_blank implies rel=noopener by default

Tabnapping 攻撃の Mitigation として blink では _blank のリンクは rel=noopener の挙動になった。
Tabnapping 攻撃については https://blog.jxck.io/entries/2016-06-12/noopener.html が詳しい。

Treat localhost addresses as “Potentially Trustworthy”

Firefox で localhost を Secure Context として扱うように変更。

Intent to Extend Origin Trial: Trust Token API

Trust Token API の Origin Trial が M91 まで延長する予定。