created: 2020-07-28T03:23:16.000Z

lodash@4.17.16 の脆弱性修正について

4.17.16 にていくつかの脆弱性が修正されている

template, zipObjectDeep あたりを使ってトリッキーなコードをかいていなければ挙動に変更はなさそうである

sourceURLに改行をふくめないように

差分はこちら

ブラウザにはsourceURLという仕組みがあり、デバッグ時のコードの断片に名前をつけておくことができる。これはevalされるコードやインラインのjsコードをデバッグしたい時に使われる

sourceURL の記法はインラインコメントにて定義するというものだが、インラインコメントなのでこの文字列に改行を含められてしまうと、コメント外に任意のjsコードが配置できるということになってしまう

これまでは [\r\n] をサニタイズしていたが、マルチバイトの改行文字列もサニタイズしとかないといけなかったということで \s をサニタイズするように変更されている。そもそも sourceURL に特殊な不可視文字は必要ないのだろう

prototype pollution 対応

差分はこちら

jsではオブジェクトの prototype, constructor といった名前の属性が特別な意味を持っているが、jsは動的な言語なのでこれらの属性は後から書き換えることができてしまう。

この特性が悪用される脆弱性を prototype pollution と呼ぶ。たとえばライブラリをロードしただけで jQuery#ready が突然ファーウェイと通信し始めたりするとよろしくないということだ

対応は単純に特殊な名前の属性は処理をスキップするというもの