1997年のNetstrings仕様が今も色褪せない理由:安全なネットワークプロトコルの基礎
Netstrings (1997)
D. J. Bernstein氏が1997年に発表したNetstringsは、文字列の長さを前置きする自己区切り方式のエンコーディングです。このシンプルな仕様は、バッファオーバーフローを防ぎやすく、再帰的な利用も可能で、TCPなどの信頼性のあるストリーム上で文字列シーケンスを安全に伝送するための基本部品として設計されました。本稿では、その定義とC言語によるサンプルコード、そしてFingerの脆弱性の教訓を踏まえたセキュリティ上の利点を解説します。
Fingerのセキュリティホールは、CRLFエンコーディングの使用に起因すると言えます。このエンコーディングでは文字列のサイズが事前に宣言されないため、正しいパーサーは文字列を読みながらメモリを増やしていく必要があります。