最新

おおいわのこめんと (2016-06)


2016-06-20

[Security] Webとセキュリティとソフトウェア工学

超久しぶりに、かつ真面目な内容で更新です。

徳丸浩さんのTwitterでの

何度でも言うが、自力でトラブルシューティングできない人や組織は、自前でWordPres立ててはいけない / “一般ブロガーがAmazon Web Service(AWS)で独自ドメインのWordpressサイトを10分で作る方法…”
に対して、 山田さんの(恐らく)達観したコメント
「こうやってセキュリティが素人プログラマーや、見習いプログラマーを殺すんだろうなぁ。想像していたとはいえ、現実になってくると絶望しかない。」
を、 奥くんのコメント経由で見たわけです。

正直なところ、徳丸さんの元のコメントには100%同意で、山田さんもわかった上での達観なんだと思うのです(少なくとも「批判」ではないと思う)が、 ソフトウェア科学→セキュリティ→ソフトウェア工学 と仕事がどんどん移ってきた人間として、色々と思うところはあります。

90年台に日本で民用 Internet の黎明期を見てきた人間は、自分自身も含めてアリアハンで「ひのきのぼう」でスライムを倒しながら経験積んできてるんですよね。 そういう思いからすると、「危ないから銅の剣で外を素人が歩くな」というのは心情的には悲しいのですが、 そうは言ったって、外をドラゴンとかが跋扈している状況じゃ、仕方がないってものです。RPGと違って人に迷惑かかりますし。 で、本当の問題は「銅の剣」の部分だと思うのです。

個人的には、今のWebや組込みシステムや制御システムのセキュリティ問題の根幹に、 「システム全体の複雑度の増加に対して、ソフトウェアの作り方の工学の発展が全くフォローしていない」 ことがあると思っています。 外部との界面や外部からの攻撃も多様化し、ソフトウェア自身の機能も大幅に増えて複雑化していて、「正しいソフト」を作るのすら大変になってきているのに、 それを支えるソフトウェアセキュリティの機構はというと、せいぜいCからJavaやPythonやRubyに変わったことで、バッファオーバーランを防げるようになったくらい。 規模の問題の方はOOPなりフレームワークなりアジャイル+テストファーストなり、それなりに頑張ってきたと思うのですが、セキュリティに関しては正直、「銅の剣」か「たけやり」レベルと思っています。*1 WAFとか「被せる」「監視する」タイプの防衛策は進展していますが、振る舞いベースの「攻撃らしい」「攻撃らしくない」判別タイプの検知は、有効性はすごくあっても本質的な「バグに対する解決」ではないわけです。

以前から情報漏えい事故とかでも気になっているのですが、Unixローカルシステムの頃はアカウントの概念がシステムにあって、アプリの動作と関係なくシステム側でファイルの所有権は管理していたのに対して、 Webになって認証もアプリ動作も複雑になったのに、データは DB のシステムアカウントに全部フラットに格納して*2、アプリケーションのロジックだけでアクセス制御をするようになった辺りから、 なんか「退化しているんじゃないか」という気はしているのです。 もちろんUnixの機構をそのまま使えって意味ではなく、同じレベルのアクセス制御をちゃんとWebシステムの根底に設計して入れるべきではないか、という意味です。

自分自身が趣味ベースでのソフトウェアを昔ほど書かなくなったのも、敵をよく知っているからこそ、趣味ベースで銅の剣では戦う気にならなくなってしまったわけで。 商業ソフトを書いている人たちは素直にすごいと思いますが、Lv99の人たちが銅の剣で「戦えてしまっている」が故に、それでよし、となってしまっている面もある気がしています。

今本当に必要なのは、ちゃんと初級者(20年前の自分のレベル)でも当時と同じくらいには安全なシステムを作れるような、ソフトウェア工学的に本質的に「高性能な武器」を、ちゃんと考えて開発することなんじゃないかと思います。 「Lv1の勇者がいきなりドラゴン倒せる武器ってどんなもんだ」って感じですけど、どちらかというと必要なのは「よろい」の方かな。 これはLv1の入門者だけじゃなくて、Lv99の熟練者にとっても、本質的なプログラムをいかに安く快適に正しく作れるか、という意味で重要だと思うのです。 もちろん「何となくシステムがセキュリティを守ってくれるもの」というのではなく、「自然とセキュアな正しいプログラムが書ける」もの、という方向性であるべきです。 こういう事を言うことは、セキュリティ兼ソフトウェア科学兼ソフトウェア工学 というラベルになってしまった自分の仕事を増やすだけなんですけど、 プログラミングが好きでこの世界に入った人間として、プログラミングが楽しくない状況は素直に悲しいので、職業としてというよりも、一探求者としての研究者として、「何とかしたい」という思いはあります。

*1 セキュアプログラミングとかの best practice 系はそれなりに蓄積がありますが、RPGの例えで言えばどちらかといえば「訓練でLvを上げて、竹槍でドラゴン倒しましょう」の方向だと思うのです。

*2 DB暗号化はありますが、アプリ作成者側の認証と結びつくものはあっても、アプリ利用者側のアカウント等と紐ついたりするものは、なかなか「欲しいもの」が見つかっていません。


大岩 寛 (おおいわ ゆたか) <yutaka@oiwa.jp.nospam ... remove .nospam> .

Copyright © 2005-2014 Yutaka OIWA. All rights reserved.
Posted comments and trackbacks are copyrighted by their respective posters.

記事の内容について (Disclaimer / Terms and Conditions)