セキュリティマイスターコラム 第10回
つながる時代のものづくりxセキュリティを実現する
人材が育まれるセキュリティ勉強会(前編)

富士通グループの現場エンジニアがセキュリティを学ぶ「セキュリティマイスター勉強会」という勉強会があります。オープンソースカンファレンスやSECCONなどの業界横断の取り組みで得た知見や、仕事で得た知見を皆で持ち寄って、実機にて学ぶ場です。
この実機にて学ぶ場を「セキュリティマイスター道場」として一般公開することにしました。第一回目を2018年3月23日「みなとみらいInnovation & Future Center Camping studio」で行ないました。今回は、2回に分けて「セキュリティマイスター道場」でどんなことを行なっているのかレポートします。
前編は、オープニングセッションとエミュレーターシステムのコール処理に潜在するセキュリティ的な危険性について学ぶセッションを紹介します。
学生を含む参加者およそ30名。SECCON参加者の姿も。
「つながる時代」に重要度を増すセキュリティバイデザイン
あらゆるモノがインターネットに繋がりさらなる価値を生み出す「つながる時代」。そんな時代にこそ、ものづくりとセキュリティの融合「ものづくりxセキュリティ」がビジネスのために必要です。
あらゆる機器がつながっている時代になっています
そこで重要となってくるのが「セキュリティバイデザイン」というアプローチ。新しくモノを作る際にはセキュリティ対策も一緒にデザインするという考えです。
富士通では、この「セキュリティバイデザイン」実践のため、ものをつくるエンジニアがセキュリティマイスターとなり、業務後楽しく「セキュリティマイスター勉強会」を通してセキュリティを学んでいます。日々多様化するサイバー攻撃からお客様を守るためには、継続的なスキル向上が欠かせません。
今回新たな取り組みとして、この勉強会を学生・一般向けにオープンにしました。若い参加者同士や、興味のある人がつながっていくことでコミュニティが広がり、健全な心とスキル向上にもつながってほしいという思いから、ハッシュタグ「#secdojo」を作って広げていきます。また、「グラフィックレコーディング」によって難解なセキュリティ技術を分かりやすく取り組んでいただくことにも挑戦してます。
これからも、エンジニアが集う明るい場づくりをどんどん頑張っていきたいと思いますのでぜひ活用してください。
富士通株式会社
セキュリティマイスター 佳山 こうせつ
組込でよく使われるエミュレータを題材に安全な解決策を提示
SECCON2017決勝サーバ弐の問題作成の裏側
このセッションは、SECCON2017決勝の問題であるQEMU上で動く「脆弱性のある多種アーキテクチャー向けのサーバプログラム」と実行ファイルを題材に進めました。
日本は組込機器を作るマイコン天国ですので、組込マイコンでよく使われるものを題材にすることで低レイヤーへの興味を持ってもらいたいという思いで作成しています。
QEMUは広く利用されている多種アーキテクチャー対象のエミュレータで、高速に動き、組込分野でも広く利用されています。QEMUソースコードに、標準ではOFFになっているsemihostingと言う機能に任意のコマンドが呼び出せる機能があるのを発見し、これを活用しました。
問題となるサーバプログラムの脆弱性を利用してキーワードファイルの内容を読むと攻撃点が得られ、フラッグファイルに追記すると防御点が得られます。
手元のPCで問題を解きながらの聴講
組込環境ではないか?と判断できるかが分かれ道
競技サーバに入っているQEMUのシステムコール番号を見ると通常のLinux環境とは異なります。ここで組込環境だと気づくのが解法への道なのです。
ここまできたらあとは以下の流れで解いていきます
- exitを調べ、そこでsemihosting_exit()という関数が呼び出されている事に気付く
- 関数呼び出し後の無限ループに入らずに終了できているため、semihosting_exit()に何かあると気づく
- semihostingという文字列からQEMUのソースコードにあるsemihostingが有効になっていることに気付く
- semihosting の中にopenや read/writeがあるので、その機能を使って読み書きすれば得点獲得
今回の問題では、QEMUにsemihostingという機能があるという事を知らなくても、解析を進めるうちにsemihostingに気付き、QEMUのソースを読んで解析する技量を求めています。
出題の意図は、実務でも役立つ問題解決力の幅を広げること
ホスト資源にアクセスできるsemihostingは -semihostingオプションを付けないと有効にはならない機能です。このため単純に考えるだけだと、そのオプションを有効にしなければ危険は無い、と考えてしまいがちです。しかし、あるプログラムに対して「このプログラムを実行するためにはQEMU -semihostingオプション有効で起動してください」という説明があり、業務のためにはそのプログラムを実行せざるを得ない状況だったとしたら、どうしますか?
こんな時、semihostingやQEMUを解析する力を持っていれば、安全な解決策を提示することが可能です。
例えば、QEMUのsemihosting処理を改造してシステムコールが呼ばれたときに、その種類や引数を表示して強制終了させる仕組みの提案、また、ログを取って問題がないことを他人に証明できる環境作成、といったことです。
この様に、低レイヤーを知っていれば、エンジニアとしてより高度な問題解決能力を発揮できるでしょう。今回の問題が、低レイヤーを学ぶきっかけになればと思います。
次回は、LinuxカーネルにおけるMeltdown脆弱性の解決策とセキュリティコンテスト「SECCON」2017決勝サーバ壱の問題紹介とその背景、バイナリかるた、の後編をレポートします。
会議の内容を一枚の絵で表す「グラフィックレコーディング」の議事録
2018年6月20日
「セキュリティ」に関するお問い合わせ・ご相談
Webでのお問い合わせ
-
入力フォームへ
当社はセキュリティ保護の観点からSSL技術を使用しております。
お電話でのお問い合わせ
-
富士通コンタクトライン (総合窓口)
0120-933-200(通話無料)受付時間:平日9時~17時30分(土曜・日曜・祝日・当社指定の休業日を除く)