Time of check to time of useとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Time of check to time of useの意味・解説 

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" はパスワードファイルを指すことになる。
//
//

この例では、攻撃者はaccessopenの競合状態を悪用し、システムのパスワードデータベースを上書きすることが可能である。すなわちTOCTTOUは、マシンの管理者権限を得る権限昇格攻撃に利用されうる。

一連の命令は正確なタイミングで実行されなければならないが、この条件を整えることは攻撃者にとってそれほど難しいことではない。

この攻撃が示唆するところは、オペレーティングシステムによって管理される状態(この場合はファイルシステム名前空間)がシステムコールの間に変更されないとは保証されないということである。

TOCTTOUの防止

原理は単純であるが、TOCTTOUを防止、排除することは難しい。一般的なテクニックのひとつは、例外処理を使うことである。

参考文献

  1. ^ Acheson, Steve (1999年11月4日). “The Secure Shell (SSH) Frequently Asked Questions”. 2017年3月16日閲覧。

「Time of check to time of use」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

Time of check to time of useのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Time of check to time of useのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのTime of check to time of use (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS