Check Copy Contents(CCC) の利用における注意点

WordPress

Check Copy Contents(CCC)はブログをコピーされたときに通知を行うことのできるプラグインです。

このプラグインには最新のバージョン(v1.4.1)のプログラムに問題があるため使用には注意が必要です。

追記:2019/5/4

4/25 に報告してすぐに対応されました。

メンテナーが恐らく修正を放棄したため、クローズになり現在はダウンロードできません。

使用している人は削除をお勧めします。

想定される攻撃

プログラムの欠陥を利用することでCCCの設定はすべて変更することが可能です。

したがって通知先のメールアドレスを適当な企業などに、通知メールの件名を脅迫めいたものにそれぞれ変更され、なりすましの犯罪予告に利用される可能性があります。

フロント側はCSRF対策がされていますが、コピーされた文章だけではなくURLやIP、リファラなどの情報もAjaxで送られたものをそのまま使用する仕様になっているため、これらも容易に書き換えることが可能であり、そのリスクはさらに高くなります。

見てわかる通り、メールの内容のほとんどの箇所を偽装することが可能です。
定型文が入りますが、書き換えられた文章の量を増やしたり文章を工夫することでごまかすことは可能です。

また送信元は変わらずブログに設定されたメールアドレスのままです。

対策

このプラグインを今後も使用する場合は各自で対策を行う必要があります。

プログラムの修正による対策

2か所プログラムを書き換えることで対応することが可能です。

views/admin.php 22行目 を修正

if (isset($_POST['mail'], $_POST['subject'], $_POST['reply'], $_POST['letters'])){

以下のように修正します。

if (isset($_POST['ccc_nonce']) && wp_verify_nonce($_POST['ccc_nonce'], 'ccc_nonce') && isset($_POST['mail'], $_POST['subject'], $_POST['reply'], $_POST['letters'])){

views/admin.php 103行目 の後ろに追記

<form action="" method="post">
<table class="type01">

の箇所にnonce生成のコードを追加します。

<form action="" method="post">
<?php wp_nonce_field('ccc_nonce', 'ccc_nonce');?>
<table class="type01">

運用による対策

CSRFは主にサイト運営者のログイン状態を悪用します。

したがって自分のサイトのコメント欄や掲示板などのリンクをクリックする場合に、自分のサイトにログインしていない状態かどうかを確認してください。

シークレットウィンドウを利用するのもよいでしょう。

普段から記事を書く時以外、ログアウトしておくと安心です。

補足

送信元の情報としてAjaxでPOSTされた値を使用していることも問題です。

IP情報に関しては以下の修正で改善されます。

check-copy-contents.php 169行目 を修正

$remote_addr = $_POST['remote_addr'];

以下のように修正します。

$remote_addr = $_SERVER["REMOTE_ADDR"];

 

この脆弱性は自作のCSRF検出プラグインによって発見されました。

CSRF検出プラグインを作成しました
GitHub機能SQLの実行 及び nonceのチェック を監視します。nonceのチェック が行われる前に create insert update delete などの SQLコマンドが実行 されたときに...

コメント

タイトルとURLをコピーしました