関連記事
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日
※この記事はスラドから提供を受けて配信しています。
スポンサードリンク
スポンサードリンク
- Ruby 2の3倍高速化を図った「Ruby 3.0.0」が登場 1/ 5 09:16
- Microsoft、「.NET 5」正式リリース 1つのフレームワークで分断化した.NETを統合へ 11/17 16:36
- Microsoft、PHP 8.0をサポートしないと公式に表明 7/17 18:39
- セガが「ぷよぷよ」のソースコードを使ったプログラミング教材を公開 6/29 18:42
- Perl 7が発表 実質的にはPerl 5系のリネーム 6/26 19:50
広告
広告
広告