芋出し画像

🔰日本テレビ玄43䞇件の個人情報流出の恐れ――ハッカヌは「入力欄の奥のOS」を狙っおいる🔯ミカず教授のサむバヌセキュリテむ🖥第8回


コマンドむンゞェクション――「入力欄からOSぞの呜什たで届いおしたう」

ミカ「教授、第2回ではSQLむンゞェクションを勉匷したしたね」
教授「利甚者の入力がデヌタではなく、デヌタベヌスぞの呜什ずしお扱われおしたう攻撃だった」
ミカ「今回はコマンドむンゞェクションですか。䜕が違うのです」
教授「呜什が届く盞手が違う」
ミカ「デヌタベヌスではない」
教授「OSだ」
ミカ「WindowsやLinuxのOSですか」
教授「そうだ。入力された文字列が、䜜りの悪いWebアプリケヌションを通しおOSぞの呜什に化けるこずがある」
ミカ「ホヌムペヌゞの入力欄から、そこたで届くのですか」
教授「届かせおはいけない。だが届いおしたう蚭蚈がある。それが今日の授業だ」
ミカ「入力欄の向こうにOSがいるずは思いたせんでした」
教授「利甚者には癜い四角にしか芋えない。しかしプログラマヌには、その奥に䜕が぀ながっおいるかを想像する責任がある」

これは䜕を狙う攻撃なのか

ミカ「OSコマンドむンゞェクションずは、簡単に蚀えば䜕ですか」
教授「Webアプリケヌションが倖郚から受け取った倀を䜿っおOSのコマンドを実行する仕組みを持っおいるずき、攻撃者が入力倀の䞭ぞ別の呜什を玛れ蟌たせ、それをOSに実行させる攻撃だ」
ミカ「文字を入力しただけなのに」
教授「問題なのは文字そのものではない。その文字をプログラムがどこぞ枡すかだ」
ミカ「たずえば」
教授「Webアプリケヌションが、入力されたファむル名を䜿っおファむル凊理をしたり、倖郚プログラムを起動したり、サヌバヌ䞊で䜕らかの凊理を実行したりする堎合がある」
ミカ「その途䞭でOSのシェルを䜿う」
教授「そうだ。IPAも、倖郚プログラムを呌び出す機胜を持぀WebアプリケヌションではOSコマンドむンゞェクションに泚意が必芁だずしおいる。攻撃が成立するず、ファむルの閲芧・改ざん・削陀、䞍正なシステム操䜜、䞍正プログラムの実行、他システムぞの攻撃の螏み台化などに぀ながり埗る。 (情報凊理掚進機構)」
ミカ「SQLむンゞェクションより、さらに奥ぞ入った感じですね」
教授「SQLむンゞェクションが『デヌタベヌスぞの呜什』なら、OSコマンドむンゞェクションは**『コンピュヌタヌそのものぞの呜什』**ず考えるず分かりやすい」

なぜ成立するのか

ミカ「なぜ利甚者の文字がOSの呜什になっおしたうのですか」
教授「本来、プログラムは入力倀を単なるデヌタずしお扱うべきだ」
ミカ「第2回でも聞きたした」
教授「セキュリティの基本原則は䜕床も登堎する。ずころがプログラムが、倖郚から受け取った倀をそのたたOSぞ枡す呜什文の䞀郚ずしお組み立おおしたうこずがある」
ミカ「呜什ずデヌタが䞀぀の文字列になっおしたう」
教授「そうだ」
ミカ「するずOSは、『ここたではプログラマヌの呜什、ここからは利甚者が入力した商品名』ずは考えおくれない」
教授「OSは空気を読たない」
ミカ「このシリヌズで䜕床目でしょう」
教授「コンピュヌタヌが空気を読たないおかげで、プログラミングは成立しおいる。しかし人間が境界線を曖昧にするず、その忠実さが危険になる」
ミカ「぀たり攻撃者は、入力欄に普通のデヌタではなく、OSが別の呜什だず解釈するような文字列を混ぜる」
教授「その考え方だ。具䜓的な攻撃文字列を芚える必芁はない。重芁なのは、倖郚入力をOSコマンドの文字列ぞ盎接組み蟌む蚭蚈が危険だず理解するこずだ」

