1 ポイント 投稿者 GN⁺ 2024-07-21 | 1件のコメント | WhatsAppで共有
  • あるセキュリティ研究者が、a16z関連のサブドメイン portfolio.a16z.com で、Herokuインスタンスの process.env 全体 がJavaScriptに動的に含まれている状態を発見した
  • 露出していた値には、DATABASE_URLAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSALESFORCE_CLIENT_SECRETOKTA_CLIENT_SECRETMAILGUN_API_KEY など、複数の サービス認証情報 が含まれていた
  • 研究者は、lunchcat でJSファイル内のシークレットを探す通常のチェック中にAWSキーへの参照を見つけ、ブラウザの開発者ツールの Sourcesタブ だけで確認できたと述べた
  • 影響範囲にはPIIを含むデータベース、AWS、Salesforce、Mailgunが含まれており、Mailgunではa16zドメインから任意のメール送信や過去のメール閲覧が可能だったと主張した
  • a16zは、公の場で連絡を試みたことを理由に バグバウンティを支払わず、研究者はメインサイトに連絡先がなく、見つけたメールアドレスも不達だったと述べた

サブドメイン調査中に露呈した環境変数

  • 研究者はTwitterで企業を見つけた後、素早くペネトレーションテストを行う方法で対象を探しており、Relevant People タブをよく使うと述べた
    • 今回の経路は、crypto 関連企業 → cryptoベンチャーキャピタル → a16z cryptoa16z へとつながった
  • a16zの調査過程で一般的な サブドメインスキャン を実施し、lunchcat ツールでドメインチェックとJSファイル内のシークレット検出を行った
  • portfolio.a16z.com は、a16z傘下の企業向けの ポートフォリオ管理ツール のように見え、チェック中にWebサイトのどこかでAWSキーへの参照が検出された
  • JSの中には、Herokuインスタンスの process.env 全体と思われる値が動的に入っていた
    • 含まれていた項目には、MARKETPLACE_URLDATABASE_URLSALESFORCE_CLIENT_IDSALESFORCE_CLIENT_SECRETOKTA_CLIENT_SECRETSESSION_SECRETMAILGUN_API_KEYAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYCOOKIE_SECRETHEROKU_POSTGRESQL_CRIMSON_URL などがあった
    • 研究者は認証情報をすぐに確認し、偽物ではなく実際の認証情報 のように見えたと述べた
    • アクセスはブラウザの開発者ツールで Sourcesタブ を開く程度だったと説明した

露出し得る範囲とバグバウンティをめぐる議論

  • 研究者が挙げた侵害され得るサービスは次のとおり
    • データベース: PIIを含んでいたと述べた
    • AWS: 露出したキーを通じてアクセスできる可能性が言及された
    • Salesforce: 直接確認はしておらず、アカウント権限が限定的である可能性があるとも付け加えた
    • Mailgun: a16zドメインから任意のメールを送信でき、過去のメールも読めたと述べた
    • その他にも存在する可能性に言及した
  • a16zは、研究者が非公開で連絡せず公に連絡を試みたことを理由に バグバウンティを支払わなかった
  • 研究者は公に連絡した理由として2点を挙げた
    • a16zのメインサイトで利用できる連絡先を見つけられなかった
    • 見つけられたメールアドレス宛に送ったメールが不達になった
  • 関連記事として TechCrunchの記事 が添付されており、研究者がa16zに連絡しようとして投稿したツイートをLorenzoが見て連絡し、記事を書いたと述べている

