🎉

Cloudflare WAF のパスワード漏洩検知機能について

2024/09/30に公開

Cloudflare は CDN と WAF を無償で提供しています。これはインターネットが真に我々の生活に根差すインフラとなった今、社会インフラは全ての人に基本的なセキュリティが提供されるべき、というCloudflare の思想に根差すものです。

無償版のCDN/WAFはクレジットカード不要で利用できさらに基本的なDDoS対策も付随しています。ログの恒久的な保存等の機能はないため企業ユーザーは有償版を利用いただくことをお勧めしています。

Cloudflareの調査によるとインターネットユーザーの約65%はクレデンシャルの漏洩にさらされておりこれは大きな社会的脅威です。今回のアップデートでWAFに標準ルールとしてパスワードの漏洩検知機能が加わりました。このルールはデフォルトでオンとなっておりユーザーの通信を邪魔しないモードで全てのCloudflareアカウントにデプロイされています。漏洩が検知された場合でもデフォルトでは一切の挙動を変更しませんが、設定変更によりブロックやMFAの要求、追加認証の要求等に切り替えることが出来ます。

やってみる

https://zenn.dev/kameoncloud/articles/6d2dec59232917
まずいつも通りWebサーバを起動します。

<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome </h1>

<form action="/login" method="POST">
    <label for="username">ID:</label><br>
    <input type="text" id="username" name="username"><br><br>

    <label for="password">Password:</label><br>
    <input type="password" id="password" name="password"><br><br>

    <input type="submit" value="Submit">
</form>

</body>
</html>


WAFのクレデンシャル漏洩をテストするため単純にID/パスワードの入力を求めるだけのサイトです。

Cloudflare経由でこのサイトにアクセス出ることを確認した後、マネージメントコンソールからセキュリティWAFにアクセスします。

管理ツールのタブに自動で以下のルールが含まれています。

デフォルトでは検知は行うものの何もしない状態になっています。ルールの設定を以下に変更保存します。

username1@example.com,password1でログインしてみて下さい。
以下のようにCloudflare側で通信をブロックしていることがわかります。

検索対象とデータベース

上記の例ですとusername,passwordが検索対象なっていますが、全てのPOSTされる値が検索対象となるわけではありません。以下のアプリケーションがデフォルトで用いているID/Pパスワード用入力項目が用いられています。以下のアプリケーションじゃないと動作しないわけではなく、POSTされるパラメータのフィールド名を合わせれば動作します。
・Drupal
・Joomla
・Ghost
・Magento
・Plone
・WordPress
・Microsoft Exchange OWA

Enterpriseプランのユーザーはチェック対象のフィールドを変更できます。詳しくはこちらをご覧ください。
https://developers.cloudflare.com/waf/detections/leaked-credentials/

検索対象データベースはCloudflareが独自で収集している漏洩したID/パスワードリストに加え以下のサイトを利用しています。
https://haveibeenpwned.com/
興味がある方は以下のサイトに対して普段利用されているIDやパスワードを入力してみて下さい。過去漏洩しているかどうかを検知して教えてくれます。

Discussion