2016年10月21日

バグ発見の報奨金の仕組みも、万能ではない

【田嶋陽子氏、システムのバグ発見で1000万円単位の報奨金を…銀行員11億円着服容疑で提言】
http://headlines.yahoo.co.jp/hl?a=20161014-00000088-sph-soci


田島氏が述べたような方法を採用することで、不正がなくなる、という気持ちはわからなくはないですが、残念ながら万能な方法でもありません。

メディアは、この報奨金の仕組みを素晴らしいと伝える傾向がありますが、現実には運用上の問題もあります。
思うような成果を上げられなかったり、報奨金の仕組みが別の問題を引き起こすこともあります。
例えば、次のような問題点が指摘されています。

■1
脆弱性を発見して報告しても、「問題ではあるが脆弱性ではない」と言われて報奨金をもらえないことがあります。
また、「その脆弱性は他の人からすでに発見しており、今回は報奨金の支払いにはならない」と言われることもあります。
実際、報奨金の支払いは、脆弱性報告全体の1割にも満たないともいわれています。
あるハッカーがこういう経験を積んでしまうと、以後見つけた脆弱性を素直に報告せず、自ら悪用してみる、または悪用する組織に情報提供して利益を受ける、というモチベーションに変わることがあります。
善意の心が、恨みに変わってしまうということです。

■2
外部からはどうやってもアクセスできないシステムに対しては、この報奨金制度は事実上役に立ちません。
今回の銀行員の不正が、原理的に組織内部の人間にしかできない操作だったのであれば、いくら外部の力を借りても発見することはできません。

■3
脆弱性を発見したがる方が、必要以上にシステムに負荷をかけていしまい、正規の利用者がそのシステムを利用できなくなることがあります。
脆弱性報奨金制度を採用する場合、それに備えてシステム増強のコストを積まなくてはならない場合もあります。

■4
報奨金を得る目的で、次のように開発者が悪事を働くこともあり得ます。
・ある開発者がわざと脆弱性を仕込む
・その開発者が脆弱性の報告をするわけにもいかないので、別の人に脆弱性を伝え、報告してもらう
・得た報奨金を、裏でこっそり、開発者と山分けする

■5
思った以上に脆弱性を発見されてしまうと、報奨金支払いが多額になり、財務状況の悪化を招くこともあります。そうなると、そのコストはどこかに転嫁されていくことになります。
へっぽこエンジニアたちによって作られたシステム、仕組みがぐちゃぐちゃになって容易にメンテナンスできないシステムだと、このリスクがあります。

 
といろいろ書きましたが、そもそも不正を防ぐということはなかなか難しいものです。
犯罪者を擁護するつもりは全くありませんが、権限を持つ人がその気になれば、不正は行えてしまうことも多々あるのです。
そういう土壌をなくしていくことは、組織全体で永遠に取り組み続けなければならないことですが、根本的には、外部に頼って解決できるものではないのです。
posted by キヨ at 08:40| Comment(0) | TrackBack(0) | システム開発

2016年10月20日

コマンドプロンプトで、特定のプロセスを切る方法

コマンドプロンプトで下記のコマンドを入力すると、特定のプロセスを切ることができます。

taskkill /F /T /IM excel.exe

子プロセスもろともkillしたい場合は、/Tを合わせて指定します。
posted by キヨ at 20:21| Comment(0) | TrackBack(0) | OS・Windows

2016年10月03日

スタックトレースに行番号が表示されない場合の対処法

例外発生時に、スタックトレースに行番号が書かれていると、ソースコード中のどの箇所でエラーが発生したのかを迅速に把握でき、プログラムの改修をピンポイントで行えるようになります。
スタックトレースに行番号が表示されない場合は、次の原因が考えられます。

■拡張子pdbファイルがない
実行環境に、pdbファイルを配置し忘れたなどの理由が考えられます。
pdbファイルを実行環境に配置すれば、行番号が表示されるはずです。

■pdbファイルの対応付けが誤っている
pdbファイルはあるが、異なるビルドタイミングで生成した拡張子dllやexeのファイルと併存していることが考えられます。例えば、dllファイルは更新したが、pdbファイルを更新せず古いままだった、などが考えられます。
同じビルドタイミングで生成されたdllファイルとpdbファイルを、実行環境に配置すれば、行番号が表示されるはずです。

■VisualStudioの設定
VisualStudioでのビルドの設定により、pdbファイルが生成されない設定になっていることが考えられます。
VisualStudioのプロジェクトのプロパティを開き、
設定項目:ビルド>詳細設定(D)>デバッグ情報
設定値:fullまたはpdb-only
と設定すれば、pdbファイルが生成されるようになります。

本番稼働環境にはpdbファイルを置くな、という意見も多くあります。
ただ、本番環境で万が一不具合が発生した時に、的確に最速でバグを回収して本番環境を再更新が必要とされる要件がある場合には、pdbファイルを置いておくのも一考に値します。
posted by キヨ at 20:40| Comment(0) | TrackBack(0) | .NET技術