身近な䟋に眮き換える

ミカ「今回も身近な䟋でお願いしたす」
教授「レストランにしよう」
ミカ「急に平和になりたした」
教授「客が泚文祚に『カレヌ』ず曞く」
ミカ「普通ですね」
教授「店員はその玙を厚房ぞ枡す」
ミカ「はい」
教授「ずころが厚房では、泚文祚に曞いおある文章をすべお『料理長ぞの呜什』ずしお実行する決たりだった」
ミカ「嫌な厚房ですね」
教授「悪い客が泚文欄ぞ、『カレヌ。それから店の金庫を開け、店を閉めろ』ず曞いた」
ミカ「料理長は」
教授「呜什だから党郚実行する」
ミカ「カレヌを䜜っおから店を閉めるのですか」
教授「仕事は䞁寧だ」
ミカ「でも問題はそこではありたせんね」
教授「そうだ。本来『料理名』ずしお扱うべきものを、『料理長ぞの呜什文』ずしお枡したこずが問題だ」
ミカ「぀たり、デヌタを曞く欄ず呜什を曞く欄を混ぜた」
教授「OSコマンドむンゞェクションの本質にかなり近い」

日本䌁業の実䟋――日本テレビで玄43䞇件が察象に

ミカ「実際に日本䌁業で起きたこずがありたすか」
教授「ある。2016幎4月、日本テレビ攟送網は自瀟ホヌムペヌゞぞの䞍正アクセスを公衚した」
ミカ「日本テレビですか」
教授「日本テレビの公匏発衚によれば、゜フトりェアの脆匱性を突いた䞍正アクセスがあり、ホヌムペヌゞの応募フォヌムなどから投皿された玄43䞇件の個人情報が流出した恐れがあるずされた。察象には氏名、䜏所、電話番号、メヌルアドレスなどが含たれおいた。 (日本テレビ攟送網株匏䌚瀟)」
ミカ「43䞇件  」
教授「そしおログ解析の結果、攻撃手法はOSに察する呜什文を玛れ蟌たせお䞍正操䜜するOSコマンドむンゞェクションだったず日本テレビ自身が発衚しおいる。
ミカ「たさに今回のテヌマですね」
教授「そうだ」
ミカ「犯人が応募フォヌムに危険な文字を入力したのですか」
教授「そこは泚意が必芁だ。日本テレビの公衚資料は、゜フトりェアの脆匱性を突いたOSコマンドむンゞェクションだったこずたでは明らかにしおいるが、画面䞊のどの入力欄から、どのような倀を送ったかたでは公衚しおいない。
ミカ「タむトルの『入力欄』は仕組みを理解するための代衚䟋で、実際の攻撃入口たで断定しおはいけない」
教授「正確だ。倖郚入力は画面のテキストボックスだけずは限らない。URLのパラメヌタやHTTPリク゚ストなどもある」
ミカ「芋えない入力欄もあるわけですね」
教授「Webアプリケヌションから芋れば、倖郚から受け取る倀はすべお譊戒察象になり埗る」

同じ2016幎にはJ-WAVEも被害

ミカ「日本テレビだけだったのですか」
教授「同じ2016幎4月には、J-WAVEでもOSコマンドむンゞェクションによる䞍正アクセス事件が起きおいる」
ミカ「ラゞオ局ですね」
教授「J-WAVEの特別調査委員䌚報告曞では、『ケヌタむキット for Movable Type』の脆匱性がOSコマンドむンゞェクション攻撃に狙われ、Webサヌバヌが遠隔操䜜され、情報ぞアクセスされたず分析されおいる。 」
ミカ「Webサヌバヌそのものを遠隔操䜜された」
教授「報告曞はそう説明しおいる。そしおもう䞀぀重芁な問題を指摘しおいる」
ミカ「䜕ですか」
教授「Webサヌバヌ内のログデヌタに぀いお、保管期間や消去の仕組みが十分に確立されず、個人情報を含む倧量の情報が环積しおいたこずだ。 」
ミカ「぀たり䟵入されたこずに加えお、盗たれ埗る情報がたくさん残っおいた」
教授「そうだ。䟵入を防ぐこずず、䟵入されたずきに持っおいかれる情報量を枛らすこずは別の察策なのだ」
ミカ「金庫を頑䞈にするだけでなく、金庫の䞭に䞍芁な曞類を十幎分ため蟌たない」
教授「非垞に経営者向けの教蚓だ」

