on
Issue 3
- 🗞️ Article
- The State of Messaging Security 2020: メールおよびメッセージングアプリのセキュリティプロトコルの現在
- CVE-2020-15157 “ContainerDrip” Write-up
- Discord デスクトップアプリの RCE
- GitHub - RCE via git option injection (almost) - \$20,000 Bounty
- GitHub Gist - Account takeover via open redirect - \$10,000 Bounty
- GitHub Pages - Multiple RCEs via insecure Kramdown configuration - \$25,000 Bounty
- SECRET FRAGMENTS: REMOTE CODE EXECUTION ON SYMFONY BASED WEBSITES
- Deprecating document.domain
- Chrome の新しいパスワード保護とその他の情報
- table_to_xml 関数と SQL インジェクション
- 💣 CVE
- 🧰 Tools
- 💰 BugBounty
- 🚚 Intent to Ship
🗞️ 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 には layers
に url
というフィールドが利用できる。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
パッケージの ReadUvarint
と ReadVarint
に不正な値を与えることで、無制限に読み取りさせることができた。
🧰 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
fs.realpath.native
on darwin may cause buffer overflow- https://hackerone.com/reports/965914
- MacOS 上で node.js の
fs.realpath.native
を使うことで Buffer Overflow が起きる問題
- HTTP Request Smuggling due to CR-to-Hyphen conversion
- https://hackerone.com/reports/922597
- node.js では HTTP リクエストヘッダの CR を
-
に変換するため HTTP Request Smuggling につながる
- Chrome の
serviceWorker
のbackgroundFetch
経由で HeapOverflow - LdaNamedProperty is generated for typed_array[“4294967295”], which causes wrong inline cache and OOB access
🚚 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 まで延長する予定。