#dusk $DUSK @Dusk $BTC 11 a fait que les requêtes hôtes partageaient la même enveloppe. Huit d’entre elles avaient le même risque de désérialisation.
Cela m’a incité à regarder de plus près.
Le contrat contrôlait les octets. C’est le nœud qui les lisait. Un pointeur relatif malformé pouvait pousser l’hôte vers une lecture hors limites. À ce moment-là, le problème ne restait plus contenu à l’intérieur du contrat.
Ce qui a attiré mon attention, c’est le correctif.
Dusk n’a pas corrigé huit requêtes séparément. Il a corrigé la limite partagée et valide les données archivée avant de les désérialiser.
Cet ordre compte.
Valider d’abord. Désérialiser ensuite.
Il n’existait pas de solution de contournement utile côté utilisateur. C’est la limite elle-même qui devait être corrigée, et comme la même enveloppe servait 11 requêtes, corriger cette couche couvrait tout le groupe.
Le test est simple. Injectez des données archivées malformées dans ces requêtes. Le nœud doit les refuser avant que l’enveloppe essaie d’interpréter les octets.
Cela m’a incité à regarder de plus près.
Le contrat contrôlait les octets. C’est le nœud qui les lisait. Un pointeur relatif malformé pouvait pousser l’hôte vers une lecture hors limites. À ce moment-là, le problème ne restait plus contenu à l’intérieur du contrat.
Ce qui a attiré mon attention, c’est le correctif.
Dusk n’a pas corrigé huit requêtes séparément. Il a corrigé la limite partagée et valide les données archivée avant de les désérialiser.
Cet ordre compte.
Valider d’abord. Désérialiser ensuite.
Il n’existait pas de solution de contournement utile côté utilisateur. C’est la limite elle-même qui devait être corrigée, et comme la même enveloppe servait 11 requêtes, corriger cette couche couvrait tout le groupe.
Le test est simple. Injectez des données archivées malformées dans ces requêtes. Le nœud doit les refuser avant que l’enveloppe essaie d’interpréter les octets.