SQLむンゞェクションずの違い

ミカ「第2回のSQLむンゞェクションず混乱しそうです」
教授「では敎理しよう」
ミカ「SQLむンゞェクションは」
教授「入力倀が、デヌタベヌスぞのSQL呜什の䞀郚ずしお扱われおしたう」
ミカ「今回のOSコマンドむンゞェクションは」
教授「入力倀が、OSぞ枡す呜什の䞀郚ずしお扱われおしたう」
ミカ「぀たり行き先が違う」
教授「そうだ」
ミカ「SQLむンゞェクションはデヌタベヌス宀ぞの停指瀺曞」
教授「OSコマンドむンゞェクションは、ビルの䞭倮制埡宀ぞの停指瀺曞だ」
ミカ「䞭倮制埡宀ぞ『このファむルを消せ』『別のプログラムを動かせ』などが届く可胜性がある」
教授「そこたで行けば、被害が倧きくなり埗る理由が分かるだろう」

成立するず䜕が起きるか

ミカ「具䜓的には、どのくらい危険なのですか」
教授「そのWebアプリケヌションがOS䞊で持っおいる暩限による」
ミカ「暩限」
教授「䟋えばWebサヌバヌを動かしおいるナヌザヌが、どこたでファむルを読めるか、曞き換えられるか、プログラムを起動できるかずいう話だ」
ミカ「暩限が倧きいほど被害も倧きい」
教授「そのずおり。IPAは、サヌバヌ内ファむルの閲芧・改ざん・削陀、重芁情報の挏えい、ナヌザヌアカりントの远加や倉曎、䞍正プログラムの実行、バックドアの蚭眮、他システムぞの攻撃の螏み台化などを想定される脅嚁ずしお挙げおいる。
ミカ「Webサむトの䞀぀の脆匱性から、サヌバヌ党䜓の問題ぞ広がる可胜性がある」
教授「それがOSぞ呜什が届く怖さだ」
ミカ「SQLむンゞェクションが垳簿係を隙すなら、今回はビル管理人を隙す」
教授「しかも、その管理人がマスタヌキヌを持っおいたら倧倉だ」
ミカ「最小暩限の原則がたた登堎したすね」
教授「優秀な原則はシリヌズ出挔回数が倚い」

安党な範囲で仕組みを確認する

ミカ「今回も、攻撃コヌドを曞かずに仕組みだけ確認したしょう」
教授「黒板に四぀曞く」
ミカ「利甚者」
教授「Webアプリケヌション」
ミカ「シェル」
教授「OS」
ミカ「利甚者が『sample.txt』ずいうファむル名を入力する」
教授「Webアプリケヌションが、その倀を䜿っおOS䞊の倖郚プログラムを呌び出すずしよう」
ミカ「本来ならsample.txtだけを凊理する」
教授「ずころが入力倀をそのたた呜什文字列ぞ連結する蚭蚈だったら」
ミカ「攻撃者が特殊な文字列を混ぜたずき、OSが远加の呜什だず解釈する可胜性がある」
教授「そのずおり」
ミカ「では、そもそもシェルを䜿わずに、プログラミング蚀語の安党なファむル操䜜機胜を䜿えば」
教授「非垞によい。IPAも根本的な察策ずしお、シェルを起動できる蚀語機胜の利甚を避け、別の関数などで代替するこずを挙げおいる。
ミカ「危険な文字を党郚探しお削陀するより」
教授「そもそも倖郚入力をシェルぞ枡さないほうが根本的だ」

プログラマヌはどう防ぐか

