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
が突然ファーウェイと通信し始めたりするとよろしくないということだ
対応は単純に特殊な名前の属性は処理をスキップするというもの