Les protocoles réseaux, à fortiori avec sécurité renforcée genre IPsec, ont souvent une part d’aléatoire, qui te rend impossible des tests unitaires exacts bit-à-bit. Enfin, si, tu peux tester
> La faille DNS était une faille de spec.
C’est bien ce que je dis : un code correct au regard de la spec peut très bien introduire une vulnérabilité.
Il faut voir que tu as souvent plusieurs algorithmes pour implémenter une spec. Quand la spec te dit « prenez un nombre aléatoire », tu as plusieurs manières de faire.
Mais certains algorithmes qui respectent la spec peuvent introduire des failles. L’exemple de debian et OpenSSL. En gros, la spec elle dit, « générez un nombre aléatoire. ». La version de debian a fait comme ça (c’est imagé hein) :
srand(getpid()); rand()
Ça respecte la spec. Un relecteur qui connaît le C, qui a la spec sous les yeux, il dira : OK, pas de faille introduite. Mais il y en a une : l’entropie de getpid() n’est pas assez grande.
On est encore là dans un cas simple, mais c’est juste pour dire que sans compétences en sécurité des réseaux et des chiffrements, non, un programmeur C lambda n’est pas forcément capable de reconnaître une faille ou une backdoor en regardant le code. Et même quelqu’un ayant de telles compétences risque d’avoir du mal si c’est plus évolué que srand(getpid()), sauf à faire une analyse en profondeur du code (ce qui prend du temps et/ou de l’argent).
[^] # Re: Les chinois du FBI...
Posté par Moonz . En réponse au journal Backdoor dans OpenBSD ?. Évalué à 6.
> La faille DNS était une faille de spec.
C’est bien ce que je dis : un code correct au regard de la spec peut très bien introduire une vulnérabilité.
Il faut voir que tu as souvent plusieurs algorithmes pour implémenter une spec. Quand la spec te dit « prenez un nombre aléatoire », tu as plusieurs manières de faire.
Mais certains algorithmes qui respectent la spec peuvent introduire des failles. L’exemple de debian et OpenSSL. En gros, la spec elle dit, « générez un nombre aléatoire. ». La version de debian a fait comme ça (c’est imagé hein) :
srand(getpid()); rand()
Ça respecte la spec. Un relecteur qui connaît le C, qui a la spec sous les yeux, il dira : OK, pas de faille introduite. Mais il y en a une : l’entropie de getpid() n’est pas assez grande.
On est encore là dans un cas simple, mais c’est juste pour dire que sans compétences en sécurité des réseaux et des chiffrements, non, un programmeur C lambda n’est pas forcément capable de reconnaître une faille ou une backdoor en regardant le code. Et même quelqu’un ayant de telles compétences risque d’avoir du mal si c’est plus évolué que srand(getpid()), sauf à faire une analyse en profondeur du code (ce qui prend du temps et/ou de l’argent).