関連記事
iOS7.0.6で修正された「最悪のセキュリティバグ」はありがちなコーディングミスで発生していた
minet 曰く、 Appleが先日公開したiOS 7.0.6では、「過去最悪のセキュリティバグ」が修正されているという(アプリオ)。
SSL/TLSの不適切な扱いにより、データが暗号化されない場合があり、これにより通信内容が盗聴されるおそれがあるようだ。
現在利用中の環境にこのバグがあるかどうかは、gotofail.comというサイトで確認できる模様。
興味深いのが、このバグの要因とされているコードだ。SSLで使われる暗号鍵の検証を行うコードにバグがあったとのことなのだが、その途中で以下のように「goto」文が続いているミスがあったという(ImperialViolet - Apple's SSL/TLS bug)。
static OSStatus
SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
uint8_t *signature, UInt16 signatureLen)
{
OSStatus err;
...
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
...
fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err;
}
コード全文は修正後のコードを見てほしいが、このように「goto fail;」が2行続いたことで途中の検証作業が飛ばされてしまい、その結果本来エラーとなるケースでエラーにならない、という問題が発生している模様。
スラッシュドットのコメントを読む | アップルセクション | プログラミング | アップル | iOS
関連ストーリー:
不正なSSL証明書のチェックをしないモバイルアプリにご注意を 2014年02月14日
新たなtypoスタイル「Mis-paste」 2011年11月12日
いいコーディング規約、悪いコーディング規約? 2008年07月22日
※この記事はスラドから提供を受けて配信しています。
スポンサードリンク
スポンサードリンク
- HTTP/3が「RFC 9114」として標準化完了 6/10 16:55
- Memtest86+ v6.00 Beta 1公開、正式版リリースは今夏を予定 5/10 17:35
- 子供向けプログラミング教室、申し込みの8割が男児 5/10 17:33
- プログラミング言語「Go」1.18 がリリース、ジェネリクスをサポート 3/26 16:35
- 米国防総省、OSS利用のためのガイダンス発表 職員によるOSS貢献など 3/18 08:56