Help us understand the problem. What is going on with this article?

axiosのmaxContentLengthの脆弱性について(2019/05/31)

先に結論

axiosを使ってる人は脆弱性があるのでv0.18.1以降に上げましょう
axiosを使っていない人は関係ないのでブラウザバックして大丈夫です。

axiosはJavaScriptのメジャーな通信系のライブラリです。
xhrで実装されているため、レガシーなブラウザやマルチブラウザに対応しています。
https://github.com/axios/axios

GitHub上でセキュリティアラートが・・・

GitHub上でセキュリティアラートが上がっていました。(2019/05/30確認時点)
スクリーンショット 2019-05-30 20.08.56.png

どうゆう脆弱性?

スクリーンショット 2019-06-01 20.24.34.png

Axios up to and including 0.18.0 allows attackers to cause a denial of service (application crash) by continuing to accepting content after maxContentLength is exceeded.

maxContentLengthを超えた場合でも通信処理が行われていて、アプリケーションに負荷をかけ続けるという脆弱性のようです。

詳細は修正のプルリクの例を見たほうがわかりやすいです。
https://github.com/axios/axios/pull/1485

この例だと、100%を超えても通信処理が呼ばれ続けています。

  ticks parent  name
  61777   81.0%  /lib/x86_64-linux-gnu/libc-2.23.so
  61542   99.6%    LazyCompile: *Buffer.concat buffer.js:423:25
  61437   99.8%      Function: ~handleStreamData /home/resure/something/node_modules/axios/lib/adapters/http.js:165:52
  61437  100.0%        Function: ~emitOne events.js:114:17
  61437  100.0%          Function: ~emit events.js:156:44
  61437  100.0%            Function: ~addChunk _stream_readable.js:261:18

axios側の対策

#1485の対応でstream.destroy()関数を呼び出して通信処理を破棄しています。
Destroy stream on exceeding maxContentLength
https://github.com/axios/axios/pull/1485/files
(というかこのプルリク自体は2018/4月からあるのでaxiosチームも認知はしてたんですね・・・)

この脆弱性の対応のために、axiosはv0.19に上がりました。(2019/05/31)
#1485の対応はv0.19に入ってるのでバージョンを上げれば大丈夫のはずです。
追記#1485の対応だけ分離してv0.18.1が出来ていたので、v0.19に一気に上げるよりもこちらを使ったほうが無難そうです。
https://github.com/axios/axios/releases

teradonburi
気管支喘息を患って死にかけです。 いつ死ぬかわかりません。 成人喘息は誰でもなりえるものだし、 咳喘息から気管支喘息に進行すると慢性的な死の危険があるものです。 自身や周りで数週間咳が続いてる人がいたら気をつけて・・・ Twitterフォローいただけたらフォロバします。 https://twitter.com/teradonburi
meetsmore
プロを探せる見積りプラットフォーム「ミツモア」の開発・運営
https://meetsmore.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした