OpenSSLの教訓を
OpenSSLの脆弱性が話題になっていましたが、その記事を読んだ後、何気なくソースコードを整理していたら、データのサイズチェックを全然していないことに気が付きました。性善説に則ってました、というか忘れてた(^_^;
Heartbleed脆弱性は、クライアントから要求されたデータサイズを確認せずに、固定長64KBのデータを返してしまうのだそうです。要求したデータ以上のデータが返ってきて、そこに怪しげなデータが残っているかもよ、というものらしいです。
Brynhildrの通信では、コントロール(主にキーボード、マウスを想定)、画像データ(jpegストリーム)、PCMデータの三種類があって、Qt Brynhildrでは共用の固定サイズバッファ1つと画像データ、PCMデータ(データサイズ可変)のデータを受け取るローカルデータバッファとPCMデータを保持するリングバッファを管理していますが、それぞれ最大バッファサイズを決めているため、これを超えるデータが来たら弾く必要があります。
「可変長にすればいいじゃん」という話もありますが、バッファを取り直すのはいろいろ効率悪いので。あと意味不明に大きな値が返されるとクライアントがクラッシュするので、そういう意味でも制限を掛けておきます。
こういうことを考え始めると、あらゆるところでセキュリティを考えないといけないので、なかなか難しいですね。
まずパスワードを生テキストデータで保持しているという(^_^;酷い状況をなんとかしないと…
« 音の遅れが気になる… | トップページ | PCMデータのスループットが気になる… »
コメント