1 points par GN⁺ 2025-02-26 | 1 commentaires | Partager sur WhatsApp
  • Le large principe de transparence de l’Illinois FOIA a été mis à l’épreuve face aux schémas de bases de données des organismes publics, et une demande portant sur la base de données des contraventions de stationnement Chicago CANVAS a débouché sur un procès et des discussions législatives
  • Le FOIA garantit fortement l’accès aux informations existantes, mais ne peut pas imposer la création de nouveaux documents ; plus les données se trouvent dans des applications, plus le schéma, qui indique quelles requêtes demander, devient important
  • Chicago a soutenu que le schéma CANVAS menaçait la sécurité, et le point central du procès était de savoir si sa divulgation rendrait réellement possible, ou faciliterait, une attaque par injection SQL
  • En première instance et en appel, le camp de la divulgation a gagné, mais l’Illinois Supreme Court a considéré le file layout comme une catégorie exemptée en soi et a jugé qu’un schéma SQL en relevait également
  • Aujourd’hui, les organismes publics de l’Illinois peuvent refuser de divulguer les schémas de bases de données ; le SB0226 vise à les obliger à fournir une description de la structure des bases de données afin que les demandeurs puissent solliciter des requêtes de base de données précises

Le problème rencontré par l’Illinois FOIA face aux bases de données

  • L’Illinois FOIA traite en principe les informations collectées par les organismes publics comme un bien public, avec des exceptions limitées
    • Les demandeurs ne se voient généralement pas facturer de frais
    • Les organismes publics ne peuvent pas facilement limiter le nombre de demandes
    • Le délai de réponse est de 5 jours par défaut, avec 5 jours supplémentaires en cas de demande écrite de prolongation
    • En cas de procès contre un refus injustifié, il est possible de récupérer les frais d’avocat
  • Une limite majeure est que le FOIA ne peut pas obliger un organisme public à créer un nouveau document
    • Si le rapport souhaité existe déjà, il peut être demandé
    • S’il n’existe pas, il faut demander les données brutes et les assembler soi-même
  • À mesure que les informations des organismes publics se trouvent davantage dans des applications et bases de données spécialisées que dans des classeurs, des disques partagés ou des documents Word, la valeur des schémas augmente
  • Un schéma de base de données est une structure qui contient les noms de plusieurs tables et les noms des colonnes de chaque table
    • Dans l’article, il est comparé à un fichier Excel comportant plusieurs onglets
    • Le nom de chaque onglet et la ligne d’en-tête de chacun correspondent au schéma

La demande de Matt Chapman concernant le schéma CANVAS

  • Matt Chapman est présenté comme un civic hacker qui fait du data journalisme en s’appuyant sur de nombreuses demandes FOIA
  • En travaillant sur les données des contraventions de stationnement de Chicago, un système appelé CANVAS est apparu
    • CANVAS est le dépôt central qui contient toutes les données de contraventions de stationnement de Chicago
    • Matt Chapman a demandé le schéma de la base de données CANVAS via le FOIA afin de comprendre ce qu’elle contenait
  • Chicago a refusé la demande en invoquant une exception de l’Illinois FOIA liée au traitement automatisé des données
    • Cette disposition inclut les logiciels, les protocoles opérationnels, les descriptions de programmes, les file layouts, les listes de sources, les modules, les guides utilisateur, les documents de conception logique et physique, les manuels du personnel, etc.
    • Les informations susceptibles de menacer la sécurité des systèmes ou des données en cas de divulgation sont également énumérées parmi les exceptions
  • Chicago a qualifié Matt Chapman de « hacker » et soutenu que le schéma CANVAS pourrait représenter un risque pour la ville s’il tombait entre de mauvaises mains

