Auteur/autrice : Arnaud Versini

  • Analyse plus poussée de Trio Office

    Cet article fait suite au précédent sur le produit Trio Office. Il s’agit maintenant d’analyser le lancement de l’application et de voir les éléments facilement accessibles. Attention si vous faites ce genre de test à bien passer par une machine virtuelle pour éviter tout souci.

    Lancement de l’application

    Au lancement de l’application on tombe sur un écran permettant de soit ouvrir un document, soit de lancer une application. Il est à noter que l’application utilise les marques Word, Excel et PowerPoint de Microsoft !

    Le lancement de l’application de l’application affiche automatiquement la page suivante, c’est au passage cette même page qui sera affiché plus tard lors de chaque tentative d’accès à une fonction bloquée.

    L’application est vraiment très similaire à LibreOffice, ce qui parait cohérent par rapport aux captures d’écran présentes sur le Windows Store.

    Le dialogue « A propos de » ne nous en apprends pas plus. Je n’ai pas réussi pour le moment à modifier le fichier ui de l’application installée depuis le store, et son lancement à l’extérieur du store se traduit par un échec. Je tenterai probablement de modifier le fichier directement depuis un Linux bootable.

    Je note qu’ils semblent vouloir respecter la licence MPL de LibreOffice et je vais donc leur demander accès aux sources de TrioOffice. Par contre je n’ai jamais vu ce dialogue sur LibreOffice, même si la première phrase me rappelle fortement celle du dialogue « À propos de » de LibreOffice. Je note également que le fichier de crédits est présent dans l’installation.

    Regardons ce dialogue « About »

    Un point intéressant c’est que les dialogues de LibreOffice sont en fait des fichiers ui directement éditables sous Glade, allons donc voir ce fichier.

    Contrairement au fichier de base présent dans les sources LibreOffice la majorité des éléments a été masqué. On peut supposer que leur suppression aurait nécessité de faire des changements plus profonds dans le code du produit.

    <object class="GtkButton" id="website">
      <property name="label" translatable="yes" context="aboutdialog|website">_Website</property>
      <property name="visible">False</property>
      <property name="can_focus">True</property>
      <property name="receives_default">True</property>
      <property name="use_underline">True</property>
    </object>

    La partie la plus intéressante qui a été masquée est celle-ci :

    <object class="GtkLinkButton" id="testlink2">
      <property name="label" translatable="no">here</property>
      <property name="visible">False</property>
      <property name="can_focus">True</property>
      <property name="receives_default">True</property>
      <property name="relief">none</property>
      <property name="uri">https://trioofficeopensource.s3-us-west-2.amazonaws.com/libreoffice.tar.gz</property>
    </object>

    Il ne s’agit pas de la version actuelle de Trio Office mais d’une ancienne version, ce qui justifie probablement le masquage de cet élément dans le dialogue mais son étude reste tout de même intéressante. L’ensemble des modifications du code par rapport à la version officielle de LibreOffice est disponible ici. Une étude portant sur les sources actuelles sera effectuée après récupération de celles-ci.

    Analyse des modifications de la version 6.1.3.2

    Il est intéressant de noter qu’il s’agit au vu des sources d’une version très proche de la version officielle de LibreOffice. Seules deux types de modifications sont présentes dans les sources que j’ai importées depuis le package disponible chez AWS.

    Le premier type de modification nous montre la technique utilisée pour verrouiller les fonctionnalités. Plusieurs dialogues ont été court-circuités via ce système, mais je soupçonne que la version actuelle soit verrouillée d’une façon différente. En effet au vu du code j’aurais pensé qu’un simple « Echap » aurait permis d’afficher le dialogue de LibreOffice et de court-circuiter ce système.

    typedef void (WINAPI *IAPShowRate)();
    HINSTANCE hGetProcIDDLL = LoadLibrary("IAPWrapper.dll");
    IAPShowRate showRate = (IAPIsPurchasedUser)GetProcAddress(hGetProcIDDLL, "IAPShowRate");
    if (showRate)
    {
      showRate();
    }

    L’autre modification concerne les menus et ne semble pas être présente dans la version que j’ai pu télécharger depuis le AWS concerne la suppression d’entrées dans les différents menus d’aide de l’application.

    diff --git a/dbaccess/uiconfig/dbquery/menubar/menubar.xml b/dbaccess/uiconfig/dbquery/menubar/menubar.xml
    old mode 100644
    new mode 100755
    index 7d2a633d29ed..bf224a4b02b3
    --- a/dbaccess/uiconfig/dbquery/menubar/menubar.xml
    +++ b/dbaccess/uiconfig/dbquery/menubar/menubar.xml
    @@ -93,18 +93,6 @@
         </menu:menu>
         <menu:menu menu:id=".uno:HelpMenu">
             <menu:menupopup>
    -            <menu:menuitem menu:id=".uno:HelpIndex"/>
    -            <menu:menuitem menu:id=".uno:ExtendedHelp"/>
    -            <menu:menuitem menu:id=".uno:Documentation"/>
    -            <menu:menuseparator/>
    -            <menu:menuitem menu:id=".uno:QuestionAnswers"/>
    -            <menu:menuitem menu:id=".uno:SendFeedback"/>
    -            <menu:menuseparator/>
    -            <menu:menuitem menu:id=".uno:SafeMode"/>
    -            <menu:menuseparator/>
    -            <menu:menuitem menu:id=".uno:Donation"/>
    -            <menu:menuseparator/>
    -            <menu:menuitem menu:id=".uno:ShowLicense"/>
                 <menu:menuitem menu:id=".uno:About"/>
             </menu:menupopup>
         </menu:menu>

    Par ailleurs il est intéressant de noter que les sources présentes ce package ne montre aucune modification du dialogue « A propos de » contrairement à ce que j’ai pu constater dans l’application du store. J’y reviendrais dans un troisième article d’analyse des sources actuelles .

    Conclusion

    Rien de particulier à ajouter, techniquement le travail effectué est minimal et il est probable que ce travail soit utilisé par pas mal d’applications sur le store. Dans tous les cas ce type d’application est à fuir surtout que bon nombre de CVE n’ont pas été fixés dans cette version qui date d’il y a 5 ans !

    Le prochain article concernera l’analyse de la version actuelle du store dont j’ai pu récupérer les sources.

  • LibreOffice sur le Windows Store

    A force de naviguer sur internet je suis tombé sur les versions modifiés de LibreOffice. une simple recherche sur le moteur de recherche du store donne quelques résultats intéressants.

    Attardons-nous sur Trio Office, une version très particulière de LibreOffice sans aucun lien avec le projet initial.

    Trio Office, un fork de LibreOffice ?

    Et c’est parti pour une vérification rapide de ce qu’est Trio Office. Déjà en regardant les captures d’écran présentes sur le store on constate que c’est bien du LibreOffice derrière, mais quelle version ?

    Capture d'écran disponible sur le Windows Store de l'application
    Capture d’écran disponible sur le Windows Store de l’application
    Capture d'écran de la page du Windows Store de l'application
    Capture d’écran de la page du Windows Store de l’application

    Petite recherche sur le net

    En cherchant des pages sur le produit Trio Office je suis tombé sur ce lien qui indique les limitations suivantes de la version sans abonnement :

    Trio Office Full Version: In-app Purchases Features
    • Print Documents
    • Insert Pictures, Tables and Shapes
    • Templates
    • Export as PDF and EPUB format
    • No Advertisement
    • 7*24 Support
    Subscription plan: billed annually at $7.99/year
    Lifetime license: one-time purchase for $19.99

    Pour un produit basé sur un logiciel libre cela parait plus que discutable, surtout que ces fonctions sont directement accessibles en installant LibreOffice depuis le site de The Document Foundation !

    Analyse de l’installeur sous Linux

    Tout d’abord regardons du coté des propriétés de l’exécutable soffice.exe.

    FileVersion: 6.2.8.2
    ProductVersion: 6.2.8.2
    CompanyName: admin
    FileDescription: Trio Office
    ProductName: LibreOffice
    OriginalFilename: soffice.exe
    InternalName: soffice
    LegalCopyright: Copyright ? 2000-2024 by LibreOffice contributors. All rights reserved.
    Data Directories: 16

    Il est intéressant de noter les premières incohérences, la version sur laquelle ce build semble basé est la 6.2.8.2 dont le tag date de 2019. Soit le LegalCopyright est modifiée, soit il s’agit d’une autre branche de LibreOffice. On va pouvoir le découvrir en le lançant dans une machine virtuelle Windows.

    Le fichier bootstrap.ini laisse également penser qu’il y a eu des modifications et qu’il ne s’agit pas d’une vraie 6.2.8.2, cette information sera à vérifier au lancement dans le « A propos de » dans un article futur :

    [Bootstrap]
    InstallMode=<installmode>
    ProductKey=LibreOfficeDev 6.3
    UserInstallation=$SYSUSERCONFIG/OfficeDocOpener/4

    Présence de trackers Google Analytics

    Il est intéressant de noter la présence de trackers Google Analytics dans l’application.

    Permissions Size User   Date Modified  Name
    .rw-r--r--   50k arnaud 20 déc.  10:59 GoogleAnalyticsTracker.Core.dll
    .rw-r--r--   10k arnaud 20 déc.  10:59 GoogleAnalyticsTracker.Simple.dll

    La présence de trackers dans une application bureautique n’est pas du tout bon signe !

    Conclusion

    Si vous souhaitez utiliser une version LibreOffice présente sur le Windows Store, je conseille les deux versions suivantes :

    Je déconseille fortement toute autre version de LibreOffice disponible sur le store Microsoft, celle-ci en particulier !

    Dans tous les cas, que ce soit pour LibreOffice ou tout autre logiciel libre(Mozilla Firefox, VLC…), passez par les canaux officiels pour installer le produit !

    Dans un futur article je ferais une analyse au lancement de l’application ainsi que la technique de verrouillage des différentes fonctionnalités de LibreOffice.