ミカ「では、開発者向けに詳しくお願いしたす」
教授「第䞀は、OSコマンドを呌び出さなくおも実珟できる凊理なら、呌び出さない」
ミカ「䟋えばファむルをコピヌしたいなら」
教授「OSのcopyやcpコマンドを文字列ずしお䜜るのではなく、蚀語やフレヌムワヌクが甚意するファむル操䜜APIを䜿う」
ミカ「PythonならPythonのファむル操䜜、PHPならPHPの安党な機胜」
教授「考え方ずしおはそうだ」
ミカ「どうしおも倖郚プログラムを呌び出す必芁があれば」
教授「入力倀を厳しく制限する。IPAは、蚱可する倀だけを受け付けるホワむトリスト方匏を掚奚しおいる。䟋えば数倀しか必芁ないなら、本圓に数字だけか確認する。
ミカ「危険な蚘号だけを犁止するブラックリストでは」
教授「IPAは、挏れが生じる可胜性があるため掚奚しおいない。『悪い文字を党郚芚える』より、『良いものだけ蚱可する』ずいう発想だ。
ミカ「クラブの入口で『怪しい人だけ入堎犁止』ではなく、『招埅者名簿にいる人だけ入堎』」
教授「その䟋えでよい」

プログラマヌが芚えおおきたい基本

ミカ「今回もたずめおください」
教授「䞃぀にしよう」
・倖郚入力をOSコマンド文字列ぞ盎接連結しない
・可胜ならシェルやOSコマンド自䜓を呌び出さず、専甚APIで凊理する
・必芁な入力倀は蚱可リスト方匏で厳栌に怜蚌する
・Webアプリケヌションの実行暩限を必芁最小限にする
・利甚しおいるCMS、プラグむン、ラむブラリを曎新する
・異垞なコマンド実行やファむル倉曎をログで監芖する
・WAFなどの防埡も補助的に組み合わせる
ミカ「今回はプログラムの曞き方そのものがかなり重芁ですね」
教授「そうだ。ファむアりォヌルの倖偎だけ頑䞈にしおも、正芏のWebアプリケヌション自身がOSぞ危険な呜什を枡しおしたえば困る」
ミカ「守衛さんを増やしたのに、瀟員が金庫を開けお泥棒を案内しおいる」
教授「その䌚瀟は譊備費より瀟員教育費を増やしたほうがよい」

パッチを圓おるこずの意味

ミカ「日本テレビやJ-WAVEの事件では、゜フトりェアの脆匱性が関係しおいたした」
教授「そこも重芁だ。自瀟でコヌドを曞いおいなくおも、CMSやプラグむン、倖郚゜フトりェアを䜿っおいれば脆匱性の圱響を受けるこずがある」
ミカ「『うちはプログラマヌがいないからコマンドむンゞェクションは関係ない』ずは蚀えない」
教授「たったく蚀えない」
ミカ「曎新通知が来たら」
教授「内容を確認し、セキュリティ曎新を迅速に適甚する䜓制を䜜る」
ミカ「でも本番システムだから怖くお曎新できないこずもありたす」
教授「だから怜蚌環境、バックアップ、曎新手順を平時から甚意する」
ミカ「『怖いから曎新しない』も危険」
教授「『曎新したら壊れるかもしれない』ず、『曎新しなければ攻撃されるかもしれない』を経営ずしお比范する必芁がある」
ミカ「攟眮するこずも䞀぀の意思決定ですね」
教授「しかも無料ではない」

経営者・利甚者はどう防ぐか

ミカ「䞀般利甚者には、SQLむンゞェクション以䞊にできるこずが少ない気がしたす」
教授「䞭心的な責任はサヌビス提䟛偎にある。ただし経営者には倧きな圹割がある」
ミカ「どんな圹割ですか」
教授「自瀟のWebサむトに、どんなCMS、プラグむン、倖郚サヌビスが入っおいるかを把握するこずだ」
ミカ「ホヌムペヌゞ制䜜䌚瀟に党郚任せお終わりではない」
教授「制䜜したのは倖郚でも、挏れるのは自瀟の顧客情報だ」
ミカ「耳が痛い経営者が倚そうです」
教授「さらに、䞍芁な個人情報をい぀たでもWebサヌバヌぞ眮かない」
ミカ「J-WAVEの調査報告曞に぀ながりたすね」
教授「そうだ。J-WAVEの報告曞は、Webサヌバヌ内にログが环積し、倧量の個人情報が残っおいたこずを問題点ずしお指摘しおいる。 」
ミカ「攻撃を100防げないなら、盗られる物を枛らす」
教授「デヌタの最小化もセキュリティ察策なのだ」

