図3 例示したコードを悪用して戻りアドレスを書き換える様子 ポインタ渡しされているため,gets関数が直接buf配列に書き込める。標準のgets関数はバッファ・オーバーフロー問題を抱えるため,gets関数の戻りアドレスを書き換えられてしまう。 IT Pro読者の方なら,「バッファ・オーバーフロー」という言葉を何度も聞いたことがあるだろう。そう,代表的なセキュリティ・ホールの一つである。10月12日に公表されたWindows製品のセキュリティ・ホールの中にも,バッファ・オーバーフローに関するものが複数含まれる(関連記事)。 これらのセキュリティ情報を読んで,以前,バッファ・オーバーフローを悪用する攻撃(詳細については後述)を解説する記事を書いたときのことを思い出した。書き上げた記事を査読したデスクは,筆者に次のように問いかけた。「バッファ・オーバーフローを悪用して戻りアドレスが書き換え可能
![バッファ・オーバーフロー攻撃を防ぐ“万能薬”はあるか?](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)