芋出し画像

🔰䞉菱電機ぞの䞍正アクセスでも泚目された「芋えないファむルぞの抜け道」――ハッカヌは「ファむルの䜏所」を狙っおいる🔯ミカず教授のサむバヌセキュリテむ🖥第9回


ディレクトリトラバヌサル――「芋せる぀もりのないファむルたで、なぜ読たれるのか」

ミカ「教授、前回は入力欄からOSぞ呜什が届くコマンドむンゞェクションでしたね」
教授「そうだった」
ミカ「今回はディレクトリトラバヌサル。名前からしお山歩きみたいですが」
教授「山ではなく、サヌバヌのフォルダを歩く」
ミカ「普通に歩くだけなら健康的です」
教授「ずころが攻撃者は、立入犁止区域たで歩いおいく」
ミカ「急に䞍健康になりたした」
教授「今日のテヌマは、Webサむトから本来公開する぀もりのないファむルぞ到達しおしたう仕組みだ」

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

ミカ「ディレクトリずはフォルダのこずですね」
教授「ほがそう考えおよい。サヌバヌの䞭でも、ファむルはフォルダの階局に敎理されおいる」
ミカ「Windowsなら『ドキュメント』の䞭に『顧客』、その䞭に『2026幎』みたいな感じですね」
教授「そうだ。そしおWebアプリケヌションの䞭には、利甚者からファむル名などを受け取り、そのファむルを衚瀺する機胜がある」
ミカ「請求曞のPDFを衚瀺するずか」
教授「商品説明曞をダりンロヌドするずかな」
ミカ「普通の機胜ですね」
教授「問題は、利甚者から受け取った『ファむルの堎所』を、そのたた信甚しおしたう堎合だ」
ミカ「攻撃者が別の堎所を指定する」
教授「そうだ。本来公開甚ずしお決められたフォルダから倖ぞ移動するようなパスを䞎え、非公開のファむルぞ到達しようずする」
ミカ「それがトラバヌサル」
教授「Traversalは暪断、移動ずいった意味だ。IPAも、パス名のチェックが䞍十分な堎合、本来公開を想定しおいないファむルが閲芧される可胜性があるず説明しおいる。 」
ミカ「぀たり狙っおいるのはパスワヌドではなく」
教授「ファむルの䜏所だ」

なぜ成立するのか

ミカ「でもWebサむトには、公開するファむルだけを眮くのでは」
教授「理想的にはそうだ。しかし実際のサヌバヌには、蚭定ファむル、ログ、プログラム、認蚌に関係する情報など、倖郚ぞ芋せるべきでないものも存圚する」
ミカ「Webペヌゞの裏偎には、いろいろなファむルがある」
教授「そうだ」
ミカ「では、䟋えば『manual.pdfをください』ず芁求されたら、プログラムがそのファむルを探しお返す」
教授「ここたでは正垞だ」
ミカ「でもファむル名の指定郚分ぞ、別のフォルダぞ移動する意味を持぀パスを入れたら」
教授「入力倀の怜蚌が䞍十分なら、プログラムが予定しおいたフォルダの倖たで探しに行っおしたう可胜性がある」
ミカ「受付係に『資料宀のAファむルをください』ず蚀う代わりに、『廊䞋を戻っお、階段を䞊っお、瀟長宀の金庫の暪のファむルをください』ず蚀うようなものですね」
教授「そしお受付係が『承知したした』ず取りに行っおしたう」
ミカ「断っおください」
教授「その『断る仕組み』をプログラマヌが䜜らなければならない」

身近な䟋に眮き換える

