2020-06-02 HTTP request smuggling / Passive Event Listeners / Rail view_context
HTTP request smuggling
HTTP request smuggling is a technique for interfering with the way a web site processes sequences of HTTP requests that are received from one or more users. Request smuggling vulnerabilities are often critical in nature, allowing an attacker to bypass security controls, gain unauthorized access to sensitive data, and directly compromise other application users.
What is HTTP request smuggling? Tutorial & Examples | Web Security Academy
様々なサイバー攻撃に繋がる脆弱性 HTTP リクエストスマグリング | yamory Blog
HTTP リクエストスマグリング(Http Request Smuggling, HRS)は、フロントエンドの Web サーバー(リバースプロキシー、ロードバランサーなど)とバックエンドの Web サーバーで、 HTTP リクエストに対し異なる解釈をしてしまうことで発生する脆弱性です。
解釈の違いを引き起こす例のひとつに、Content-Length ヘッダーと Transfer-Encoding ヘッダーの両方を持つリクエストがあります。
POST / HTTP/1.1 Host: example.com Content-Length: 44 Transfer-Encoding: chunked 0 GET / HTTP/1.1 Host: attacker.com X:
上記のようなリクエストを攻撃者が送り、フロントエンドのサーバーが Content-Length の方を解釈してそのままリクエストを送り、バックエンドのサーバーは Transfer-Encoding を解釈して以下のような 2 つのリクエストとして認識した場合、HTTP リクエストスマグリングの脆弱性を受け、悪意のある attacker.com のようなサイトへ誘導される可能性があります。
POST / HTTP/1.1 Host: example.com Content-Length: 44 Transfer-Encoding: chunked 0 GET / HTTP/1.1 Host: attacker.com X:
CVE-2020-25613 Ruby WEBrick
HAProxy では Content-Length を使って解釈し、WEBrick では Transfer-Encoding を使って解釈することで WEBrick 側では 2 つのリクエストと認識してしまいます。
この問題の修正として以下のように正規表現をより厳格なものへと変更しています。
when /\Achunked\z/io then read_chunked(socket, block)
Improving Scroll Performance with Passive Event Listeners
envet.preventDefault
よりは passive event listener が最近のナウい実装っぽいという話
解説記事はこちらを参照されたし。
そして、登録したリスナが Passive Listener であることを明示するのが、今回追加された passive フラグである。
この値は、同じく今回追加された addEventListener() の第三引数に渡す Event Listener Options で指定する。
document.addEventListener('touchstart', handler, {passive: true});
Passive Event Listeners によるスクロールの改善 | blog.jxck.io
Rails view_context
An instance of a view class. The default view class is ActionView::Base.
ActionView::Rendering | RailsDoc(β)
主なユースケースとしては controller から helper method を callするケースかな。
view_context.helper_method