Ticket #35870

ゼロクリアの削除

Eröffnet am: 2015-12-28 00:18 Letztes Update: 2016-02-09 22:33

Auswertung:
(del#24082)
Verantwortlicher:
(del#24082)
Typ:
Status:
Geschlossen
Komponente:
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine
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-Verlauf (3/6 Historien)

2015-12-28 00:18 Aktualisiert von: (del#24082)
  • New Ticket "ゼロクリアの削除" created
2015-12-28 22:43 Aktualisiert von: (del#24082)
  • Details Updated
2016-01-01 17:40 Aktualisiert von: (del#24082)
  • Verantwortlicher Update from (Keine) to yutakapon
  • Details Updated
2016-01-01 19:22 Aktualisiert von: (del#24082)
2016-01-01 20:07 Aktualisiert von: (del#24082)
  • Lösung Update from Keine to Gefixt
2016-02-09 22:33 Aktualisiert von: (del#1144)
  • Ticket Close date is changed to 2016-02-09 22:33
  • Status Update from Offen to Geschlossen

Dateianhangliste

Keine Anhänge

Bearbeiten

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