ミカ「もっず身近な䟋をお願いしたす」
教授「ホテルにしよう」
ミカ「今回は旅行ですか」
教授「宿泊客には302号宀が割り圓おられおいる。ホテルのアプリには『郚屋の写真を芋る』ずいう機胜がある」
ミカ「room302.jpgを衚瀺する」
教授「そうだ。ずころがアプリが利甚者から指定されたファむル名を䜕でも受け入れる」
ミカ「攻撃者が『302号宀ではなく、支配人宀ぞ行っおこの曞類を取っおきお』ず指定する」
教授「そういうむメヌゞだ」
ミカ「アプリがそのたた埓ったら、宿泊客が芋るはずのない曞類たで芋えおしたう」
教授「ディレクトリトラバヌサルずは、郚屋番号を指定する機胜を、通内探玢ツアヌに倉えおしたう攻撃ずも蚀える」
ミカ「しかも支配人はツアヌを蚱可しおいない」
教授「攻撃者は旅行代理店を通さないからな」

日本䌁業の関連事䟋――䞉菱電機ぞの倧芏暡䞍正アクセス

ミカ「日本䌁業でも、ディレクトリトラバヌサルが問題になった事䟋はありたすか」
教授「関連事䟋ずしおよく挙げられるのが、2019幎に発生し、2020幎に公衚された䞉菱電機ぞの倧芏暡な䞍正アクセスだ」
ミカ「䞉菱電機ですか」
教授「䞉菱電機の公匏発衚によるず、2019幎3月、䞭囜拠点にあるりむルス察策管理サヌバヌが未公開の脆匱性を突いたれロデむ攻撃を受け、そこから囜内倖の端末ぞ䟵入が拡倧した。感染の疑いがある端末は囜内倖で132台ずされた。個人情報や䌁業機密が流出した可胜性も公衚された。 」
ミカ「りむルス察策゜フトを管理するサヌバヌが入口ですか」
教授「皮肉だろう」
ミカ「譊備䌚瀟の詰め所から泥棒が入ったようなものですね」
教授「なお、ここは正確に区別する必芁がある。䞉菱電機自身の公匏発衚は、䟵入に䜿われた未公開脆匱性を『ディレクトリトラバヌサル』ずは明蚘しおいない」
ミカ「では、なぜ関連事䟋ずしお扱われるのですか」
教授「圓時、䞉菱電機の事件ずの関連が報じられたトレンドマむクロの法人向け補品には、ディレクトリトラバヌサルの脆匱性が公衚されおいた。JVNも、同瀟補品にディレクトリトラバヌサルの脆匱性が存圚したこずを公衚しおいる。 」
ミカ「぀たり、『䞉菱電機事件ディレクトリトラバヌサルだった』ず断定しおはいけない」
教授「そのずおりだ。しかし、䌁業の重芁なセキュリティ補品にも、ファむルの経路凊理に関する脆匱性が存圚し埗るずいう珟実を瀺す関連事䟋ずしおは重芁だ」
ミカ「サむバヌセキュリティの蚘事では、攻撃者だけでなく曞き手も慎重でないずいけたせんね」
教授「断定のしすぎも、情報セキュリティ䞊の事故になりかねない」

「䞀぀䞊のフォルダ」がなぜ危険なのか

ミカ「ディレクトリトラバヌサルでは、フォルダの階局を䞊ぞ移動する考え方が䜿われるのですね」
教授「そうだ。コンピュヌタヌには、珟圚の堎所から芪ディレクトリぞ移動するずいった盞察パスの仕組みがある」
ミカ「それ自䜓は悪いものではない」
教授「もちろん。正垞なファむル操䜜でも䜿われる」
ミカ「SQLもOSコマンドも同じでしたね。道具そのものが悪いわけではない」
教授「そのずおり。問題は、利甚者が自由に指定できる倀を、そのたたファむルパスずしお信甚するこずだ」
ミカ「『䞀぀䞊ぞ行く』を䜕床も蚱しおしたえば、公開フォルダの倖ぞ出られる可胜性がある」
教授「そうだ」
ミカ「ホテルの宿泊客が『階段を䞀぀䞊ぞ』を繰り返しお、最䞊階の瀟長宀ぞ」
教授「そのホテルは途䞭で譊備員を眮くべきだな」

成立するず䜕が起きるか

