PHP 5.
PHP 5.
crypt関数のバグ
最近のPHPで行われたcrypt関数のバグ修正は3つあります。
PHP 5.3.7で修正したバグ ─ その1
PHP 5.
この脆弱性は2011/
脆弱性があるcrypt_
- 攻撃方法
何らかの方法でパスワードデータベースを取得し,
総当たり攻撃でパスワードを検出する。
PHP 5.3.7で修正したバグ ─ その2
PHP 5.
ext/
salt[2] = '\0';
#endif
salt_in_len = strlen(salt);
+ } else {
+ salt_in_len = MIN(PHP_MAX_SALT_LEN, salt_in_len);
}
slat_
salt[salt_in_len] = '\0';
とmemcpyでコピーしたsaltパラメータの文字列の終端位置の指定に利用されています。手元のLinux+PHP 5.
- 攻撃方法
攻撃用のPHPスクリプトを実行し,
任意のコードを実行させる。
PHP 5.3.7に混入したバグ
セキュリティ強化の一環として,
このバグレポートを見ると分かりますが,
PHP 5.
/* Now make the output string */
memcpy(passwd, MD5_MAGIC, MD5_MAGIC_LEN);
strlcpy(passwd + MD5_MAGIC_LEN, sp, sl + 1);
- strlcat(passwd, "$", 1);
+ strcat(passwd, "$");
PHP_MD5Final(final, &ctx);
strlcatは第三パラメータでバッファ
この連載を読んでいる方はC言語に慣れていない方も多いと思うので補足します。
修正済みstrcatはpasswdバッファーの
strlcatはバッファの長さが1以上の時,
- 攻撃方法
脆弱なcrypt関数でCRYPT_
MD5を利用しているシステムにログインする。パスワードは何でもログインできる。