web-dev-qa-db-ja.com

Node.js Express Frameworkのセキュリティ問題

私は、以下にリストされている一般的なセキュリティの懸念に対処するNode/Expressアプリに追加されるべきモジュールを探しています:

  • インジェクションの脆弱性(JavaScript、SQL、Mongo、HTML)
  • セッション固定とハイジャック
  • クロスサイトの脆弱性(スクリプティング、リクエストフォージェリ)
  • 一括割り当て
  • 関連する懸念事項をここに挿入

ご協力いただきありがとうございます!

----------

私が見つけたいくつかのリソース:

すばらしい講演(2012年11月): http://lanyrd.com/2012/asfws/sxzbm/ (スライドを参照)

ServerFaultの質問(2011-2012): https://serverfault.com/questions/285123/is-node-js-mature-for-enterprise-security

トピックに関するブログ投稿(2012年9月): http://codefol.io/posts/29-Why-Rails-and-not-Sinatra-or-Node-js-

エクスプロイトテスター: https://code.google.com/p/skipfish/

Passportモジュール: https://github.com/jaredhanson/passport

EveryAuthモジュール: https://github.com/bnoguchi/everyauth

57
D.Deriso

Writing Secure Express.js Apps の素晴らしい出発点となるブログ投稿を書きました。 zeMircoが言及したように、csrfとヘルメット以外にもいくつかのことをカバーしています。

もう1つは、express.jsとRailsを比較できないことです。彼らはリンゴとオレンジです。たとえば、ExpressにバンドルされているORMはありません。サードパーティモジュールの実装または使用はユーザー次第です。

各懸念事項の内訳をお伝えします。

-Injection Vulnerabilities (JavaScript, SQL, Mongo, HTML)

繰り返しますが、これらはエクスプレスに組み込まれていないものです。最も近いのは、テンプレートへのインジェクションに対するXSSの心配です。エクスプレス出力で一般的に使用されるJadeまたはEJSテンプレートは、デフォルトで<> "'および&をエンコードしますが、JavaScriptまたはCSSへのユーザー入力など、心配する必要がある他のコンテキストがあることを忘れないでください。

-Session fixation and hijacking

再び上記のブログ投稿を参照してください。ただし、Expressは connect ミドルウェアのほとんどに基づいており、これらの1つはセッションミドルウェアです。ここで最大のことは、Cookieフラグを適切に設定することです。

-Cross-Site Vulnerabilities (Scripting, Request Forgery)

上記を参照。 express.csrf()ミドルウェアも付属しています。前述のブログ投稿は、それを実装する方法を示しています。

-Mass Assignment

このタイプの脆弱性を適用できる概念はないため、express.jsの問題ではありませんが、実際に作成するカスタムロジックはこの問題に対して脆弱である可能性があります。そのため、コードが脆弱であるか使用したサードパーティモジュールが...

45
Adam Baldwin

すぐに考えられる2つのモジュール:

  1. csrf :CRSF保護ミドルウェア。
  2. helmet :さまざまなセキュリティヘッダーを実装するミドルウェア
9
zemirco

警戒する必要があるのは、bodyParserです。 http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html を参照してください

7
andrewrk

キャッチオールエラーハンドラーを指定する場合は、サーバーを再起動したり、USERエラー(4xx範囲)DOSの脆弱性につながる可能性があるため。この脆弱性は、express-error-handler、およびサービスはできる限り早く(アクティブな接続が空になったとき、またはタイムアウトが発生したときに)シャットダウンするため、再起動は大したことではありません。この動作を実装すると、エクスプロイトテストに大きな違いが生じました。

ところで、未処理のエラーをすべて無視するのは安全ではありません。これにより、アプリケーションが未定義の状態になり、別の種類のDOS脆弱性が発生します。

1
Eric Elliott