1 ポイント 投稿者 GN⁺ 2025-04-26 | 1件のコメント | WhatsAppで共有
  • Substack エディタで特定のシステムパスを入力すると ネットワークエラー が発生
  • Webアプリケーションファイアウォール(WAF) がこうしたパスをブロックするのは、パストラバーサル攻撃コマンドインジェクション攻撃 を防ぐため
  • セキュリティユーザビリティ のバランスが重要な問題として浮上
  • 技術ライター のための、より良い解決策が必要
  • 代替パス を使うことで問題を回避できる

/etc/h*sts が Substack エディタを妨げるとき: Webコンテンツフィルタリングの冒険

謎のネットワークエラー

  • DNS解決に関する技術記事を執筆中に 予期しないエラー が発生
  • /etc/h*sts パスを入力すると ネットワークエラー が発生し、自動保存に失敗
  • Substack のステータスページでは 正常稼働中 と表示

調査開始

  • 特定のファイルパスを入力したときに エラー が発生し、パスを変形すると 正常動作
  • /etc/h*sts のようなパスではエラーが起きる一方、変形したパスでは問題なし

内部で何が起きているのか?

  • ブラウザの開発者ツールで 403 Forbidden レスポンスを確認
  • Cloudflare が関与

Webアプリケーションセキュリティフィルタを理解する

WAF の簡単な説明

  • Webアプリケーションファイアウォール(WAF) は Webサイトの 警備員 のような役割
  • 疑わしいリクエストを ブロック する

パストラバーサル攻撃: なぜ警戒されるのか

  • パストラバーサル攻撃 は機密性の高いシステムファイルにアクセスしようとする試み
  • /etc/h*sts のようなパスは 攻撃対象 になりうる

コマンドインジェクション: もう1つのセキュリティ問題

  • コマンドインジェクション攻撃 はシステムコマンドの実行を誘発する
  • システムパスへの言及があると、フィルタが ブロック する可能性がある

謎は深まる: 歴史的な例

  • 他の Substack 投稿で類似のパス使用例を発見
  • フィルタリングの挙動がある時点で 変更 された可能性

セキュリティ対ユーザビリティ: 繊細なバランス

  • Substack のフィルタは 保護 のためのものだが、技術ライター にとっては 障害 になる
  • 改善の余地 がある: 明確なエラーメッセージ、技術的内容の認識、文書化された回避策の提供

HTTPレスポンスを見てみる

  • APIレベルで 403 Forbidden ステータスコードを確認

技術コンテンツプラットフォームのための、より良い解決策

  1. コンテキストに応じたフィルタリング: コードブロックや技術的な議論の中でシステムパスを認識する
  2. 明確なエラーメッセージ: 「ネットワークエラー」ではなく、セキュリティフィルタによるブロックであることを説明する
  3. 文書化された回避策: 機微なパスをどう議論するかの方法を提供する

結論: セキュリティと技術ライティングの交差点

  • Substack エディタの問題は、セキュリティ技術ライティング における複雑な課題を浮き彫りにしている

  • セキュリティフィルタによって攻撃パターンに見えるものが、実際には 正当なコンテンツ である場合もある

  • 代替パス を使うことで問題を解決可能

  • 類似のフィルタリング問題を他のプラットフォームで経験したことがあるか、コメントで共有してほしい

1件のコメント

 
GN⁺ 2025-04-26
Hacker Newsの意見
  • CDNでWAFルールを設定する人たちは、技術コンテンツを扱うサイトやサービスを十分に理解していないことが多い。CloudflareだけでなくAkamaiでも同じ問題が起きる

    • データベースを扱うサイトでは、基本的なSQLインジェクション対策ルールを有効にするとサイトが壊れることがある
    • ファイルインクルード用のルールセットもあり、/etc/hosts/etc/passwdのようなものがブロックされる
    • セキュリティと使いやすさのバランスが重要だと思う。すべてのWAFルールを適用すればセキュリティは強化されるが、技術的な概念を議論する必要があるサービスでは不便になる
    • ルールを細かく調整するのは非常に時間がかかる。ルールを維持しつつユースケースを許可するには、多くの変更が必要になる
    • ページが読み込まれない、あるいはリソースが読み込まれないといった問題が起こりうる。ルールを無効にしたくなる誘惑がある
  • ECプラットフォームに関する逸話を思い出す。誰かがメモリリークのあるWebショップを実装し、ログに"OutOfMemoryException"という文字列が現れたらアプリを再起動することで対処していた

    • 別の開発者が顧客の検索語を記録したいと考え、誰かが検索ボックスに"OutOfMemoryException"と入力すると問題が発生した
  • /etc/hosts/etc/./hostsもブロックするのだろうか。これは失敗するしかないモグラたたきのように思える。ハッカーのほうが賢く、しかも執念深いので、実証済みのセキュリティにだけ頼るべきだ

  • Substackが技術系ライター向けにこの状況をどう改善できるかについての意見

    • 人々がどんな話題についてでも文章を編集できるエンドポイントで、愚かなWAFを動かすべきではない
    • これは、Web開発フォーラムでXSSフィルターを実装して、会員がXSSについて話せなくするようなものだ
    • コンテンツを適切にエスケープする方法を学ぶべきだ
  • Webセキュリティにおける保護と使いやすさの緊張関係を示す興味深い例を強調している

    • ただしこのケースはバグを示している。セキュリティと使いやすさの緊張関係は実際に存在するが、これはその例ではない
    • セキュリティと使いやすさの緊張関係は、通常はトレードオフである。セキュリティを強化すればユーザー体験は低下する
    • このケースは悪いセキュリティと悪いユーザー体験の両方を示している
  • 競技プログラミングチームを教えていたときに起きた問題。C++の型やキーワードがコードに現れると403エラーになった

    • 銀行で働いていたとき、Pythonファイルを提出しなければならないAPIがあり、ほとんどのPythonファイルで403エラーが発生した
    • 新しいクラウド環境でも似たような問題が起きている
  • 社内レッドチームがXSSやその他のインジェクション攻撃の試行を含むデータを投稿したときに起きた問題

    • 攻撃自体は機能しなかったが、そのような項目が存在することで社内の管理ページが読み込まれなくなった
  • 古い問題がまた現れた。これはScunthorpe問題と呼ばれる

  • OpenRouterで似た問題を経験した。OpenRouterはさまざまなLLMを利用できる単一エンドポイントを提供するサービスだ

    • 特定のHTMLやJavaScriptの断片がPOSTリクエスト本文に含まれていると、多くのリクエストがブロックされた
  • コンテンツフィルタリングは文脈に大きく依存すべきだ。WAFがフィルタリングすべき対象から切り離されていると問題が起きる

    • スパムフィルタリングに似ている。メールサーバーは送信元サーバーの構成に基づいてフィルタリングする
    • コンテンツベースのフィルタリングよりも配信ベースのフィルタリングのほうが効果的だ。WebサイトとWAFでも同じことが当てはまる