Alors ?
Soyons honnêtes : la plupart des entreprises traitent la sécurité des API comme une simple case à cocher. Vous configurez votre OAuth, vous ajoutez peut-être une limitation de débit, et vous exécutez une analyse de vulnérabilité une fois par trimestre. Tout semble vert sur le tableau de bord, et vous vous sentez en sécurité. Mais voici le problème avec les Zero Day : elles ne se soucient pas de vos cases à cocher. Une vulnérabilité Zero Day est une faille que le fournisseur de logiciel ne connaît pas encore, ce qui signifie qu'il n'y a pas de correctif. Au moment où vous en entendez parler sur un blog technique ou une liste de diffusion de sécurité, les pirates ont probablement déjà scanné Internet à sa recherche pendant des heures, voire des jours.
Si votre API est la passerelle vers les données de vos clients, le traitement de vos paiements ou votre logique métier principale, une Zero Day est un scénario cauchemardesque. Il ne s'agit pas seulement d'un bug dans votre code ; il s'agit souvent d'un bug dans les bibliothèques sur lesquelles vous vous appuyez, le framework que vous avez utilisé pour construire l'API, ou même l'infrastructure cloud qui l'héberge. Lorsqu'une vulnérabilité comme Log4j survient, la panique ne vient pas du fait que les gens ne savaient pas comment coder ; c'est parce qu'ils ne savaient pas réellement où se trouvaient tous leurs composants vulnérables dans leurs environnements cloud tentaculaires.
La réalité est que le modèle de sécurité « ponctuel » est obsolète. Si vous ne testez vos API que tous les six mois, vous pariez essentiellement qu'aucune vulnérabilité majeure ne sera découverte pendant les cinq mois et vingt-neuf jours entre les tests. Dans un monde de pipelines CI/CD où le code est poussé en production plusieurs fois par jour, votre surface d'attaque change toutes les heures. Une API « sécurisée » le mardi peut devenir une porte grande ouverte le mercredi en raison d'une mise à jour de dépendance ou d'une petite erreur de configuration.
Alors, comment se préparer réellement à quelque chose qui est, par définition, inconnu ? Vous ne pouvez pas corriger une Zero Day avant qu'elle ne soit découverte, mais vous pouvez construire un système qui rend incroyablement difficile pour une Zero Day d'être utile à un attaquant. Cela signifie passer d'une posture réactive à une posture proactive. Cela signifie passer de « J'espère que nous sommes en sécurité » à « Je sais exactement à quoi ressemble ma surface d'attaque et comment elle se comporte. »
L'anatomie d'une attaque Zero Day sur une API
Pour résoudre un problème, il faut comprendre comment il se produit réellement. Une attaque Zero Day sur une API suit généralement un schéma spécifique. Elle commence par la reconnaissance. L'attaquant ne recherche pas nécessairement votre entreprise spécifiquement ; il utilise des outils automatisés pour scanner l'ensemble de l'espace d'adresses IPv4 à la recherche d'empreintes spécifiques. Il recherche une certaine version de serveur web, une passerelle API spécifique ou un modèle connu dans un en-tête de réponse HTTP.
Une fois qu'il trouve une cible correspondant au profil de la vulnérabilité Zero Day, il lance l'exploit. Parce qu'il s'agit d'une Zero Day, votre pare-feu d'applications web (WAF) n'a probablement pas encore de signature pour cela. La requête ressemble à un appel API normal, mais elle contient une charge utile qui déclenche une corruption de mémoire, une exécution de code à distance (RCE) ou un contournement d'authentification.
Le danger des « Shadow API »
L'un des plus grands multiplicateurs du risque Zero Day est l'existence de Shadow API. Ce sont des points d'accès que les développeurs ont créés pour les tests, des versions héritées d'une API qui n'ont jamais été désactivées (v1, v2, v2.1...), ou des points d'accès d'administration « cachés ». La plupart des équipes de sécurité ne protègent que la documentation officielle. Mais les attaquants ne lisent pas votre documentation ; ils utilisent le fuzzing et le forçage brutal de répertoires pour trouver les points d'accès dont vous avez oublié l'existence. Si une Zero Day touche une bibliothèque utilisée dans votre API v1 héritée, l'attaquant est à l'intérieur. De là, il peut souvent se déplacer latéralement à travers votre réseau pour atteindre vos bases de données de production.
Le piège de la chaîne de dépendances
Les API modernes sont rarement écrites de toutes pièces. Elles sont des assemblages de frameworks (comme Spring Boot, Express ou FastAPI) et de centaines de packages tiers via npm, PyPI ou Maven. Une Zero Day se cache souvent à trois ou quatre niveaux de profondeur dans votre arbre de dépendances. Vous utilisez peut-être une bibliothèque réputée pour la génération de PDF, mais cette bibliothèque utilise une autre bibliothèque pour le traitement d'images, et cette dernière présente une vulnérabilité de dépassement de tampon. C'est pourquoi « scanner votre code » ne suffit pas. Vous devez scanner l'ensemble de l'environnement d'exécution.
Pourquoi le Pentesting traditionnel échoue au test de la Zero Day
Pendant des années, la référence en matière de sécurité a été le Penetration Test annuel. Vous engagez une entreprise, elle passe deux semaines à pirater votre système et vous remet un PDF de 50 pages détaillant toutes vos erreurs. Ensuite, vous passez les trois mois suivants à corriger les découvertes « Critiques » et « Élevées ».
Le problème est qu'un pentest manuel est un instantané. Il vous indique que le 14 octobre, à 14h00, votre API était sécurisée contre les tests effectués par le consultant. Il ne vous dit absolument rien sur ce qui se passe le 15 octobre lorsque vous déployez une nouvelle mise à jour. Il ne vous protège certainement pas d'une Zero Day découverte en novembre.
Le fossé entre coût et rapidité
Les entreprises de sécurité spécialisées sont coûteuses. Parce qu'elles s'appuient sur une expertise humaine coûteuse, la plupart des PME ne peuvent se permettre qu'un ou deux tests par an. Cela crée un « fossé de sécurité » où l'entreprise se développe et le code évolue, mais la validation de la sécurité reste statique. Si vous êtes une startup SaaS cherchant à conclure un accord d'entreprise, vous pourriez précipiter un pentest juste pour obtenir le rapport pour le client, mais cela ne rend pas réellement votre API plus résiliente face à une Zero Day.
Le problème de la boucle de rétroaction
Dans un modèle traditionnel, le développeur écrit le code en janvier, il passe en production en février, et il découvre une vulnérabilité grâce à un pentest en juin. En juin, le développeur a oublié comment fonctionne cette logique spécifique. Le « temps moyen de remédiation » (MTTR) est énorme. Pour survivre aux Zero Days, la boucle de rétroaction doit se compter en minutes, pas en mois.
Construire une stratégie proactive de sécurité des API
Si vous ne pouvez pas prédire la Zero Day, vous devez minimiser le « rayon d'explosion ». Cela implique une combinaison de choix architecturaux et d'outils automatisés. L'objectif est la Gestion Continue de l'Exposition aux Menaces (CTEM). Au lieu d'un événement ponctuel, la sécurité devient un processus en arrière-plan qui ne s'arrête jamais.
1. Cartographie de la surface d'attaque (La phase « Connais-toi toi-même »)
Vous ne pouvez pas protéger ce que vous ignorez exister. La première étape d'une véritable stratégie de sécurité des API est la découverte automatisée. Vous avez besoin d'un outil qui cartographie constamment votre surface d'attaque externe. Cela inclut :
- Toutes les adresses IP publiques.
- Tous les sous-domaines (y compris ceux que votre équipe marketing a créés et oubliés).
- Tous les points d'accès API, y compris ceux non documentés.
- Les versions spécifiques des logiciels exécutés sur ces points d'accès.
Lorsqu'une nouvelle Zero Day est annoncée, la première question que votre équipe se posera est : « L'utilisons-nous ? » Si vous disposez d'une cartographie automatisée, vous pouvez y répondre en quelques secondes. Si ce n'est pas le cas, vous passerez les 48 prochaines heures à vérifier manuellement des feuilles de calcul et à interroger les développeurs sur Slack.
2. S'orienter vers le Penetration Testing as a Service (PTaaS)
C'est là que l'industrie évolue. Au lieu d'un événement annuel, vous utilisez des plateformes comme Penetrify pour exécuter des tests de sécurité automatisés et évolutifs. En intégrant le Penetration Testing automatisé dans votre environnement cloud, vous pouvez simuler des attaques chaque fois que votre infrastructure change.
Les outils automatisés peuvent s'occuper des tâches les plus évidentes — comme les risques du OWASP Top 10, les en-têtes mal configurés et les points d'injection courants — ce qui libère votre talent humain (ou les consultants coûteux que vous engagez occasionnellement) pour rechercher des failles de logique métier complexes que l'automatisation ne peut pas détecter.
3. Mettre en œuvre le Zero Trust au niveau de l'API
Cessez de supposer qu'une requête est sûre parce qu'elle provient de l'« intérieur du réseau » ou qu'elle possède un jeton valide. Le Zero Trust signifie que chaque requête est vérifiée.
- Validation stricte des entrées : Ne vous contentez pas de vérifier si un champ est du « texte ». Vérifiez s'il correspond à une expression régulière stricte. Si une API attend un UUID et reçoit une chaîne de 500 caractères, rejetez-la immédiatement. Cela élimine un pourcentage énorme d'exploits Zero Day qui reposent sur des dépassements de tampon ou des injections.
- Accès au moindre privilège : Votre API ne devrait avoir que les permissions dont elle a absolument besoin. Si votre API n'a besoin que de lire une table spécifique dans la base de données, ne lui donnez pas les permissions
db_owner. Si un Zero Day permet à un attaquant d'exécuter du code, son impact est limité par les permissions du compte de service.
S'attaquer au OWASP API Top 10 à l'ère de l'automatisation
Bien que les Zero Day soient la partie « effrayante », la plupart des violations se produisent encore à cause d'erreurs fondamentales. Le OWASP API Top 10 fournit une feuille de route des points où les API échouent généralement. Si vous automatisez la défense contre ceux-ci, vous faites de votre API une cible beaucoup plus difficile, même pour quelqu'un disposant d'un exploit Zero Day.
Autorisation au niveau de l'objet défaillante (BOLA)
BOLA est la vulnérabilité API la plus courante. Elle se produit lorsqu'un utilisateur peut accéder aux données d'un autre utilisateur en modifiant simplement un ID dans l'URL (par exemple, /api/user/123 devient /api/user/124).
Comment y remédier : Ne faites jamais confiance à l'ID envoyé par le client. Vérifiez toujours que l'utilisateur authentifié a le droit d'accéder à l'objet demandé dans la base de données.
Authentification utilisateur défaillante
Cela inclut des éléments tels que des exigences de mot de passe faibles, l'absence de MFA ou des jetons qui n'expirent jamais. Comment y remédier : Utilisez des standards établis comme OAuth2 et OpenID Connect. Ne développez pas votre propre logique d'authentification. Utilisez un fournisseur d'identité éprouvé.
Exposition excessive des données
De nombreuses API renvoient un objet JSON complet de la base de données et s'appuient sur le frontend pour filtrer les parties sensibles. Un attaquant se contente de regarder la réponse API brute et trouve tout. Comment y remédier : Implémentez des « Data Transfer Objects » (DTOs). Définissez exactement quels champs doivent être renvoyés pour chaque point de terminaison spécifique.
Manque de ressources et de limitation de débit
Si votre API ne limite pas le nombre de requêtes qu'un utilisateur peut effectuer, un simple script peut faire planter votre serveur ou être utilisé pour forcer des mots de passe par force brute. Comment y remédier : Implémentez la limitation de débit au niveau de la passerelle. Utilisez des algorithmes de type « leaky bucket » ou « token bucket » pour garantir une utilisation équitable.
| Vulnérabilité | Niveau de risque | Méthode de détection automatisée | Stratégie de remédiation |
|---|---|---|---|
| BOLA | Critique | Fuzzing des ID avec différents jetons d'authentification | Mettre en œuvre des contrôles d'autorisation au niveau des objets |
| Authentification brisée | Élevé | Test de l'expiration des jetons/secrets faibles | Utiliser des JWT avec une courte durée de vie et une rotation sécurisée |
| Données excessives | Moyen | Analyse du corps de la réponse pour les clés sensibles | Utiliser des DTO pour filtrer la sortie |
| Limitation de débit | Moyen | Tests de charge/Inondation de requêtes | Limitation de débit de la passerelle API et règles WAF |
| Injection | Critique | Injection de charge utile (SQLi, XSS, Commande) | Requêtes paramétrées et validation stricte des entrées |
Le rôle du DevSecOps dans la réduction du MTTR
L'objectif de l'intégration de la sécurité dans le pipeline CI/CD n'est pas seulement de trouver des bugs ; il est de réduire le temps moyen de remédiation (MTTR). Dans l'ancien monde, le temps entre la « découverte d'une vulnérabilité » et le « déploiement d'un correctif » pouvait être de plusieurs semaines. Dans un monde DevSecOps, ce temps est réduit à quelques heures.
Intégrer la sécurité dans le pipeline
Imaginez un flux de travail où, chaque fois qu'un développeur pousse du code vers un environnement de staging, une plateforme cloud-native comme Penetrify déclenche automatiquement une analyse ciblée.
- Commit de code : Le développeur pousse un nouveau point de terminaison API.
- Analyse automatisée : Le système identifie le nouveau point de terminaison et exécute une batterie de tests pour les vulnérabilités et les mauvaises configurations courantes.
- Retour immédiat : Le développeur reçoit un ticket Jira ou une alerte Slack indiquant : « Votre nouveau point de terminaison est susceptible à une attaque BOLA. »
- Correction rapide : Le développeur corrige le problème avant que le code n'atteigne la production.
Cette approche de « shift left » prévient l'accumulation de dette de sécurité. Lorsqu'un Zero Day fait finalement la une, votre équipe ne se bat pas contre une montagne d'anciens bugs ; elle se concentre uniquement sur la nouvelle menace.
Gérer le « bruit »
L'une des principales plaintes concernant les outils de sécurité automatisés concerne les « False Positives ». Si un outil crie « Critique ! » pour quelque chose qui n'est pas réellement un risque, les développeurs commencent à l'ignorer. C'est pourquoi vous avez besoin d'une plateforme qui fournit des conseils exploitables. Au lieu de simplement dire « Vulnérabilité d'injection trouvée », l'outil devrait fournir la requête spécifique qui a déclenché la faille et une explication claire sur la manière de corriger le code.
Scénario réel : Le Zero Day de la « Bibliothèque X »
Examinons un scénario hypothétique pour voir comment une stratégie proactive diffère d'une stratégie réactive.
L'événement : Une RCE (Remote Code Execution) critique est découverte dans la « Bibliothèque X », une bibliothèque populaire d'analyse JSON utilisée par des millions d'API.
L'équipe réactive (L'équipe d'audit « une fois par an »)
- Jour 1: Ils lisent les nouvelles. Ils lancent un fil de discussion Slack frénétique : "Utilisons-nous la Bibliothèque X ?"
- Jour 2: Ils demandent à chaque équipe de vérifier leurs fichiers
package.jsonoupom.xml. Certaines équipes répondent, d'autres non. - Jour 3: Ils réalisent qu'une API héritée dans un compte AWS oublié utilise la Bibliothèque X.
- Jour 4: Ils essaient de la patcher, mais l'API héritée tourne sur une ancienne version de Java qui n'est pas compatible avec le nouveau correctif.
- Jour 5: Ils se précipitent pour mettre en place une règle WAF, mais l'attaquant a déjà trouvé le point d'accès et exfiltré la base de données.
L'équipe proactive (L'équipe Penetrify)
- Jour 1: La Zero Day frappe. L'équipe de sécurité ouvre sa carte de surface d'attaque. Ils recherchent les empreintes de la "Bibliothèque X" dans tous leurs environnements cloud.
- Jour 1 (Heure 2): Ils identifient exactement trois points d'accès utilisant la version vulnérable de la bibliothèque.
- Jour 1 (Heure 3): Parce qu'ils disposent d'un pipeline CI/CD avec des tests de sécurité intégrés, ils déploient rapidement un correctif dans une branche et exécutent un test automatisé pour s'assurer que le correctif ne compromet pas la fonctionnalité de l'API.
- Jour 1 (Heure 5): Le correctif est déployé dans tous les environnements.
- Jour 1 (Heure 6): Ils exécutent un nouveau scan Penetrify pour vérifier que la vulnérabilité a disparu et qu'aucune nouvelle brèche n'a été ouverte pendant le correctif d'urgence.
La différence n'est pas que la deuxième équipe était "plus intelligente" — c'est qu'elle disposait de la visibilité et des outils pour agir rapidement.
Erreurs courantes dans les stratégies de sécurité des API
Même les entreprises dotées de budgets importants commettent ces erreurs. Si vous auditez votre propre stratégie, soyez attentif à ces signaux d'alarme :
Dépendance excessive au WAF
Un pare-feu d'application web (Web Application Firewall) est une excellente première ligne de défense, mais ce n'est pas une stratégie de sécurité. Les WAF fonctionnent principalement sur des signatures. S'il s'agit d'une Zero Day, il n'y a pas de signature. Se fier uniquement à un WAF, c'est comme avoir une serrure à votre porte d'entrée mais laisser les fenêtres ouvertes. Vous avez besoin de sécurité à l'intérieur de l'application (au niveau du code) et autour de l'application (au niveau de l'infrastructure).
Confondre "Conformité" et "Sécurité"
Être conforme SOC2 ou HIPAA ne signifie pas que vous êtes sécurisé. La conformité consiste à respecter une norme minimale et à le prouver par la documentation. Un auditeur veut voir que vous avez une politique de Penetration Testing. Il ne se soucie pas nécessairement si ce test était un scan superficiel qui a manqué 90 % de votre surface d'attaque. Ne laissez pas un audit "réussi" vous donner un faux sentiment de sécurité.
Ignorer les API internes
De nombreuses équipes se concentrent entièrement sur l'"API publique" et laissent les microservices internes grand ouverts. C'est une erreur majeure. Si un attaquant prend pied n'importe où dans votre réseau (peut-être via un e-mail de phishing à un employé), il recherchera immédiatement les API internes. Parce que les API internes sont souvent moins protégées — manquant parfois entièrement d'authentification — elles deviennent le chemin le plus facile vers les joyaux de la couronne.
Sous-estimer la documentation des API
L'utilisation d'outils comme Swagger ou OpenAPI est excellente pour les développeurs, mais si ces documents sont publics et détaillés, ils constituent également une feuille de route pour les attaquants. Bien que vous ne deviez pas cacher vos documents, vous devez vous assurer que les informations fournies ne révèlent pas trop de détails sur votre architecture interne ou les versions spécifiques des logiciels que vous utilisez.
Guide étape par étape : renforcer votre API dès aujourd'hui
Si vous vous sentez dépassé, n'essayez pas de tout corriger en même temps. Suivez cette approche progressive pour renforcer votre stratégie API.
Phase 1 : Visibilité immédiate (Semaine 1)
- Inventoriez vos points d'accès : Créez une liste de toutes les API que vous possédez. Si vous n'en avez pas, utilisez un outil de découverte automatisé pour les trouver.
- Auditez vos dépendances : Utilisez un outil d'analyse de composition logicielle (SCA) pour trouver toutes les bibliothèques tierces que vous utilisez.
- Vérifiez vos permissions : Examinez les utilisateurs de base de données que vos API utilisent. Supprimez toutes les permissions dont ils n'ont pas besoin.
Phase 2 : Combler les lacunes (Mois 1)
- Standardisez l'authentification : Migrez tout vers un fournisseur d'identité unique et sécurisé. Éliminez toutes les « clés secrètes » codées en dur dans le code source.
- Mettez en œuvre la limitation de débit : Définissez des limites de base sur tous les points d'accès publics pour prévenir les attaques DoS de base et le forçage brutal.
- Mettez en place une analyse automatisée : Commencez à effectuer des analyses automatisées hebdomadaires ou bihebdomadaires. C'est là qu'un service comme Penetrify entre en jeu, vous offrant une base de référence cohérente de votre posture de sécurité.
Phase 3 : Maturité continue (Trimestre 1 et au-delà)
- Intégrez dans le CI/CD : Automatisez vos analyses de sécurité afin qu'elles s'exécutent à chaque demande de tirage.
- Adoptez un programme de Bug Bounty : Une fois que vos outils automatisés ont éliminé les bugs « faciles », invitez des hackers éthiques à trouver les failles logiques complexes que vous avez manquées.
- Mettez en œuvre un cadre CTEM : Mettez régulièrement à jour votre carte de surface d'attaque et simulez des scénarios de violation pour voir jusqu'où un attaquant pourrait aller s'il exploitait un Zero Day.
FAQ : Naviguer dans la sécurité des API et les Zero Day
Q : Comment puis-je savoir si mon API est vulnérable à un Zero Day si la vulnérabilité n'est pas encore connue ?
R : Vous ne pouvez pas détecter une vulnérabilité inconnue spécifique, mais vous pouvez détecter les comportements que les Zero Day exploitent habituellement. Par exemple, si votre API commence soudainement à établir des connexions réseau sortantes inhabituelles ou à tenter d'accéder à des fichiers système (comme /etc/passwd), c'est un signe d'exploitation. C'est pourquoi la « Runtime Protection » et l'« Observability » sont tout aussi importantes que l'analyse.
Q : Le Penetration Testing automatisé remplace-t-il les testeurs humains ? R : Non. Les humains sont meilleurs pour le hacking « créatif » – trouver des failles de logique métier, comme manipuler un panier d'achat pour obtenir des articles gratuitement. Cependant, l'automatisation est meilleure pour le hacking « exhaustif » – vérifier 10 000 points d'accès pour 500 vulnérabilités connues différentes chaque jour. La meilleure stratégie utilise l'automatisation pour gérer le volume et les humains pour gérer la complexité.
Q : Mon API est interne uniquement. Ai-je vraiment besoin d'une stratégie de sécurité sophistiquée ? R : Oui. Le « périmètre » est un mythe. La plupart des attaques modernes impliquent un « mouvement latéral ». Un attaquant entre par un VPN vulnérable, un e-mail de phishing ou un ordinateur portable d'employé compromis, puis il recherche des API internes. Les API internes sont souvent le maillon faible car les développeurs supposent que le réseau est « sûr ».
Q : Quelle est la différence entre un scanner de vulnérabilités et une plateforme de Penetration Testing ? R : Un scanner de vulnérabilités est comme un inspecteur de bâtiment qui vérifie si les détecteurs de fumée fonctionnent et si les portes se verrouillent. Une plateforme de Penetration Testing (comme Penetrify) est davantage comme quelqu'un qui tente réellement de s'introduire dans le bâtiment en utilisant différentes méthodes pour voir s'il peut accéder au coffre-fort. L'un trouve des « failles », l'autre trouve des « chemins d'attaque ».
Q : À quelle fréquence dois-je mettre à jour les dépendances de mon API ? R : Aussi souvent que possible, mais en toute sécurité. Utilisez des outils qui vous avertissent dès qu'une mise à jour de dépendance est disponible. Cependant, exécutez toujours ces mises à jour dans un environnement de staging avec des tests automatisés pour vous assurer de ne pas casser votre API en essayant de la sécuriser.
Passer de la peur à la confiance
L'idée d'une Zero Day est intrinsèquement effrayante car elle représente l'« inconnu ». Mais l'objectif d'une stratégie de sécurité moderne n'est pas d'atteindre une perfection à 100 % – c'est impossible. L'objectif est de construire un système résilient.
La résilience signifie que lorsqu'une Zero Day est annoncée, vous ne paniquez pas. Vous ne passez pas des jours à fouiller d'anciennes feuilles de calcul. Au lieu de cela, vous disposez d'une cartographie claire de votre surface d'attaque, d'un moyen automatisé de tester vos défenses et d'un processus rationalisé pour déployer les correctifs.
La véritable sécurité ne provient pas d'un audit unique et coûteux une fois par an. Elle découle du travail fastidieux mais constant d'automatisation, de visibilité et d'une architecture de « confiance zéro ». En déplaçant votre attention des tests ponctuels vers la Gestion continue de l'exposition aux menaces, vous cessez de jouer au hasard et commencez à prendre le contrôle de votre infrastructure.
Si vous comptez toujours sur ce rapport PDF annuel pour vous sentir en sécurité, il est temps de changer d'approche. Les attaquants automatisent leur reconnaissance ; il est temps que vous automatisiez votre défense.
Prêt à dépasser le modèle de l'« audit annuel » ?
Cessez de deviner où se trouvent vos vulnérabilités. Penetrify vous offre la puissance du Penetration Testing continu et natif du cloud. Cartographiez votre surface d'attaque, identifiez les faiblesses critiques en temps réel et corrigez-les avant qu'elles ne fassent les gros titres.
N'attendez pas la prochaine Zero Day pour découvrir vos failles. Sécurisez vos API dès aujourd'hui.