none
How to make read only OpenFileDialog in external program

    Question

  • Hello,

    I have a security problem with a lab software.

    The software need to be launched by admin user.

    I have created software to launch this application with admin login.

    But inside application user can use dialogbox with admin acces granted.

    It is possible to create something to change all OpenFileDialog (another process) to another?

    It is possible to change FileDialogPermission to another process?

    I try to use hooking but i can't catch Dialogbox creation handle

    Thank a lot for your help,

    Gaël

    mercredi 7 février 2018 15:17

Réponses

  • Merci beaucoup pour vos réponses. Je vais suivre vos conseils et faire des analyses pour essayer de comprendre pourquoi il nécessite d'être administrateur. Même avec avec procmon je pense que ça va être assez difficile de comprendre pourquoi. Mon problème n'est pas un cas isolé en ce qui concerne les logiciels Labo. 

    Encore merci.

    Gaël

    • Marqué comme réponse Gael33 mardi 13 février 2018 09:41
    mardi 13 février 2018 09:40

Toutes les réponses

  • Il serait largement plus simple d'avoir une application qui s'exécute avec le compte utilisateur, quitte à faire de l'impersonnalisation vers le compte administrateur, que l'inverse.

    Donc pourquoi vous ne pouvez pas le lancer votre application depuis un compte "standard" ?


    Paul Bacelar, Ex - MVP VC++

    mercredi 7 février 2018 16:14
  • L'application est créé par un éditeur tiers, je ne sais pas pourquoi cette application nécessite d'être administrateur. 

    En tout cas la session Windows est ouverte avec un compte utilisateur et l'application est exécutée avec un compte administrateur. Le problème vient du fait que l'application utilise les boites de dialogue de Windows qui intègre un explorateur à l’intérieur. L'application étant lancée en administrateur l'utilisateur à la possibilité de modifier des fichiers dont il n'a pas accès avec son compte local.

     
    mercredi 7 février 2018 16:45
  • >L'application étant lancée en administrateur l'utilisateur à la possibilité de modifier des fichiers dont il n'a pas accès avec son compte local.

    Bin tu m'étonnes, c'est même pour ça qu'il faudrait prendre le problème à l'envers.

    En ayant un exécutable s'exécutant en administrateur, c'est un énorme trou de sécurité que vous ouvrez en grand. Et c'est pas juste un problème de "OpenFileDialog".

    Je pense que vous devriez vous tournez vers l'éditeur pour que son produit fonctionne dans des conditions "normales" d'exécution.

    C'est peut-être juste un problème dans les droits du répertoire d'installation, etc...

    Si c'est un prérequis signalé par l'éditeur, ça serait très étrange.

    Pour moi, l'exécution en administrateur est un très mauvais contournement d'un autre problème, en amont.

    Corrigez ce problème sans avoir recours à un compte administrateur.


    Paul Bacelar, Ex - MVP VC++

    mercredi 7 février 2018 17:46
  • Je sais que nous sommes confrontés à un problème de sécurité,  c'est pour cela que je me retourne vers vous.

    J'ai oublié de préciser que le PC se trouve dans un RLS (réseau labo secu) qui n'affectera pas l'ensemble du réseau de notre entreprise.

    J'ai évidement déjà contacter l'éditeur (d'un savoir faire de niche) et ne compte pas changer le code de son application.

    Avez une réponse d'expert a m'apporter?

    Merci,

    Cordialement

    Gaël

    mercredi 7 février 2018 20:13
  • Comme je l'ai déjà signalé, il y a de bonnes chances que la "limitation" de l'usage exclusif d'un compte administrateur ne soit qu'un simple problème de configuration du système.

    Les petits éditeurs font souvent l'erreur de négliger la Q&A et ne pas tester correctement les configurations possibles.

    A moins d'avoir un logiciel de sécurité informatique ou intimement lié à l'OS, l'usage d'un compte administrateur ne se justifie pas.

    Donc, faire tout un bordel pas possible juste pour un droit sur un répertoire mal fichu, c'est pas super efficace.

    Avec un petit descriptif du problème lors de l'exécution du logiciel avec un compte standard pourrait nous mettre sur la voix d'une correction de la configuration bien plus simple à mettre en œuvre et bien plus pérenne.

    Techniquement, ce que vous demandez est possible mais extrêmement complexe et sujet à de gros problème de sécurité, de maintenabilité, de compatibilité, etc... (injection de Dll, détournement d'appel système, IPC vers un programme utilisateur).


    Paul Bacelar, Ex - MVP VC++

    jeudi 8 février 2018 09:55
  • Bonjour,

    Je serais porté à dire comme Paul, peut-être un peu plus trivialement, cette application appelée est mal fichue.

    Bah on a bien vu proposer des jeux grand public pour jeunes enfants nécessitant les droits administrateur sur la machine. Ben oui, c'te question, le môme de 4 ans va avoir les droits pour effacer tout ce qu'il y a sur le disque.

    Donc là pour solutionner ça il faudrait réussir à prendre un peu de hauteur et voir cette application, si son éditeur peut réviser son produit sous l'éclairage des objections de sécurité soulevées. Hé hé, je me rends compte en disant ça que ça peut paraître naïf selon l'éditeur.

    Ou si ça serait un gros morceau à redévelopper ...

    vendredi 9 février 2018 15:26
  • Bonjour,

    Il faut imaginer le contexte, un logiciel relativement vieux et en effet mal développé qui pilote une machine relativement vieille mais fonctionnelle qui coûte entre 200 000 et 300 000 euros.

    Pour changer l’environnement de production, il faut changer le soft et la machine Labo. L'investissement est important et ma société fera cette investissement dès qu'elle le pourra. En attendant cet investissement, le système tourne dans un RLS et doit passer les audits de Labo.

    L'éditeur préfère développer des logiciels sur des machines plus récente (et nous obliger a acheter une nouvelle licence).

    C'est compliqué et moi non plus je ne souhaite pas créer des usine à gaz qui pourrait générer des trous de sécurités.

    C'est pour cela que je demande de l'aide. Mais si il n'y a pas solution possible, je ferai remonter la problématique et ma société tranchera.

    Merci pour vos réponses 

    vendredi 9 février 2018 17:09
  • Ah, en effet ...

    Enfin ça vaut le coup de creuser un peu la première phrase de Paul : " il y a de bonnes chances que la "limitation" de l'usage exclusif d'un compte administrateur ne soit qu'un simple problème de configuration du système."

    Autrement dit, ça serait trop bête que ça soit juste un paramètre à changer dans un fichier de config et qu'on passe à côté.

    Sinon, dans cette période où les virus à cryptage et demande de rançon se sont mis à tant fleurir, j'ai lu un article qui aborde un autre aspect de la sécurité : les machines doivent être réparties en domaines (comptabilité, administration, développement ...) et la communication entre domaines ne doit se faire que selon des protocoles précis contrôlés par des pare-feus paramétrés aux petits oignons. Et les mots de passe doivent être gérés de telle manière que les utilisateurs ne ressentent pas la nécessité de les écrire sur un post-it scotché à l'écran (ça paraît comique, mais ça existe).

    ça nous sort du sujet, mais c'est pour dire que si jamais on cumule les deux problèmes, ça peut provoquer une catastrophe de plus grande ampleur.

    vendredi 9 février 2018 19:58
  • @Gael33, je comprends bien ton dilemme.

    Mais je pense qu'il faut un peu investiguer sur le pourquoi du compte administrateur.

    Par exemple, en lançant le programme avec un compte "standard" et en utilisant un outil comme ProcessMinotor ( https://docs.microsoft.com/en-us/sysinternals/downloads/procmon ), vous devriez savoir POURQUOI il ne fonctionne pas avec un compte "standard".


    Paul Bacelar, Ex - MVP VC++

    lundi 12 février 2018 10:02
  • Merci beaucoup pour vos réponses. Je vais suivre vos conseils et faire des analyses pour essayer de comprendre pourquoi il nécessite d'être administrateur. Même avec avec procmon je pense que ça va être assez difficile de comprendre pourquoi. Mon problème n'est pas un cas isolé en ce qui concerne les logiciels Labo. 

    Encore merci.

    Gaël

    • Marqué comme réponse Gael33 mardi 13 février 2018 09:41
    mardi 13 février 2018 09:40