書式文字列攻撃
printf("%s", buffer) であれば、単に入力された文字列を表示するだけである。
この問題は、C言語の引数の解釈で型を意識しないために発生する。特に printf でも使われている varargs 機構はサブルーチンに任意個の引数を渡せる。printf では第一引数である書式文字列の内容によって必要な引数の個数が決まり、それによってコールスタックから引数を pop して使用する。
このバグは1990年にウィスコンシン大学で行われた評価(各種APIにでたらめな引数を与えてシステムクラッシュなどの問題が発生しないかを調査)で最初に見つかった(Miller, Fredriksen, So 1990 参照)。彼らはこれを "interaction effects" と呼び、cshの評価でそれを見つけている。このような不具合の評価手法は後に他者によって体系化され、ファジングと呼ばれることになる。
書式文字列のバグで攻撃される可能性は Tymm Twillman が ProFTPD デーモンのセキュリティ検査中に発見した。その検査で、snprintf にユーザーが入力したデータがそのまま書式文字列として使われているのが見つかった。さらなる評価の結果、このバグを利用してセキュリティを破ることが可能と判明した。この結果を 1999年9月にBugtraqメーリングリストに新たな脆弱性報告としてポストした。しかし、これが重大な問題であると認識されるまで数ヶ月を要することになった。