Le point technique central au tribunal : l’injection SQL

  • La question centrale du procès était de savoir si la divulgation du schéma CANVAS rendrait possible une attaque par injection SQL
  • SQL est un langage utilisé par de nombreux programmes pour dialoguer avec des bases de données, et l’injection SQL est une faille de sécurité qui peut apparaître dans les programmes utilisant SQL
  • Une injection SQL se produit quand une entrée utilisateur est mal insérée dans un modèle de requête SQL au sein du code applicatif
    • Par exemple, dans une requête où le nom est entouré de guillemets, une entrée contenant une apostrophe comme Bob O’Connor peut perturber l’interprétation par la base de données
    • Un attaquant peut exploiter ce type de point d’entrée pour faire exécuter le reste de l’entrée comme du code
  • Bruce Coffing, CISO de Chicago, a affirmé que la divulgation du schéma aiderait les attaquants de trois façons
    • Elle leur permettrait de trouver des vulnérabilités
    • Elle rendrait la recherche de vulnérabilités plus discrète
    • Elle les aiderait à choisir les applications qui valent le plus la peine d’être attaquées
  • L’argument inverse insistait sur le fait que le schéma n’est pas l’endroit où l’on trouve les vulnérabilités d’injection SQL
    • Les vulnérabilités d’injection SQL se trouvent dans les modèles de requêtes SQL du code source applicatif, pas dans le schéma de la base de données
    • La demande visait le schéma, proche des lignes d’en-tête des tables, et non le code source
    • Un attaquant peut récupérer le schéma par injection SQL ; le schéma ressemble davantage au résultat de l’attaque qu’à son préalable

Les décisions en première instance et en appel

  • En première instance, Matt Chapman a gagné
    • Chicago a immédiatement fait appel, et Matt Chapman n’a pas reçu le schéma CANVAS
  • La cour d’appel a traité les questions de droit en partant du principe que le tribunal de première instance était le principal juge des faits
  • Le critère « would jeopardize » concernant le risque lié à la divulgation est devenu un point de débat
    • « could » renvoie à un niveau où l’on peut imaginer qu’un événement puisse se produire
    • Le critère juridique de « would » est décrit comme exigeant des preuves claires d’un préjudice ne laissant pas de doute raisonnable au juge
    • La cour d’appel a retenu une approche selon laquelle la probabilité de préjudice devait être très élevée
  • La cour d’appel s’est penchée sur la question de savoir si la clause restrictive de l’exception ne s’appliquait qu’à « any other information » ou à l’ensemble des « Administrative or technical information » de l’exception
    • Si elle ne s’applique qu’à « any other information », les file layouts et autres éléments sont exemptés en eux-mêmes
    • Si elle s’applique à toute l’exception, une simple constatation factuelle selon laquelle la divulgation ne menace pas la sécurité suffit à faire gagner Matt Chapman
  • La cour d’appel a estimé que la clause restrictive s’appliquait à toute l’exception et a donné raison à Matt Chapman

Une conclusion renversée par l’Illinois Supreme Court

  • Chicago a de nouveau fait appel, et l’affaire est arrivée devant l’Illinois Supreme Court
  • L’Illinois Supreme Court a interprété l’exception du FOIA différemment de la cour d’appel
    • La clause restrictive ne s’applique qu’à « any other information »
    • Les autres éléments sont exemptés en eux-mêmes
  • Avec cette décision, la question décisive est devenue de savoir si un schéma SQL est un file layout
  • Un contre-argument a été avancé : schéma et file layout sont techniquement différents
    • Un même schéma SQL peut être utilisé par plusieurs moteurs de bases de données
    • Chaque moteur de base de données gère les données résultantes avec un underlying file layout différent
    • Le McGraw-Hill Dictionary of Scientific & Technical Terms, 6E définit un file layout comme une « description de l’agencement des données dans un fichier »
    • Un schéma SQL est plutôt une abstraction conçue pour éviter d’avoir à penser à l’agencement réel des données
  • L’Illinois Supreme Court a également utilisé la définition de schema du Merriam-Webster Online Dictionary : « structured framework or plan: outline »
    • La cour a jugé que la différence n’était qu’une question de nom
    • En conséquence, le schéma a été traité comme un file layout, et Matt Chapman a perdu

Situation actuelle et SB0226

  • Aujourd’hui, les organismes publics de l’Illinois peuvent refuser la divulgation des schémas de bases de données
  • À mesure que les données migrent vers des applications spécialisées, il devient de plus en plus nécessaire de demander, via le FOIA, l’exécution de requêtes de base de données pour accéder aux données de base
  • Il reste un problème : les bases de données ne devraient pas devenir une zone refuge permettant aux collectivités locales d’échapper à la transparence des informations publiques
  • SB0226 vise à ajouter au FOIA une formulation obligeant les organismes publics à fournir une description suffisante de la structure de toutes les bases de données qu’ils administrent
    • L’objectif est de permettre aux demandeurs de solliciter auprès des organismes publics l’exécution de requêtes de base de données précises
  • Ce projet de loi s’inscrit largement dans la continuité du travail de Matt Chapman, qui n’a cessé de soulever ce problème

