Tíquete #35870

ゼロクリアの削除

: 2015-12-28 00:18 Última Atualização: 2016-02-09 22:33

Relator:
(del#24082)
Dono:
(del#24082)
Tipo:
Estado:
Fechado
Componente:
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
Nenhum
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

コンパイラの最適化により、memset()やZeroMemory()のコードが削除
されることがあるが、セキュリティ対策として意図的にゼロクリアしているコードまで
削除されている箇所がある。

対策1で進める。
なお、本対応によりユーザ見えには変化がないため、改版履歴には記載しない。

対策:
1. SecureZeroMemory()に置き換える
 MSDN上はXP以降のAPIとなっているが、実体は RtlSecureZeroMemory() というWinNT.h で定義されているインライン関数であるため、Windows95でもそのまま動く。

2. OpenSSH の explicit_bzero() のような自前の関数を使う。
/*
 * Indirect bzero through a volatile pointer to hopefully avoid
 * dead-store optimisation eliminating the call.
 */
static void (* volatile ssh_bzero)(void *, size_t) = bzero;

void
explicit_bzero(void *p, size_t n)
{
	ssh_bzero(p, n);
}

Ticket History (3/6 Histories)

2015-12-28 00:18 Updated by: (del#24082)
  • New Ticket "ゼロクリアの削除" created
2015-12-28 22:43 Updated by: (del#24082)
  • Details Updated
2016-01-01 17:40 Updated by: (del#24082)
  • Dono Update from (Nenhum) to yutakapon
  • Details Updated
2016-01-01 19:22 Updated by: (del#24082)
2016-01-01 20:07 Updated by: (del#24082)
  • Resolução Update from Nenhum to Fixed
2016-02-09 22:33 Updated by: (del#1144)
  • Ticket Close date is changed to 2016-02-09 22:33
  • Estado Update from Aberto to Fechado

Attachment File List

No attachments

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login