スタック・カナリアとは【用語集詳細】

スタック・カナリア(Stack Canary)は、ソフトウェア開発においてバッファオーバーフローからプログラムを保護するスタック破壊保護(Stack Smashing Protector)技術の1つです。
カナリア・トークンと同様、炭鉱においてガスの漏洩を検知するためにカナリアが使われた歴史的事例が語源となっています。
スタック・カナリアによるプログラム保護では、プログラム実行時にランダム生成されたカナリア(Canary)と呼ばれる値がメモリ内部に挿入されます。攻撃者がバッファオーバーフローを利用し、割り当てられたバッファを超えた書き換えを行った場合、配置されたカナリアの値が変化します。
プログラムはカナリア値の変化をチェックすることでオーバーフローを検知し、プログラムの悪用を未然に防止します。
スタック・カナリアはGCCやVisual Studio等様々なコンパイラに実装されています。