Journal Il y a de grand malade sur Terre...

Posté par . Licence CC by-sa
Tags : aucun
24
17
jan.
2018

mais c'est impressionnant, vraiment impressionnant. Je vous laisse lire le lien associé. Je sais c'est juste un journal bookmark mais c'est juste fou pour ne pas être partagé avec la bande de geek que vous êtes :)

Juste pour un petit ersatz cela parle de l’éditeur d’équation de Microsoft Office et de la correction d'un bug quand tu n'as pas les sources.

https://0patch.blogspot.co.uk/2017/11/did-microsoft-just-manually-patch-their.html?m=1

  • # Faut pas confondre

    Posté par (page perso) . Évalué à 10.

    s/malade/docteur/

  • # Présent !

    Posté par (page perso) . Évalué à 10.

    Ça me rappelle de bons souvenirs ça… :-)

    J'avais fait quelque chose de similaire (en moins fou / ambitieux en termes de patch) il y a quelques années avec un vieux jeu Windows qui fonctionnait encore bien mais qui n'émettait plus aucun son (ou musique ?). Il avait été codé pour Windows 98 je pense, et j'essayais de le faire tourner sous XP ou 7.

    J'avais examiné la liste des fonctions de l'exécutable, suivi la piste à partir du main(), désassemblé les fonctions intéressantes jusqu'à tomber sur l'initialisation audio, pour me rendre compte au final que le jeu ne gérait pas de nouvelles constantes retournées par l'API Windows et qui concernaient les capacités musicales de la machine. En gros, au fond d'un switch, le jeu avait une logique « valeur inconnue → pas de musique ».

    Si je me souvient bien j'avais pas fait très fin, j'avais juste corrigé une des valeurs dans le switch pour correspondre à ce que retournait l'API Windows dans mon cas (qui était le nouveau cas standard sur les Windows récents). Et hop, retour de la musique !

    Au final, j'avais presque dû passer autant de temps à faire ce patch qu'à jouer au jeu. :-)

    Rien d'exceptionnel dans le petit monde de l'abandonware et/ou du craquage, mais c'est amusant de voir que même Microsoft peut se retrouver à utiliser de telles techniques.

    • [^] # Re: Présent !

      Posté par . Évalué à 4.

      Je ne connaissais pas ce genre de technique et je trouve ça super fort.

  • # Patch à la volée

    Posté par . Évalué à 7.

    Chez MS, ils font ça tellement souvent qu'ils ont prévu de quoi patcher leur code à la volée.

    • [^] # Re: Patch à la volée

      Posté par . Évalué à 5.

      Je vais sûrement dire une connerie mais cela n'est pas un truc un peu dangereux ? Cela ne serait-il pas utilisable pour introduire à la volé des trou de sécurité ?

      • [^] # Re: Patch à la volée

        Posté par (page perso) . Évalué à 10.

        Pour ça il faudrait qu'un processus ait le droit de lancer un autre processus puis de modifier la mémoire de ce processus qui contient le code exécutable. Autant c'est classique et normal et lancer un autre processus, autant la modification de la partie "code exécutable" de la mémoire est réservée au système d'exploitation.

        Bref, c'est pas particulièrement dangereux, parce qu'il faut être root (ou Administrateur ou SYSTEM) sur le système d'exploitation pour faire ça. Et quand tu es root, tu peux tout niquer de toute façon, notamment modifier l'exécutable sur le disque dur tout autant qu'en RAM.

        • [^] # Re: Patch à la volée

          Posté par . Évalué à 4.

          Merci de l'explication, je dois avouer que je n'avais pas pense a fait d'etre admin ou pas.

          Je ne travaille pas du tout sur ce genre de technique et je ne touche jamais a mes binaires (je suis pas tare je suis bien conscient de la catastrophe que je mettrai dedans :) ).

          Mais par contre cela peut (et doit) etre utilise pour modifier les binaires et propager des trucs pas propres non? D'ou le fait d'etre sur de la ou tu recuperes un logiciel et aussi de MD5 ou equivalent pour verifier que le binaire est bien celui attendu.

          La encore je peux dire des conneries :)

          • [^] # Re: Patch à la volée

            Posté par . Évalué à 4.

            Mais par contre cela peut (et doit) etre utilise pour modifier les binaires et propager des trucs pas propres non? D'ou le fait d'etre sur de la ou tu recuperes un logiciel et aussi de MD5 ou equivalent pour verifier que le binaire est bien celui attendu.

            Pas vraiment. Si tu fait du hot patching, c'est que tu veux pouvoir mettre à jour un logiciel sans même l'arrêter (par exemple corriger une faille de sécurité sans avoir à redémarrer un serveur. Ce n'est pas plus sale qu'une mise à jour classique. Bien sur tu vas vérifier que c'est le bon patch de la même façon que tu récupère un bon logiciel, mais en soit un hot-patch n'a rien de différent par rapport à une mise à jour (en terme de précaution à prendre quand tu l'installe). Normalement sur le long terme tu vas également télécharger une mise à jour pour avoir un binaire propre (vu que tu vas avoir un goto suivis d'un autre goto, donc quelques cycles de perdu à chaque fois que tu passe par une fonction hot-patchée).

            bépo powered

          • [^] # Re: Patch à la volée

            Posté par . Évalué à 2.

            Mais par contre cela peut (et doit) etre utilise pour modifier les binaires et propager des trucs pas propres non?

            D'un point de vue sécurité, dés que tu peux modifier le code exécutable d'un process, tu as le même niveau d'accès que lui. La méthode décrite ne change rien au niveau des barrières. Si tu avais le droit de modifier le code, ça te permet de le faire proprement. Si tu n'avais pas le droit, ça ne te facilitera pas la vie.

        • [^] # Re: Patch à la volée

          Posté par . Évalué à 10.

          Un processus certainement a le droit de modifier la mémoire d'un processus qu'il a lancé, si ce processus reste sous le même utilisateur.

          Il n'a pas le droit de modifier la mémoire de processus d'un autre utilisateur par contre.

          • [^] # Re: Patch à la volée

            Posté par . Évalué à 2.

            Je ne comprend pas du tout le moinssage du post de pbpg au dessus mais alors pas du tout. Enfin il y a des choses qui m'echappe clairement dans la logique de certaines personnes…

            PS: j'ose esperer que celui ci va finir a -10 car lui est "inutile"

            • [^] # Re: Patch à la volée

              Posté par . Évalué à 3.

              Il doit encore y avoir quelques grincheux qui ont une poussée d'urticaire dès qu'ils voient le pseudo pbpg dans un post…

            • [^] # Re: Patch à la volée

              Posté par . Évalué à 5. Dernière modification le 19/01/18 à 15:02.

              Je crois que c'est dans les détails que ça fait douter les gens. Je ne suis pas sûr qu'un processus puisse directement en modifier un autre, même s'il y a filiation et qu'il est lancé sous l'identité du même utilisateur. Techniquement, le cloisonnement doit s'appliquer quand même. En plus, il faudrait mapper les deux processus dans des plages distinctes du plan mémoire. Par contre, il peut demander au système l'autorisation de le faire et les différents threads d'un même processus, eux, doivent pouvoir se marcher dessus.

              Maintenant, ça me paraissait tellement évident que je n'ai jamais essayé. 'faudrait que je me replonge dedans pour être sûr de savoir de quoi je parle. :)

              • [^] # Re: Patch à la volée

                Posté par (page perso) . Évalué à 2.

                On veut des preuves!

              • [^] # Re: Patch à la volée

                Posté par . Évalué à 1.

              • [^] # Re: Patch à la volée

                Posté par . Évalué à 1.

                . Je ne suis pas sûr qu'un processus puisse directement en modifier un autre, même s'il y a filiation et qu'il est lancé sous l'identité du même utilisateur. Techniquement, le cloisonnement doit s'appliquer quand même

                Pour utiliser assez souvent un débogueur sous Windows sans forcément être root, je te confirme que tu peux modifier l'espace mémoire d'un process qui t'appartient. Et c'est pareil sous linux : pas besoin d'être root pour lancer gdb sur un process à soi.

                Je crois que la documentation à ce sujet sous Windows est là pour le principe général et pour le fait que la création d'un process permette dans le cas général de modifier sa mémoire aux autres process du même user. J'ai bien dit "je crois", car ça dépasse largement mes connaissances et ne prétends pas tout comprendre aux articles donnés. La même documentation explique les cas qui ne fonctionnent pas : les process protégés par l'UAC et les process créés avec un contexte de sécurité plus élevés, utilisés notamment pour tout ce qui est DRM.

                En plus, il faudrait mapper les deux processus dans des plages distinctes du plan mémoire.

                Pas besoin de mapper le 2nd processus, il suffit d’accéder à la mémoire via des fonctions dédiées : ReadProcessMemory et WriteProcessMemory notamment.

                • [^] # Re: Patch à la volée

                  Posté par . Évalué à 2.

                  Pour utiliser assez souvent un débogueur sous Windows sans forcément être root, je te confirme que tu peux modifier l'espace mémoire d'un process qui t'appartient. Et c'est pareil sous linux : pas besoin d'être root pour lancer gdb sur un process à soi.

                  Oui, mais le débogueur fait quand même appel à ptrace() pour pouvoir le faire. Il ne peut pas le faire directement.

                  Pas besoin de mapper le 2nd processus, il suffit d’accéder à la mémoire via des fonctions dédiées : ReadProcessMemory et WriteProcessMemory notamment.

                  Oui, c'est bien ce que je dis : avec des appels système.

                  Je pense que c'est de là que vient le malentendu à l'origine de la question d'Albert_ (« pourquoi pBpG a-t-il reçu des [-] ? »). Comme le fil s'est développé dans la longueur, la réponse était éloignée du message original et hors contexte, on a l'impression en le lisant qu'un processus voit directement ses congénères alors qu'il ne précise en fait qu'il n'y a pas besoin d'être root pour pouvoir le faire.

              • [^] # Re: Patch à la volée

                Posté par . Évalué à 4.

                Demandes toi comment les breakpoints fonctionnent dans un debuggeur…

    • [^] # Re: Patch à la volée

      Posté par . Évalué à 2.

      Hyper intéressant cet article, merci beaucoup.

      bépo powered

  • # Pourquoi ?

    Posté par . Évalué à 4.

    Ce que j'ai du mal à comprendre, c'est : pourquoi faire ça ? Pourquoi patcher directement le binaire alors qu'il semble tellement plus simple de passer par le code source ?

    Ça, ce sont les sources. Le mouton que tu veux est dedans.

    • [^] # Re: Pourquoi ?

      Posté par (page perso) . Évalué à 10.

      En tout logique : parce qu'ils n'avaient plus le code source. Ou plus probablement (parce que j'ai du mal à imaginer que Microsoft ait perdu tout le code source de ça) parce qu'ils leur manquait de quoi refaire toute la chaîne de build (les compilateurs, les dépendances, etc.) et que c'était du coup moins cher de patcher le binaire.

      • [^] # Re: Pourquoi ?

        Posté par (page perso) . Évalué à 5.

        Moi ça m'étonnerait pas qu'ils aient perdu le code. Plus précisément, le code est quelque part dans leurs péta-octets d'archives, mais personne n'a su trouver où exactement. Et vu le peu de changements à faire, ça va plus vite de corriger directement le binaire que de passer 6 mois à retrouver les sources.

        • [^] # Re: Pourquoi ?

          Posté par (page perso) . Évalué à 10.

          Ils ne l'ont pas perdu, ils ne savent juste plus où il est?

          Incubez l'excellence sur https://linuxfr.org/board/

      • [^] # Re: Pourquoi ?

        Posté par . Évalué à 5.

        Accessoirement, c'est pas parce que t'as les sources que tu as quelqu'un qui peut les comprendre, et parfois lire du code source est plus difficile que lire de l'assembleur…

      • [^] # Re: Pourquoi ?

        Posté par (page perso) . Évalué à 10.

        Dans un commentaire de l'article quelqu'un explique que c'est un sous-traitant (Design Science) qui a développé l'éditeur d'équation. On peut ainsi supposer que Microsoft n'a jamais eu le code source et/ou que le sous-traitant ne veut plus maintenir le logiciel.

      • [^] # Re: Pourquoi ?

        Posté par . Évalué à 10.

        A mon avis (et ce n'est qu'un avis) c'est parce qu'ils n'ont jamais eu le code source.

        Ce truc date d'avant l'époque ou MS a mandaté en interne qu'ils devaient avoir les sources et droits sur tout le code qui sortait de chez eux.

        • [^] # Re: Pourquoi ?

          Posté par (page perso) . Évalué à 3.

          C'est possible ça ? Le soft a été buildé pour la dernière fois le 09/11/2000, il devaient bien déjà à cette époque avoir une politique de maintenance, pour les correctifs de bugs et de sécurité. S'ils n'avaient pas le le code, ils prévoyaient sans doute de faire appel à leur fournisseur pour cela… Tu penses que la facture aurait été trop lourde et ils préfèrent patcher eux-même ? Ou le fournisseur lui même aurait perdu le code d'une appli buildée il y a 17 ans ?

          • [^] # Re: Pourquoi ?

            Posté par . Évalué à 3.

            Ou le fournisseur a mis la cle sous la porte le jour ou MS a developpe le nouvel editeur?

          • [^] # Re: Pourquoi ?

            Posté par . Évalué à 6.

            Non ils n'avaient pas cette politique en 2000. Cette politique a été mise en place après que je sois arrivé chez MS et j'y suis entré en Octobre 2000.

            Pour la maintenance c'était de la délégation (sur contrat) pour les binaires dont on n'avait pas le code, et j'imaginerais bien que ce contrat a expiré et que la boite n'a plus envie de supporter un truc qui a 17 ans.

    • [^] # Re: Pourquoi ?

      Posté par . Évalué à 7. Dernière modification le 18/01/18 à 10:13.

      Je l'ai vu explique quelque part (je ne sais plus ou…) que la raison c'est que cette version de l'editeur d'equation n'a pas ete developpe par Microsoft mais achete et integre. Du coup ils n'ont pas les sources…

      Est-ce vrai ou pas je n'en ai aucune idee.

      • [^] # Re: Pourquoi ?

        Posté par (page perso) . Évalué à 6.

        Acheté sans les sources, pour l'intégrer ? Faut vraiment être bien con pour faire un truc pareil non ?

        • [^] # Re: Pourquoi ?

          Posté par . Évalué à 6.

          Autre temps, autre moeurs.

          On parle un des premiers editeurs d'equation de MS Office et a bon il faut bien avouer que l'open source n'etait pas trop a la mode.

          • [^] # Re: Pourquoi ?

            Posté par . Évalué à 4.

            Je pense que c'est plutôt lié au fait que, comme Microsoft Office, l'édition et l'interprétation d'équation faisait partie du "savoir-faire à protéger" de l'entreprise en question. Du coup, ils n'ont pas voulu donner le code source à MS et ils se sont débrouiller pour bosser avec un binaire.

    • [^] # Re: Pourquoi ?

      Posté par . Évalué à 7.

      J'avais lu un article il y a quelques temps qui concluait du patch (qui contrait une faille de sécurité) en question que MS avait perdu le code source de l'éditeur d'équations, qui provenait d'un fournisseur externe : https://www.bleepingcomputer.com/news/microsoft/microsoft-appears-to-have-lost-the-source-code-of-an-office-component/

      Il semblerait que depuis, MS ait poussé des patchs introduisant une réimplémentation de l'éditeur d'équation.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.