はじめに
バッファオーバーフローって文字列見るとバッファロー🦬が邪魔してきますよね。
今回はGoogle Chromeがバッファオーバーフロー(BOF)の脆弱性に伴うアップデートを発表したのに関連して、いろいろ調べてみたという記事です。
https://news.yahoo.co.jp/articles/889726c974041402ef2cf9e932b54939a80378ab
バッファオーバーフローとは
プログラムが確保したメモリの領域を超えて領域外のメモリを上書きし、その結果意図しないコードを実行される攻撃です。

参考①:https://www.intellilink.co.jp/article/column/ctf01.html
参考②:https://www.ipa.go.jp/archive/security/vuln/programming/cc/chapter10/cc10-1.html
今回はWebGLというブラウザ上のAPIにこの脆弱性があったようです。
ブラウザのアーキテクチャ

ブラウザのプロセスは上記のような分類になっています。
そしてレンダラプロセスが各タブに割り当てられるメリットとして「プロセスのサンドボックス化」があります。
Chrome ブラウザでは、レンダラ プロセスなどの任意のユーザー入力を処理するプロセスに対して、任意のファイルへのアクセスが制限されています。
参考:https://developer.chrome.com/blog/inside-browser-part1?hl=ja
このおかげで通常レンダラプロセスでなにか不正なプログラムが実行されても「そのタブが開いているページの情報を盗む」といった攻撃はできても、ファイルシステムに直接アクセスするといった操作はできないようになっています。
ただ、WebGLが利用するGPUプロセスではレンダラプロセスより強い権限で動作する結果、サンドボックス外へ影響を及ぼすため今回は重大な脆弱性として位置づけられています。
サンドボックスは通常、侵害されたレンダリングプロセスによるファイル、デバイス、その他の機密性の高いシステムリソースへのアクセスを制限します。サンドボックスを回避すると、攻撃者はデータ窃盗、永続的なアクセス経路の確立、マルウェアの展開、あるいは企業環境内でのさらなる侵入といった能力を大幅に拡大できます。
余談
このバッファオーバーフローはJavaなどの言語では起こりません。CやC++みたいな直接メモリを操作できる言語を利用した場合に発生します。そういった背景からchromeのRustへの置き換えといった動きも進められているようです。