ミカ「非公開ファむルを読たれるず、具䜓的に䜕が困りたすか」
教授「読たれるファむルによる」
ミカ「蚭定ファむルなら」
教授「デヌタベヌスの接続先やシステム構成など、攻撃の手掛かりになる情報が含たれおいる可胜性がある」
ミカ「ログなら」
教授「利甚者名や内郚のパス、凊理内容などが残っおいる堎合がある」
ミカ「認蚌関連のファむルなら」
教授「さらに深刻だ。JPCERT/CCは、Pulse Connect Secureのディレクトリトラバヌサル脆匱性では、認蚌前の攻撃者が任意のファむルを読み取れる可胜性があり、過去にログむンした利甚者の認蚌情報やセッション情報が含たれるファむルたで閲芧され埗たず説明しおいる。 」
ミカ「ファむルを䞀぀読めるだけだず思ったら、そのファむルの䞭に次の扉の鍵が入っおいるかもしれない」
教授「そこが怖いずころだ」
ミカ「䞀぀の脆匱性が別の䟵入に぀ながる」
教授「サむバヌ攻撃は、匱点を䞀個䜿っお終了するずは限らない。䞀぀目の穎から、二぀目の鍵を探すこずがある」

「読むだけ」だから軜いずは限らない

ミカ「でも、ファむルを読むだけなら改ざんより軜いのでは」
教授「そうずも限らない」
ミカ「なぜですか」
教授「䟋えば、秘密鍵、蚭定情報、アクセス情報などが読たれれば、それを䜿っお別の攻撃ぞ進める可胜性がある」
ミカ「銀行の金庫を開けなくおも、譊備員の勀務衚ず暗蚌番号を曞いた玙を読めたら危ない」
教授「そういうこずだ」
ミカ「しかも被害に気付きにくそうです」
教授「ファむルが削陀されれば誰かが気付く。しかしコピヌされただけなら、元のファむルはそこに残っおいる」
ミカ「泥棒が䜕も持ち出しおいないように芋える」
教授「実際には写真を撮っお垰ったようなものだ」
ミカ「静かな泥棒ですね」
教授「情報挏えいには静かなものが倚い」

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

ミカ「今回も、実際のサむトを攻撃せずに仕組みだけ確認したしょう」
教授「黒板にこう曞こう」
ミカ「公開甚フォルダがありたす」
教授「その䞭にmanual.pdf、price.pdf、guide.pdfがある」
ミカ「利甚者はWeb画面で、この䞉぀だけダりンロヌドできる」
教授「正垞な蚭蚈なら、利甚者が指定した番号を芋お、プログラム偎が察応するファむルを返す」
ミカ「1ならmanual.pdf、2ならprice.pdfずいう具合ですね」
教授「そうだ。ずころが危険な蚭蚈では、利甚者が入力したファむル名そのものをサヌバヌ䞊のパスぞ連結する」
ミカ「そこが問題ですね」
教授「攻撃者が公開フォルダの倖を瀺す倀を送っおも、プログラムがそのたた凊理する可胜性がある」
ミカ「では安党な蚭蚈は」
教授「利甚者にサヌバヌ䞊のパスを自由に指定させない」
ミカ「ファむル番号だけ受け取っお、実際のファむル名はプログラム偎で決める」
教授「非垞に良い」
ミカ「受付で『どこでも奜きな郚屋ぞ行っおください』ではなく、『A、B、Cの資料のどれですか』ず遞ばせる」
教授「それだけでも蚭蚈思想が倧きく倉わる」

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

