Yuruhuwa Develop
first_security_report
はじめに
卒業を控えた2月末、WordPressのプラグインから脆弱性を発見し、報告することができました。
今回は、脆弱性調査から実際に報告した流れを記します。
CVEが発行された場合はまた別の記事にでも書こうと思います。
きっかけ
Webセキュリティの脆弱性について触れることが多くなり、この学びをどこかに発散したかった。
そして、脆弱性の第一発見者になってみたかったから。
また、他校の卒業展にて未知の脆弱性の発見, 報告が題材の出展があり、お話を聞いたことが引き金でもあります。
特にRCEなどマシンを掌握する脆弱性についてはハッカー感が満載でロマンがあります。
密かに在学中にCVE採番を目指していました。
調査対象の選定
まずは調査したい対象のシステムを探します。
セキュリティに強いひとたちの話や、バグハンター記事を探すと、大きいコアシステムではなく、小さいサブシステムが穴場である。という情報を得ました。
それらを踏まえて、プラグインなどの小さい規模のプログラムに目を向けることにしました。
ただ、やみくもに調査することは時間が足りませんし、疲れてしまいます。
ユーザ入力を受け取る箇所と実際に発火する関数の箇所を見るほうが断然に楽です。
製品名は伏せますが、とあるWordPressのプラグインに着目しました。
例えば、以下のようなコードがあればかなり怪しいです。
<?php
if isset($_POST['user_input']) {
$user_input = $_POST['user_input'];
}
else {
$user_input = '';
}
?>
ユーザ入力をそのまま受け取って $user_input に格納しています。
ユーザ入力から何が渡されるかはわからないので、有害な文字列を受け取ってもおかしくないです。
例えば、;cat+%2Fetc%2Fpasswd# という文字列を受け取ってしまう場合を考えると、コード内部で shell_exec() や exec() や system() や passthru() などに $user_input を引き渡していると、PHPでOSコマンドインジェクションが成立してしまいます。
<?php
$user_input = ';cat /etc/passwd#'
$origin_name = 'test'
exec(mv $origin $user_input) // ファイル名を任意の名前に変更できる想定
?>
値を入れて組み立てると、以下のようになります。
<?php
exec(mv test ;cat /etc/passwd#)
?>
こうなると、 mvコマンドのフォーマットが崩れ、実行されなくなります。
その後、セミコロンから後のコマンドが解釈されて、 catコマンドが実行されます。
また、シャープはPHPにおける一行コメントアウトです。
exec関数がまだ後ろに続く場合、コメントアウトすることによって、エラーや別の処理を止めます。
このように、コードを眺め、$_POST や $_GET などのメソッドをどういった使い方をしているかを中心に調べて行きました。
また、WordPressはCSRFの対策を明示的にしないといけない(WordPress側にはセキュアな処理がない)ので、OSコマンドインジェクションとCSRFを探しました。
it_omamori
ITに関するお守りがあるよ
神田明神では、 コンピューターの機能安全祈願 と呼ばれるお守りがあります。
オンラインで初穂料を納めることによって、このお守りが手に入りました。
入手先は、インターネットからオンライン授与所で購入できました。
見た目はこんな感じで、

包装された状態
金色の台紙に
- お守り
- シール1 数センチ四方
- シール2 数センチ横向き長方形
という内容です。
スマホのケースに長方形のシールを仕込んだり、財布にお守りを忍ばせたりと、ご利益をフルにいただく構えです。
学校の友だちに紹介されて、即購入。
秋葉原にはたまに、電子機器を買いに行くので、テンションが上がります。
初詣はまだなので機会を見計らって、行こうと思います。
…keyboard_silencing_mod
キーボード静音化への道
デスクトップPCで使うキーボードがうるさいという問題があるので
今回はキーボードの静音化に挑戦しました。
主に底打ち音(低音) とキーがカチャカチャ響く音(高音) を改善したいのです。
静音化するには
まずはじめに、静音化にはどのようなことをすればよいのかを紹介します。
静音化に関する方法は複数ありますが、今回は、有名どころの以下3つを試してみようと思います。
- lube mod
所要時間: 2時間30分
→ 潤滑剤をキースイッチ内部に塗布することによって、キーの押下時と解放時の打鍵音を軽減させる。
また、打鍵感もしっとりとした手触りになり、キータッチが楽しくなる。 - tape mod
所要時間: 15分
→ キーボード内部のPCBの裏面にマスキングテープを貼り付けることによって、キーの押下時の底打ち音を低減させる。比較的簡単なmod。 - clay mod
所要時間: 30分
→ キーボード内部に粘土を敷き詰めることによって、キー押下時の打鍵音の響きを低減させる。
高音が響く場合に効果が見られる。
使うもの
- キーボード本体
- 分解工具
- キープラー
- キースイッチプラー
- キースイッチオープナー
- 精密ドライバー
- パーツオープナー
- 静音化用品
- エアコン配管用パテ
- マスキングテープ
- 潤滑剤
作業開始
キーボード紹介
僕のキーボードは Drunkdeer a75 というキーボードです。

キーボード全体像
静電容量無接点方式 と呼ばれるメカニカルキースイッチを採用しており、Webドライバからキーコンフィグの設定が可能な点が特徴です。
そして、いわゆる、Rapid Triggerと呼ばれる機能もあるので、FPSのゲームで活躍するところも魅力的です。
キーキャップは、アリエクで買ったハングル印字のABS樹脂のものを使っています。
おもちゃチックな見た目ですが、こだわりの一品という感じで気に入っています。
韓国語でチャットをするので、韓国語の印字は必須です。
キーキャップを外す
キーキャップをキープラーを使って外していきます。
メカニカルキーボードを購入すると大抵は付属していることが多いです。
金属のワイヤータイプから、プラスチックのものまでさまざまですが、ワイヤータイプの方が、キーキャップを傷つけずに外せるのでおすすめです。
外したキーキャップは食器用洗剤で洗って干しておきます。
キースイッチが接する箇所は水気が溜まりやすいので、エアダスターで吹き込むか、衝撃を与えて、水気を切るといいです。

キーキャップ

キーキャップなしのキーボード

取り出したメカニカルキースイッチ
購入してから2年間掃除していなかったので、汚かったです…

汚れが目立つ

汚れが目立つ2