1 commentaires

 
GN⁺ 2025-02-26
Avis sur Hacker News
  • Je suis le plaignant dans cette affaire. Je suis encore en train de rédiger un billet compagnon à celui de tptacek, qui devrait être prêt bientôt ; en attendant, vous pouvez poser vos questions ici.
    Pendant que vous attendez, vous pouvez aussi consulter cet ancien billet : https://mchap.io/that-time-the-city-of-seattle-accidentally-...

    • Matt fait vraiment un travail nécessaire.
      Cela dit, il faut garder à l’esprit que Matt, même avec le soutien de Loevy and Loevy, l’un des meilleurs cabinets d’avocats spécialisés dans les droits civiques du pays, a techniquement perdu. Cela montre à quel point il est absurdement difficile de se battre contre une mairie, et c’est encore pire sans avocat.
      Ce qui jouerait en notre faveur, comme le suggère l’article, c’est de changer la loi. Une fois que la Cour suprême de l’État a rendu sa décision, sans amendement, c’est fini ; et l’Illinois a l’habitude de modifier fréquemment sa loi FOIA. Cela dit, certaines de ces modifications sont allées non pas vers davantage de transparence, mais vers un renforcement de la non-divulgation des informations.
      Un autre changement nécessaire serait d’imposer de lourdes sanctions aux organismes qui perdent ce type de bataille. Dans l’Illinois, cela se limite à une amende civile de 5 000 dollars contre l’organisme. La notion même d’amende civile est définie de manière assez floue ; auparavant, elle était versée au plaignant, mais dans des affaires que j’ai menées plus tard, on s’est contenté de faire verser l’argent au comté. Comme l’a dit un procureur d’État : « Peu m’importe de perdre, je n’ai qu’à me faire un chèque à moi-même. »
      Enfin, il faut faire attention à ce que l’on demande dans un procès. Une décision d’appel comme celle-ci peut venir figer dans le droit précisément ce contre quoi je me battais. Ce n’est la faute de personne, mais cela arrive vraiment. J’ai moi-même obtenu une décision aberrante qui, au lieu de renforcer les droits des détenus, les a supprimés.
    • J’ai du mal à comprendre l’argument selon lequel connaître les noms des colonnes n’aide pas un attaquant. Avec une base de données qui n’autorise pas les jokers, n’est-il pas bien plus facile de savoir qu’on peut faire '); SELECT col FROM logins que de devoir deviner les noms de colonnes ?
      Je ne vois pas non plus très bien comment contester le raisonnement du tribunal sur le schéma et l’organisation des fichiers. Le schéma n’est pas exactement l’organisation des fichiers elle-même, mais il y ressemble : il indique comment les « fichiers » (enregistrements) sont disposés dans le « système de fichiers » (tables de base de données). Par exemple, la dénormalisation ressemble beaucoup au fait de mettre des données inline dans des enregistrements de fichiers. L’idée qu’un système de fichiers est en réalité une base de données est aussi bien connue. Je me demande comment on peut soutenir que les deux ne sont pas analogues.
    • Je me demande si une demande du type « une ligne de chaque table de la base de données CANVAS » serait possible.
    • C’est impressionnant d’avoir tenu bon dans ce combat. On n’obtient de la transparence que lorsque les gens refusent de se satisfaire du statu quo.
      Je me demande quelle est, selon vous, la prochaine étape.
    • Que cachent donc les administrateurs de CANVAS ?
  • Je pense que la ville devrait partager le schéma et qu’elle invoque en pratique la sécurité par l’obscurité, mais je ne suis pas d’accord avec la prémisse centrale de l’article selon laquelle « connaître le schéma SQL n’aide pas un attaquant ».
    J’ai compris l’argument ainsi : « Les attaquants récupèrent le schéma SQL au moyen d’attaques par injection SQL. Le schéma n’est pas un préalable à l’attaque, c’en est le produit. » Cela semble vouloir dire que si l’on trouve une vulnérabilité, on peut de toute façon récupérer le schéma, mais ce n’est pas toujours le cas. Certaines injections SQL ne permettent de récupérer qu’une partie des données de la table actuellement interrogée, sans accès à d’autres tables comme information_schema. Si les seuls signaux fournis par la vulnérabilité sont « échec de la requête » ou « réussite de la requête, données renvoyées », connaître le schéma rend l’exploitation beaucoup plus facile.
    Si les requêtes de base de données échouées sont journalisées séparément, il est probable que les injections qu’une attaque tournant 24 h/24 peut trouver aient déjà été corrigées. Les logs peuvent alors rester relativement calmes jusqu’à ce qu’un véritable point d’injection soit découvert, par exemple une faille accessible uniquement aux utilisateurs connectés et donc introuvable par les bots ; à ce moment-là, on a peut-être le temps de la voir et de la corriger avant que l’attaquant ne trouve réellement comment l’exploiter.
    Connaître le schéma accélère non seulement l’exploitation d’une vulnérabilité, mais augmente aussi la probabilité d’explorer l’injection dès le départ sans provoquer d’échecs de requête.

    • Si le critère est « connaître le schéma SQL n’aide pas un attaquant », alors connaître le nom du service aide aussi un attaquant, connaître les noms des agents municipaux aide aussi, et savoir ce qu’est juridiquement une contravention de stationnement aide aussi. Si quelqu’un poursuivi en justice veut ensuite pirater l’administration, connaître les détails de son propre procès l’aide aussi dans son attaque.
      Le critère ne devrait pas être « censurer toute information utile », mais « ne pas divulguer de code révélant des mots de passe ou des backdoors ». Un schéma ne peut pas entrer dans cette catégorie.
    • Je ne suis pas un attaquant, seulement un développeur logiciel ordinaire, mais s’il y a une injection SQL, j’estime qu’en ce qui concerne le schéma, tout est pratiquement déjà perdu.
      Cela dit, j’ai déjà travaillé sur des applications où connaître le schéma aidait à exfiltrer des données même sans injection complète. L’exemple le plus évident est celui d’une requête construite à partir de paramètres d’URL sans que ces paramètres soient limités par une liste d’autorisation.
      Je suis donc d’accord pour dire que le schéma peut donner un léger avantage à un attaquant.
    • Cela me rappelle que la récente vulnérabilité de « fuite d’e-mails via YouTube » a commencé par la lecture de ce qu’on peut essentiellement considérer comme un schéma.
      https://brutecat.com/articles/leaking-youtube-emails
    • Si les requêtes de base de données échouées sont journalisées séparément et que cet « échec » signifie « signe d’injection SQL », alors rien de ce que l’on peut faire avec le schéma ne réduira ce signal. Une seule erreur de syntaxe SQL mérite déjà d’être suivie.
      Je pense donc que cet argument ne tient pas.
    • Une injection SQL en aveugle est un type d’attaque où aucune erreur ne se produit, mais où des signaux subtils permettent de distinguer succès et échec. Le cas le plus intéressant que je connaisse était une réponse, apparemment normale, à une injection réussie qui faisait 1 octet de plus qu’une injection échouée ; cela a permis non seulement de découvrir le schéma, mais aussi d’exfiltrer entièrement toute la base de données.
      Rien dans les logs du serveur n’indiquait une erreur.
      Même les exercices d’injection SQL plutôt introductifs que j’enseignais se faisaient pour la plupart sans connaître le schéma. C’est pour cela que l’injection SQL est si sournoise et dangereuse.
  • Kurt a posté ça pour me troller. Il faut savoir que le lectorat visé à l’origine était surtout composé de non-techniciens impliqués dans la politique municipale de ma région, Chicagoland.
    Pour faire un peu de sensibilisation civique à la politique locale : s’impliquer dans la politique nationale, c’est aussi sombre et démoralisant que d’être un moucheron qui s’écrase contre la vitre d’un gratte-ciel. En revanche, la politique locale est extrêmement réactive. Avec mon temps libre et quasiment aucun budget, j’ai obtenu de vrais résultats, et j’ai même contribué à faire adopter une loi. C’est radicalement différent de la politique nationale.
    Ce qui est surprenant dans beaucoup d’endroits, c’est que la politique locale tourne autour de forums de discussion. Ce ne sont peut-être pas les forums où vous avez envie d’être, et il y a notamment beaucoup de groupes Facebook, mais il faut faire avec. Si vous aimez participer à des communautés comme HN, vous pouvez aussi participer à la politique, et une simple activité sur des forums peut suffire à faire avancer les choses.

    • Le fait de vivre dans un pays où les collectivités locales ont le pouvoir de faire des lois joue aussi beaucoup. Dans beaucoup d’autres pays, ce n’est pas le cas ou, plus précisément, leurs pouvoirs législatifs sont extrêmement limités.
      En fait, même aux États-Unis, c’est souvent le cas. Seules les collectivités locales disposant du pouvoir de home rule peuvent adopter des ordonnances sur n’importe quel sujet tant qu’elles n’entrent pas en conflit avec le droit de l’État ou le droit fédéral ; les autres ne peuvent légiférer que sur les sujets spécifiques autorisés par le parlement de l’État. Certains États accordent le home rule à tous les comtés et municipalités, d’autres à aucun, et d’autres seulement à certains. Par exemple, au Texas, une municipalité peut obtenir le pouvoir de home rule lorsqu’elle atteint 5 000 habitants et que les électeurs l’approuvent.
    • Je serais curieux d’en savoir plus sur la loi que tu as aidé à faire adopter.
      Je serais aussi curieux de savoir si tu peux partager de bonnes ressources, sur Facebook ou ailleurs, pour quelqu’un qui voudrait s’impliquer davantage dans la politique de Chicago. J’ai déjà cherché, mais avec des résultats très limités.
    • « Ne doutez jamais qu’un petit groupe de citoyens réfléchis et engagés puisse changer le monde. En réalité, c’est toujours ainsi que le monde a changé. » — Margaret Mead
    • Je me demande comment on trouve ce genre de forums.
    • Cela me rappelle les efforts que toi et Maciej aviez faits pour distribuer des clés FIDO aux équipes de campagne électorale, et c’était vraiment déprimant.
  • N’est-il pas absurde que la Cour suprême et la cour d’appel se soient divisées sur une question de structure de phrase ? Même si c’est courant, interpréter le texte comme « tous les emplacements de fichiers et autres éléments sont concernés, mais seulement les mauvais autres éléments », personnellement, je trouve ça insensé. Je trouve étrange que l’on accepte que le libellé d’une loi reste complètement ambigu.
    Je sais bien que ce genre d’ambiguïté arrange les tribunaux, qui y gagnent une marge d’appréciation, et que malgré de vaillantes tentatives, on ne peut pas transformer le langage juridique en une langue « formellement complète ». Je sais que le droit est un bazar, et que les lois sont écrites par des humains naïfs et faillibles.
    Mais si la structure grammaticale de base inscrite dans la loi n’est même pas claire pour les tribunaux, tout le système n’échoue-t-il pas dès la première étape ?

    • Je ne suis pas avocat, mais c’est ainsi que je comprends le fonctionnement du système judiciaire. Le langage est plein d’ambiguïtés, et des personnes raisonnables peuvent donc diverger sur le sens exact d’une phrase complexe. Il y a des débats sur ce que dit exactement la Constitution américaine depuis le jour où elle a été rédigée, et il existe encore beaucoup de désaccords.
      La réponse habituelle est qu’il faudrait écrire les lois sans ambiguïté, mais c’est plus facile à dire qu’à faire. De plus, les législateurs eux-mêmes ne parviennent pas toujours à un accord complet, et laissent parfois volontairement certains passages ambigus pour que les tribunaux les interprètent.
    • Ce genre de litige me semble être précisément la raison d’être de plusieurs niveaux de juridictions d’appel. La partie sur le « format de fichier » était vraiment stupide et mal jugée, mais l’interprétation juridique de « si elle est rendue publique » semble nécessiter une décision définitive et cohérente.
  • Suis-je le seul à trouver un peu déconcertant et inquiétant que l’exception pour le code source ait été intégrée aussi directement ?
    On peut facilement imaginer un scénario où une ville développe en interne un logiciel donné et cache dans le code source des « biais » ou d’autres éléments qu’elle ne voudrait pas voir exposés.
    Il n’est même pas nécessaire de tout créer à partir de zéro. Il suffit de patcher et d’utiliser un composant tiers sous licence permissive.
    À mon avis, l’amendement proposé ne va pas assez loin.

    • Je ne trouve pas ça surprenant.
      C’est le même problème que rencontrent les gens qui essaient de convertir un projet fermé en open source. Du code propriétaire pour lequel les développeurs et les clients ont seulement le droit d’utilisation, mais pas le droit de partager les sources, est verrouillé un peu partout.
      Même un projet conçu dès le départ avec une forte orientation open, sans intérêts commerciaux directs comme ceux d’un contractant public, peut rencontrer ce problème. Les problèmes auxquels le noyau Linux est confronté lorsqu’il prend en charge ZFS ou des pilotes sous forme de blobs binaires dans l’espace noyau/utilisateur sont bien connus[1].
      Paradoxalement, d’un côté, l’information veut être libre, et économiquement, les logiciels open source finiront avec le temps par évincer leurs concurrents fermés. Mais le passage d’un projet en open source est lui-même coûteux, parfois au point d’être impossible à assumer, ce qui empêche de publier d’anciens outils même lorsque les mainteneurs et les entreprises le souhaitent. Le simple fait d’impliquer l’équipe juridique et d’identifier les ayants droit de chaque composant suffit à faire renoncer la plupart des mainteneurs.
      Si l’État exigeait dans ses contrats que les fournisseurs n’utilisent que des composants open source dans tout l’arbre des dépendances, les coûts pourraient devenir très élevés. Beaucoup de dépendances n’ont pas d’équivalent open source comparable, ou bien les alternatives fermées disposent de fonctionnalités manquantes qu’il faudrait financer. À court terme, aucun conseil n’accepterait ces coûts supplémentaires, mais à long terme, le public y gagnerait.
      [1] Il est vrai que les problèmes du noyau sont en grande partie une fonction de la GPL. Avec des licences plus permissives comme Apache 2 ou MIT, ces problèmes n’auraient pas existé, et les systèmes de la famille BSD n’ont pas eu de difficulté à prendre en charge ZFS. Cela dit, l’idée selon laquelle les applications publiques devraient par principe être open source est, du point de vue des licences, plus proche de la GPL que de MIT. Sinon, un fournisseur pourrait mettre les parties réellement importantes dans du code blob binaire « vendorisé » et ne laisser dans les composants publics qu’un squelette sans intérêt pour satisfaire aux exigences.
    • En théorie, la décision même d’intégrer ce genre de biais dans le code devrait être une information publique. On peut demander selon quels critères le logiciel a été construit ; c’est seulement le logiciel lui-même qu’on ne peut pas demander.
      Cela dit, une telle décision de justice peut avoir un effet dissuasif.
    • C’est pourquoi il est important de pousser des initiatives du type argent public - open source, comme certains pays de l’UE essaient de le faire.
      Si je me souviens bien, l’ancienne coalition allemande, aujourd’hui disparue, l’avait inscrit dans son programme, mais ne l’a pas mis en œuvre. Le nouveau gouvernement le fera peut-être.
  • Article très intéressant
    Considérer la divulgation du schéma comme quelque chose à protéger paraît absurde. Si l’on suit l’explication donnée, on arrive à un résultat presque magique du genre : « c’est dans la base de données, donc on ne peut rien savoir, et si l’on ne peut pas dire comment le trouver, c’est fichu »
    Travaillant dans une petite entreprise avec beaucoup de clients, je ne voudrais pas non plus fournir tel quel le schéma de la base de données, mais nous faisons quand même des efforts pour trouver et fournir les données que veulent les clients ; nous ne refusons pas

    • Si une entreprise privée ne veut pas divulguer son schéma de base de données, c’est parce que des concurrents pourraient en tirer avantage en voyant comment elle travaille. Cette logique ne s’applique pas aux bases de données gouvernementales
  • Pour le projet cleartap.com, j’ai demandé via la FOIA plus d’un million de pages de documentation sur les bases de données américaines de qualité de l’eau
    La plupart des États n’ont facturé qu’une petite somme pour rassembler les documents
    Le Michigan a demandé 50 000 dollars pour la requête FOIA. Je pense que c’était à cause de la crise de contamination au plomb de Flint. Ils voulaient probablement me faire renoncer

    • J’ai vu qu’il y avait des données sur Flint ; je me demande si tu as réellement payé cette somme. Ou bien s’il existe une procédure d’appel lorsqu’on reçoit une estimation abusivement élevée
      Le projet est excellent
  • « Récupère toutes les données de contraventions de stationnement émises à Bob O, ainsi que toutes les autres informations de la base de données et les mots de passe de tout le monde. »
    C’est un exemple d’injection SQL écrit en anglais courant, mais ici aussi, « everyone's » pose problème parce qu’il introduit une apostrophe orpheline. Si « Bob O'Conner » est problématique, alors « everyone's » l’est aussi

  • « Le code source des programmes qu’ils exécutent ne peut généralement pas non plus être demandé via la FOIA. »
    Malheureusement, je pense que cette partie devrait être illégale au regard de la FOIA
    Le code source devrait être open source et vérifiable. S’il devient une exception à la FOIA, cela contourne la confiance du public dans l’usage des logiciels par l’État
    Je me demande où et comment les tribunaux ont déjà tranché ce type de question

    • Même avec un argument d’intérêt public solide, je pense que les administrations ont tendance à vouloir interdire en bloc la publication du code source pour la même raison principale que les entreprises : il est beaucoup trop probable que des informations sensibles comme des mots de passe, des tokens ou des adresses IP soient codées en dur dans du code très éloigné de l’esprit des applications à douze facteurs, et si ces informations sensibles fuitent, les problèmes de sécurité et de responsabilité deviennent énormes
      Il peut aussi exister une logique métier que les administrations veulent réellement garder secrète et qu’elles ont légalement le droit de protéger. Dans le cas de la base de données de contraventions de stationnement de l’article original, le code source du logiciel qui communique avec cette base pourrait contenir la logique déterminant quand et où les agents de stationnement mèneront des opérations de contrôle intensif « aléatoires »
  • C’est ce genre de choses qui m’a fait renoncer à faire du droit. Une grande partie des procès ressemble à du théâtre kabuki : non pas une rhétorique destinée à parvenir à un résultat juste ou logique, mais une rhétorique qui sert à fournir à une personne en position d’autorité le prétexte pour prendre une décision qu’elle voulait déjà prendre avant même le procès

    • Cette affaire donne aussi cette impression. Ce qui m’a particulièrement frappé, c’est le passage où l’expression « n’a qu’une légère valeur » est qualifiée de « réserve égocentrée façon forum de discussion ». En réalité, cette expression est tout simplement exacte, mais l’auteur semble conclure qu’il n’aurait pas dû le dire parce que le mot « légère » et la longue explication n’étaient pas aussi utiles rhétoriquement que de dire simplement « aucune »
      Quelqu’un peut parfaitement mettre en place légalement un système ressemblant à un pare-feu web qui recherche dans les requêtes HTTP des mots-clés comme information_schema et leurs variantes encodées. Comme il s’agit toujours de tentatives de piratage, cela peut être bloqué. Si l’on connaît déjà le schéma, on peut construire la requête sans avoir à contourner d’abord cette contrainte. Est-il très probable que ce soit un obstacle sérieux ? Non. Est-ce lié à l’égocentrisme ? Je ne vois pas en quoi
      Dire que cela a une valeur minime, simplement au sens de « périphérique », c’est-à-dire non central et pas assez important pour mériter discussion, me paraît exact. Mais lorsqu’on ne dit que la vérité, la partie adverse peut l’amplifier et tenter de convaincre le tribunal : « voyez, même leur expert reconnaît qu’il y a une valeur ». L’expert en conclut donc qu’il aurait simplement dû dire « cela n’a aucune valeur ». Je pense que cette phrase est fausse, mais elle est fausse de manière tellement minime qu’il est difficile de prouver que l’autre partie n’a pas entièrement raison. Au final, une formulation moins exacte devient plus avantageuse dans ce tribunal, et la rhétorique compte autant que le rôle d’expert