研究者, ダニエル・ル・ガル, Facebookのサーバーの1つに深刻な脆弱性が発見されました. 研究者は、でホストされているセントリーサービスを見つけました 199.201.65.36 ホスト名sentryagreements.thefacebook.com, Facebookに属するIP範囲をスキャンしている間 -199.201.65.0/24.
Facebookサーバーでのリモートコード実行: 技術的な詳細
セントリーとは? これは、Djangoフレームワークを使用してPythonで記述されたログコレクションWebアプリケーションです。.
研究者はまた、, 彼がセントリーアプリを見ている間, 一部のstracktraceは、特別な理由なしに定期的にページに表示されます.
ユーザーパスワードのリセット機能に関して、アプリケーションが不安定なようです, 時々クラッシュしました, 彼が追加した, Djangoデバッグモードがオフになっていないことに注意してください, その結果、スタックトレースが発生したときに環境全体が出力されます.
でも, Djangoが重要な情報を切り取る (パスワード, 秘密, 鍵…) それらのスタックトレースで, したがって、大量の情報漏えいを回避します.
研究者はもっとよく見ることにしました, そして彼はセッションのクッキー名を見つけることができることに気づきました, さまざまなオプション, ピクルスとして知られているシリアライザーと同様に. 簡単に言えば, Pickleはのバイナリプロトコルです (国連)Pythonオブジェクト構造のシリアル化, それらのクラスやメソッドなど.
任意のピクルスコンテンツを含む独自のセッションを作成できた場合, システム上でコマンドを実行できます,」ダニエル 了解しました.
それにもかかわらず, DjangoがセッションCookieに署名するために使用するSECRET_KEYは、スタックトレースでは使用できません. さらに, SENTRY_OPTIONSリストには、system.secret-keyという名前のキーが含まれています, 切り取られていない. セントリーのドキュメントによると, system.secret-keyは、「セッション署名に使用される秘密鍵です。. これが危険にさらされた場合は、それを再生成することが重要です。そうしないと、ユーザーセッションを乗っ取るのがはるかに簡単になります。」
研究者が指摘したように, 状況は「一種のDjangoSECRET-KEYオーバーライド」.
このすべての情報を使用する, ダニエルはできた 任意のPickleコンテンツを使用して悪意のあるCookieを偽造するスクリプトを作成する. 後者には、SentryCookieをオーバーライドするためのペイロードが含まれていました. このCookieは後で任意のオブジェクトで上書きされました. この脆弱性をテストするには, 研究者は、実際の損傷の原因を回避するために30秒の時間遅延を実装しました. 彼の試みは成功した.
攻撃者は、セキュリティの脆弱性を悪用してシステムをリモートで乗っ取り、Facebookサーバーからデータを盗んだり、その他の悪意のあるアクティビティを実行したりする可能性があります。. ただし、強調する必要があります, それ サーバーにユーザーデータが見つかりませんでした, この欠陥のために露出したのではないか.
ダニエルは7月に彼の発見をFacebookに報告しました 30, 2018, 会社はサーバーを停止することでバグをすばやく認識しました. パッチは8月に発行されました 9, そして研究者は授与されました $5,000 欠陥を報告するため.
去年, セキュリティ研究者, アンドリュー・レオノフ, 受賞した $40,000 Facebookに代わって ソーシャルネットワークの侵害とリモートコード実行の脆弱性の修正 すでに発見され、修正されました 2016. どうやら, 脆弱性にもう一度対処する必要がありました. 欠陥はまだウェブサイトに影響を与えていました.