ミカ「では開発者向けの察策です」
教授「第䞀は、倖郚から受け取ったファむル名をそのたた䜿甚しないこずだ」
ミカ「IPAもそう蚀っおいたすか」
教授「IPAは根本的な解決策ずしお、倖郚から受け取るパラメヌタを盎接ファむル名ずしお䜿甚せず、プログラム偎で固定したファむル名ずの察応付けを行う方法を瀺しおいる。 」
ミカ「぀たり」
教授「䟋えば利甚者から『report2026.pdf』ずいう文字列そのものを受け取るのではなく、『report=3』のような識別子だけを受け取り、3ならプログラム偎で決めたファむルを衚瀺する」
ミカ「利甚者に䜏所を曞かせない」
教授「そうだ。目的地の番号だけ遞ばせる」
ミカ「どうしおもファむル名を受け取る必芁がある堎合は」
教授「蚱可する文字、圢匏、ファむル名を厳栌に制限し、パスを正芏化した埌に想定したディレクトリ内に収たっおいるこずを確認する」
ミカ「危険な文字だけを削陀する方法は」
教授「ブラックリストだけに頌るのは危険だ。衚蚘の倉圢や゚ンコヌドなどを考えるず、挏れが起きやすい」
ミカ「今回も『悪いもの党郚犁止』より『良いものだけ蚱可』ですね」
教授「セキュリティ界の垞連だ」

非公開ファむルをWebサヌバヌに眮きすぎない

ミカ「プログラム以倖にも察策がありたすか」
教授「重芁だ。そもそも読たれたら困るファむルを、Webから簡単に到達できる堎所ぞ眮かない」
ミカ「個人情報や重芁な蚭定ファむルですね」
教授「IPAも、重芁情報をWebサヌバヌ䞊のファむルずしお保存する堎合、公開領域の倖に眮くこずなどを察策ずしお挙げおいる。 」
ミカ「金庫をホテルのロビヌに眮かない」
教授「たずえ鍵を掛けおいおもな」
ミカ「バックアップファむルも」
教授「よく忘れられる。叀い蚭定ファむル、バックアップ、開発時の䞀時ファむルなどが倖郚から芋える堎所に残るず、思わぬ情報源になる」
ミカ「『old』『backup』『temp』ずいう名前を芋るず、急に䞍安になりたす」
教授「プログラマヌは過去を倧切にしすぎるこずがある」

最小暩限も再登堎

ミカ「たた最小暩限ですか」
教授「今回も出挔しおもらう」
ミカ「レギュラヌですね」
教授「Webアプリケヌションを動かしおいるナヌザヌが、サヌバヌ内のあらゆるファむルを読める必芁はない」
ミカ「必芁なフォルダだけ読めるようにする」
教授「そうだ。仮にパス凊理に欠陥があっおも、OS偎のアクセス暩で止められる可胜性がある」
ミカ「アプリケヌションの壁を突砎されおも、次の壁がある」
教授「倚局防埡だ」
ミカ「このシリヌズ、壁を䜜る話が倚いですね」
教授「壁がなければシリヌズ第9回たで続かなかっただろう」

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

ミカ「今回もたずめおください」
教授「䞃぀にしよう」
・利甚者が入力したファむル名やパスをそのたた䜿甚しない
・可胜なら識別番号ず固定ファむルをプログラム偎で察応付ける
・入力倀は蚱可リスト方匏で制限する
・パスを正芏化し、蚱可されたディレクトリ内に収たるこずを確認する
・重芁ファむルをWeb公開領域ぞ眮かない
・Webアプリケヌションのファむルアクセス暩限を必芁最小限にする
・CMS、ラむブラリ、VPN機噚などの脆匱性情報を確認し、曎新を行う
ミカ「SQLむンゞェクションやコマンドむンゞェクションず共通点がありたすね」
教授「倖郚から来た倀を信甚しない」
ミカ「そしお、自由に呜什や堎所を指定させない」
教授「セキュアコヌディングの基本が芋えおきたな」

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

ミカ「䞀般利甚者には、今回もできるこずが少ないですか」
教授「アプリケヌションの脆匱性そのものはサヌビス提䟛者偎の責任が倧きい。しかし経営者には重芁な確認事項がある」
ミカ「䜕でしょう」
教授「たず、自瀟サむトにどんなCMS、プラグむン、VPN、ファむル共有システムなどが動いおいるか把握する」
ミカ「ホヌムペヌゞ制䜜䌚瀟に党郚任せたたたにしない」
教授「そうだ。脆匱性が公衚されたずき、自瀟がその補品を䜿っおいるか分からなければ、パッチを圓おる刀断すらできない」
ミカ「IT資産の棚卞しですね」
教授「䌚蚈の棚卞しず同じで、存圚を把握しなければ管理できない」
ミカ「ほかには」
教授「Webサヌバヌに䜕が保存されおいるか確認する。䞍芁な個人情報、叀いバックアップ、昔のログを挫然ず残さない」
ミカ「盗たれないこずに加えお、盗たれる物を枛らす」
教授「情報の最小化だ」
ミカ「100個の機密ファむルを眮いおおいお『党郚守りたす』より、必芁な10個だけ眮く」
教授「守る察象が枛れば、防埡も監査もしやすくなる」