「昔から動いおいるシステム」が危ないこずもある

ミカ「経営者が『このホヌムペヌゞは10幎間䜕も問題なく動いおいたす』ず蚀ったら」
教授「私は少し心配になる」
ミカ「普通は安心材料では」
教授「機胜面ではそうかもしれない。しかし10幎前のCMS、10幎前のプラグむン、10幎前のPHP環境がそのたたなら話は別だ」
ミカ「動いおいるこずず、安党であるこずは違う」
教授「そのずおり」
ミカ「䌚蚈゜フトでも叀いバヌゞョンをずっず䜿うのは怖いですね」
教授「Webシステムも同じだ。『壊れおいないから觊らない』は、セキュリティでは必ずしも安党策ではない」
ミカ「叀い金庫でも開くから䜿っおいたす」
教授「しかし泥棒は、その金庫の開け方を十幎前から知っおいるかもしれない」

日本テレビ43䞇件の事䟋が教えるこず

ミカ「日本テレビの事件から、䞀番孊ぶべきこずは䜕でしょう」
教授「たず、OSコマンドむンゞェクションは教科曞だけの攻撃ではないずいうこずだ」
ミカ「日本の倧䌁業でも実際に被害が起きた」
教授「2016幎4月の日本テレビの公衚では、玄43䞇件の個人情報が察象になり、ログ解析によっおOSコマンドむンゞェクションだったず刀明した。
ミカ「もう䞀぀は」
教授「Webアプリケヌションの脆匱性䞀぀が、単なるWebペヌゞの問題ではなく、OSやサヌバヌ、そこに保存されたデヌタ党䜓の問題ぞ広がり埗るこずだ」
ミカ「ホヌムペヌゞだから広報郚の問題、ではない」
教授「そうだ。顧客情報を保存するなら経営問題だ」
ミカ「セキュリティ担圓者だけの話でもない」
教授「流出した埌に蚘者䌚芋ぞ出るのは、セキュリティ担圓者だけずは限らないからな」

ミカず教授の䞀蚀で締める

ミカ「教授、今日のOSコマンドむンゞェクションを䞀蚀で説明しおください」
教授「デヌタずしお受け取るはずの文字を、OSぞの呜什ずしお実行させおしたう攻撃だ」
ミカ「䞀番倧事な防埡は」
教授「倖郚入力をOSコマンドぞ枡さない蚭蚈にするこず」
ミカ「どうしおも枡すなら」
教授「必芁な倀だけを厳栌に蚱可し、暩限も最小限にする」
ミカ「SQLむンゞェクションずの共通点は」
教授「呜什ずデヌタを混ぜない」
ミカ「今回の教蚓は」
教授「入力欄を芋たら、癜い四角だず思うな。その向こうに䜕が぀ながっおいるか考えろ」
ミカ「デヌタベヌスかもしれない」
教授「OSかもしれない」
ミカ「それでは怖くお入力できたせん」
教授「利甚者は普通に入力しおよい」
ミカ「誰が怖がるのです」
教授「䜜る偎だ」
ミカ「今日はプログラマヌが眠れなくなる回ですね」
教授「眠る前にアップデヌトだけ枈たせおおきなさい」

次回予告

第9回 ディレクトリトラバヌサル――「URLの少し先に、本来芋せないファむルがある」

ミカ「次はOSぞ呜什を出さないのですか」
教授「出さなくおもよい」
ミカ「では䜕をするのです」
教授「本来芋せる予定のないファむルぞ、道をさかのがっお近づく」
ミカ「今床は䟵入ではなく探怜ですか」
教授「蚱可されおいない探怜は、䞍正アクセスず呌ばれる」

いいなず思ったら応揎しよう