アーシの毎日インプット

毎日1つ以上学習する。学習した内容を公開する。を目標に自分のスキルアップを目指します。

セキスペCheck:C/C++言語のプログラミング上の留意点

スポンサードリンク

今回も情報処理安全確保支援士の試験勉強の内容をアウトプットをしていきます。

 

勉強に使ったのはこちら

章の終わりにあるCheck問題に私なりの答えで解答していきます。

 

今回は8.2章:C/C++言語のプログラミング上の留意点のCheck問題です。

 

【Q1】BOF攻撃を許してしまう関数には何があるか。

gets()
strcpy()
strcat()
sprinf()
scanf()
sscanf()
fscanf()
vscanf()
vfscanf()
vsprintf()
vsscanf()
などがある。

 

【Q2】C/C++言語の文字列の処理においては何を注意する必要があるか。

C/C++言語ではNULL文字は文字列の終端を示すものであるため、入力データ中に意図的にNULL文字を混入させることでそこで文字列の終端と判断されてしまう。
例えば入力データに拡張子を付加してファイル名を作る処理の場合、入力データにNULL文字を付加することで拡張子を持たないファイル名となる。

 

【Q3】どのような場合にBOF攻撃が成立してしまうのか。

格納先バッファの境界チェックや、書き込み先バッファのサイズを考慮しない関数を使用した場合に、入力データサイズがバッファ値を超えると成立する。

 

【Q4】BOF攻撃を防ぐにはどのような対策を行う必要があるか。

以下のような対策が考えられる。
BOF攻撃が成立しない関数を代用する
②入力データの精度を指定する
③独自にデータサイズのチェックを行う
④バッファ境界をチェックする

 

【Q5】system関数の使用において注意すべきことは何か。

単純な入力プログラムの場合、";"区切りの後にOSコマンドが入力されると指定されたOSコマンドも実行される。

 

 

私が使っているのは2022年版のテキストですが、2024年版も出ています。

【アーシの原点】

【頭を鍛える迷路集】


スポンサードリンク