Time of check to time of use
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/01 09:45 UTC 版)
ナビゲーションに移動 検索に移動Time of check to time of use(TOCTTOU、TOCTOU、トックトゥー)とは、ソフトウェア開発において、ある条件(セキュリティ認証など)をチェック (check) したあと、その結果を行使 (use) するまでに変更が発生することで引き起こされるバグの一種である。これは競合状態の一例である。
単純な例として、ユーザーがページを編集できる機能と、管理者がページをロックできる機能をもつWebアプリケーションを考える。まずユーザーがページの編集を要求し、編集フォームが表示される。次にフォームを送信する前に、管理者がページをロックする。しかし編集は既に開始されており、ユーザーがフォームを送信すると、これらの編集は受理される。すなわち、しかるべき権限がチェックされた結果としてユーザーは編集を開始したのであるが、もはや編集が許可されるべきではなくなったときに、その権限は遅れて行使されたのである。
TOCTTOUはUnixのファイルシステムで発生するのが最も一般的であるが、ローカルソケットや不適切なトランザクションなど、他の状況でも発生しうる。OpenSSHの初期のバージョンには、UNIXドメインソケットに悪用可能な競合状態があった[1]。
例
Unixにおいて、setuid
プログラム中の以下のCコードにはTOCTTOUのバグが存在する。
if (access("file", W_OK) != 0) {
exit(1);
}
fd = open("file", O_WRONLY);
write(fd, buffer, sizeof(buffer));
ここで、access は、このsetuid
プログラムを実行したユーザーが、通常はファイルの書き込み権限を持っているかをチェックしている(すなわち、access
は実効UIDではなく実UIDをチェックする)。
この競合状態は、以下の攻撃に対して脆弱である。
脆弱なコード | 攻撃コード |
if (access("file", W_OK) != 0) {
exit(1);
}
fd = open("file", O_WRONLY);
// 実際には /etc/passwd を上書きしてしまう。
write(fd, buffer, sizeof(buffer));
|
//
//
// 権限チェックのあとで以下を実行する。
symlink("/etc/passwd", "file");
// これによって "file" はパスワードファイルを指すことになる。
//
//
|
この例では、攻撃者はaccess
とopen
の競合状態を悪用し、システムのパスワードデータベースを上書きすることが可能である。すなわちTOCTTOUは、マシンの管理者権限を得る権限昇格攻撃に利用されうる。
一連の命令は正確なタイミングで実行されなければならないが、この条件を整えることは攻撃者にとってそれほど難しいことではない。
この攻撃が示唆するところは、オペレーティングシステムによって管理される状態(この場合はファイルシステム名前空間)がシステムコールの間に変更されないとは保証されないということである。
TOCTTOUの防止
原理は単純であるが、TOCTTOUを防止、排除することは難しい。一般的なテクニックのひとつは、例外処理を使うことである。
参考文献
- ^ Acheson, Steve (1999年11月4日). “The Secure Shell (SSH) Frequently Asked Questions”. 2017年3月16日閲覧。
「Time of check to time of use」の例文・使い方・用例・文例
- The Malay Times に掲載されていた、非常勤の下級アナリストの職に関する広告についてご連絡を差し上げています。
- 彼女の15 冊の出版物のうち10 冊が、Brooklyn Timesのベストセラーリストの首位を占めたという事実は、多くの人々が彼女のことを、肥満に苦しむ国の救済者だと考えている証拠である。
- 最近着の London Times に曰く
- オックスフォード運動の創設者の原則で、『Tracts for the Times』と呼ばれるパンフレットで提唱された
- Microsoftがβ版をランチするのは「NetShow streaming server」で動画や音声をオンデマンドで提供する。
- 《主に米国で用いられる》 = 《主に英国で用いられる》 an admiral of the fleet 海軍元帥.
- 篏入的 r 音 《英音の India office /ndiərfɪs/の /r/の音》.
- =《口語》 These kind of stamps are rare. この種の[こういう]切手は珍しい.
- (英国の)運輸省. the Ministry of Education(, Science and Culture) (日本の)文部省.
- は of の誤植です.
- を off と誤植する.
- あいまい母音 《about, sofa などの /ə/》.
- 副詞的小詞 《on, in, out, over, off など》.
- 迂言的属格 《語尾変化によらず前置詞によって示す属格; たとえば Caesar's の代わりの of Caesar など》.
- çon of garlic [humor]. それにはガーリック[ユーモア]がちょっぴり必要だ.
- 《主に米国で用いられる》 = 《主に英国で用いられる》 the Speaker of the House of Commons 下院議長.
- 《主に米国で用いられる》 = 《主に英国で用いられる》 the Committee of Ways and Means 歳入委員会.
- 初めて読んだ英文小説は“The Vicar of Wakefield”
- (違法罪―a sin of commission―に対する)怠惰罪
- 『each』、『every』、『either』、『neither』、『none』が分配的、つまり集団の中の1つのものを指すのに対し、『which of the men』の『which』は分離的である
- Time of check to time of useのページへのリンク