1件のコメント

 
GN⁺ 2024-07-21
Hacker News のコメント
  • 私たちのオープンソースプロジェクト([https://github.com/heyPuter/puter/](https://github.com/heyPuter/puter/))を公開したとき、Eva はかなり広範にペネトレーションテストをしてくれ、脆弱性報告も非常にプロフェッショナルに対応してくれた。
    当時はバグバウンティプログラムもなかったのに報酬を求めることもなく、Eva は優秀で責任感のあるハッカーなので、a16z はもっときちんと遇するべきだ。

  • 似たようなミスをしたことがある。
    apostrophecms という Node.js CMS を使っていて、global settings という管理者パネルを認証サーバーの API キー管理に使っていたのだが、数か月後になってようやく、その値が HTML ソースコードに出力されることに気づいた。
    JavaScript から使えるようにするための仕様で、ドキュメントにも書かれていたのでそちらを責めるつもりはないが、私たちが雑に見過ごしていた。
    さらに腹立たしいのは、大手コンサルティング会社にかなりの金額を払ってペネトレーションテストを受けたのに、彼らも見つけられなかったことだ。結局自分たちで発見し、ログを確認したところ悪用された形跡はなさそうだったが、かなり衝撃的な漏えいだった。

    • そのペネトレーションテストについては、少なくとも返金を求めると思う。
      これまで見てきたペネトレーションテストは、チェックボックスを埋める以上のものだったことがない。
    • ApostropheCMS の使用中に予期しない露出を経験したとのことで、本当に残念だ。
      あなたの言うとおり、このデータ共有の方式はドキュメントに書かれていたが、それでも驚くことはあり得る。
      今後調べる人のために補足すると、現在サポートされている Apostrophe のメジャーバージョンは、もうこのようには動作しない。
      ログアウト状態のフロントエンドにデータを注入するには、開発者が意図的に選択する必要があり、こうした驚きを避けるためにそのように変更された。
      ただし、特定のウィジェットの設定やコンテンツの一部として API キーを含める必要があるユースケースは今もある。
      ちなみに私は Apostrophe のデザイン責任者であり、エンジニアリングの役割も担っている。
    • なぜ Web ベースのコンテンツ管理システムをシークレット管理に使ったのか気になる。
    • 修正:apostrophe cms を責めたいわけではない。
      この状況は、私たちのマルチテナント構成と apostrophe への理解不足が原因で起きた。
    • 「ドキュメントにあったので責めない。私たちが雑に見過ごした」と言っているが、それでも彼らを責めるべきだ。
      危険な挙動をドキュメント化したからといって免責されるわけではなく、この教訓はもう広く知られているべきだと思う。
  • 新しいサービスを作って ACME でサーバーに LetsEncrypt 証明書を付けると、すぐにログがゴミのようなリクエストで埋まる。
    開発者が開けたままにしがちな甘いデフォルトを探すボットがあからさまに見えるし、プロセス環境ファイルをリクエストしてくるのを見たことすらある。
    こういう脆弱性がどうして発見も悪用もされなかったのか分からない。a16z が非常に幸運だったのか、あるいはすでに悪用されているが公になっていないだけかもしれない。
    善意の研究者か、ホワイトハット精神のある退屈した人が先に連絡したということだ。こうした不注意に法的な枠組みがないのは残念だが、a16z は多額の罰金を科されるべきだと思う。

    • 「こういう脆弱性がどうして発見も悪用もされなかったのだろう?」
      もしかすると、すでにされていたのかもしれない。
      ただ壊すよりも、これを開けたままにしておくほうが価値があったのかもしれない。
    • 公平に見ると、メインサイト自体はそれほど興味深そうではない。
      ただ、OKTA のような認証情報がいくつかあるのはかなり危険に見える。
  • 「公に連絡してきたためバグバウンティは支払わなかった。そうした理由は、メインサイトに連絡先がなく、見つけた engineering@a16z.com はメールがバウンスしたからだ」という部分は、会社のお金を節約する賢いライフハックのように見える。
    エンジニアリングチームに非公開で連絡する手段をなくしておけば、すべてのバグバウンティ報告が公に行われることになり、そうすれば何も支払わなくて済むからだ。

    • いろいろな意味で賢いね。
      開発も fiverr みたいなところで人を買いたたいて相当節約したのだろうし、ロシアのランサムウェアグループが簡単に持っていけば、会計コストも間接的にかなり節約できそうだ。
    • しかし次回は、セキュリティ研究者にその情報を報告せずに売るよう学習させることになる。
    • 会社が支払わないために別の「ハッキング」をする必要はない。
      公開されたバグバウンティプログラムがないなら、借りは何もない。
      そのうえ https://a16z.com/connect の下部に連絡用メールアドレスがあるのに、研究者は都合よく見落としている。
      責任ある開示というより、知名度を狙ったように見える。
    • こういうことが繰り返されると、バウンティを払わないところとして知られるようになり、人々が見つけた問題を報告する可能性も下がる。
    • HN に a16z のエンジニアリングと連絡を取る方法を尋ねる投稿をしていたら、かなり成果があったと思う。
  • 企業が「ハッキングされた」と言うとき、今では「重要な認証情報を適切に保護できなかったが、私たちが『ハッカー』と呼ぶ無名の主体に責任を押し付けてほしい」という企業向け表現のように聞こえる。

    • 玄関のドアをうっかり全開にしていて、誰かに物を全部盗まれたなら、それでも「盗まれた」と言うだろう。
      「住居侵入」「窃盗」「不法侵入」といった法的な区分があり、ドアが開いていたかどうかが違法性や処罰に影響することはあり得るが、日常表現としてはやはり盗まれたのだ。
  • これほど大きく開いた穴に対して、象徴的な金額のバウンティすら払わないのはかなりひどい。

    • 次に誰かが彼らのキーを見つけたら、この投稿を見て、報告する代わりに公開 GitHub リポジトリに上げてしまうかもしれない。
  • 彼らは巨大な生成 AI アーキテクチャのホワイトペーパーを書くのに忙しい。
    少し休ませてあげよう。半分できただけのチャットボットたちが動き回る未来のエージェント世界を夢見ているのだから。
    世界は壊れたソフトウェアアップデートで燃えているというのに。

    • 世界はすでに気候変動の影響で燃えている。
      金曜日の壊れたソフトウェアアップデートは、その上に添えられた仕上げの一筆だ。
    • 「engineering@a16z.com はメールがバウンスした」
      まったく驚かない。
  • 実際に Salesforce インスタンスへアクセスできたのだとしたら、創業者の立場では非常に不安だったはずだ。
    通常 Salesforce のような場所にはメールが記録されており、その中にポートフォリオ企業の創業者たちが外部に共有していない資金調達計画や M&A 計画が残り続けている可能性があるからだ。

    • Web ページの公開ソースコードからキーを収集することは合法で、安全に報告できる。
      しかし、そのキーで権限のないシステムにアクセスすることは犯罪だ。
      この違いは非常に大きい。
    • LP 情報が含まれているなら、それもかなり大きな被害になり得る。
  • この VC 会社がこれほど大きなセキュリティホールにバグバウンティを支払わなかったという事実は、信頼を抱かせない。

  • HN の運営がタイトルをあまり恥ずかしくないものに変えたね。
    驚きではない。

    • 私のコメントも a16z に批判的すぎたのかもしれない。
      スコアの変化はないのに、一番上から一番下へ移動している。
      応答を提供する方法も本当にいろいろあるね。