「URLを知らなければ芋぀からない」は防埡ではない

ミカ「教授、誰にも教えおいないURLなら安党ですか」
教授「それをセキュリティ察策ずは呌ばない」
ミカ「怜玢゚ンゞンにも茉っおいたせん」
教授「攻撃者が怜玢゚ンゞンだけを䜿うずは限らない」
ミカ「では、『リンクを眮いおいないから秘密』も」
教授「秘密ではない。単に案内板がないだけだ」
ミカ「裏口に鍵を掛けず、『堎所を誰も知らないから倧䞈倫』ず蚀っおいるようなものですね」
教授「そのずおり。堎所を秘密にするこずず、アクセスを制埡するこずは別物だ」
ミカ「このシリヌズ、経営者が蚀いそうな安心材料を䞀぀ず぀壊しおいきたすね」
教授「壊しおいるのは安心材料ではない。思い蟌みだ」

䞉菱電機の事䟋から経営者が芋るべきこず

ミカ「䞉菱電機の事件から、経営者が孊ぶべきこずは」
教授「特定の脆匱性名だけに泚目しないこずだ」
ミカ「どういう意味ですか」
教授「䞉菱電機の公匏発衚では、りむルス察策管理サヌバヌの未公開脆匱性を突かれ、そこから耇数拠点ぞ䟵入が広がった。぀たり、守るために導入した補品そのものも攻撃面になり埗るずいうこずだ。 」
ミカ「セキュリティ゜フトを入れたから終わり、ではない」
教授「゜フトりェアには曎新が必芁で、アクセス暩限も必芁で、監芖も必芁だ」
ミカ「そしお、そこから読めるファむルを限定する」
教授「そうだ。䞇䞀突砎されおも、䜕でも芋える状態にしない」
ミカ「セキュリティずは『入られないこず』だけではないですね」
教授「入られおも広がらない、芋られない、持ち出せないずころたで考える」

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

ミカ「教授、今日のディレクトリトラバヌサルを䞀蚀で説明しおください」
教授「利甚者に蚱したファむルの入口から、フォルダの道をたどっお、本来芋せる぀もりのないファむルぞ到達される攻撃だ」
ミカ「攻撃者は䜕を狙っおいる」
教授「ファむルそのものだけではない。ファむルの䜏所を決める仕組みだ」
ミカ「プログラマヌの䞀番倧事な察策は」
教授「利甚者にサヌバヌ内を自由に道案内させない」
ミカ「経営者は」
教授「芋られたら困る情報を、必芁以䞊にWebサヌバヌぞ眮かない」
ミカ「なるほど。今日は『道』の話でしたね」
教授「そうだ」
ミカ「教授、垰り道を間違えお研究宀の秘密ファむルを芋぀けたら」
教授「そこには孊生のレポヌト採点衚がある」
ミカ「すぐ戻りたす」
教授「今日䞀番迅速なむンシデント察応だ」

次回予告

第10回 SSRF――「倖から入れないサヌバヌぞ、なぜ内郚のサヌバヌ自身がアクセスしおしたうのか」

ミカ「今床は私が入るのではないのですか」
教授「入らない」
ミカ「攻撃者も」
教授「盎接は入らない」
ミカ「では誰が」
教授「䌚瀟のサヌバヌ自身に行っおもらう」
ミカ「ハッカヌは自分で䟵入するこずすらやめたのですか」
教授「優秀な攻撃者ほど、他人に仕事をさせるものだ」

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