2010-02-15 4 views
3

on m'a demandé de superviser la révision du code 3ème partie (Freeware C# Sharepoint webpart dans ce cas) avant son inscription sur un réseau d'entreprise interne. Les gros problèmes sont les codes malveillants cachés dans le webpart qui vont voler des données/envoyer des informations au créateur de la partie web/etc, avec un problème secondaire étant que cela causera des problèmes de performance.Révision du code 3 Parti pour les questions de sécurité

Nous avons le code source, et dans ce cas il y a moins de 2000 lignes de code il est donc difficile de ne pas exécuter manuellement à travers tout cela et assurez-vous que tout est OK. Pour un travail plus important, quel type d'approche est nécessaire pour auditer le code pour s'assurer, autant que possible, que c'est sécuritaire? Nous devrons le faire pour des bases de code plus importantes dans le futur.

Répondre

1

diviser en modules et les examiner de manière isolée.

Regardez sur chaque méthode pour vous assurer qu'il fonctionne comme annoncé. Commencez par les méthodes de niveau inférieur qui ne font que des appels d'API. Une fois que vous avez vérifié que ceux-ci font ce qu'ils disent sur l'étain, vous pouvez ensuite vérifier les méthodes qui les appellent sans se soucier exactement de ce qu'ils font.

Une façon d'aller à ce sujet serait de regarder la méthode « aveugle », écrivez ce que vous pensez qu'il fait, puis les comparer à ce qu'il dit dans la documentation.

1

Donc, vous ne vous inquiétez pas si le code est non sécurisé et vous obtenez piraté par les Chinois? Habituellement, lorsque les gens font des revues de code, ils sont préoccupés par l'attaque par des étrangers et la majorité des outils commerciaux reflètent cela. Gardez à l'esprit que les pirates exploitent régulièrement de nombreux types de vulnérabilités sans avoir accès au code source. Le meilleur outil d'analyse statique commerciale pour C# est Fortify. Malheureusement, si quelqu'un écrit une porte dérobée, il pourrait ressembler à n'importe quoi et même un examen manuel du code manquera probablement le problème.

Dans le cas d'informations de piratage, je recommande de créer un test de validation de build qui examine le trafic réseau. Avoir des tests de validation de construction est important pour maintenir une base de code stable pendant le développement. Bien que le test grossier de l'application que vous voulez voir si le trafic réseau est défini sur un serveur inconnu. Vous pouvez même exécuter cette validation de construction pendant plusieurs jours/mois/années pour voir si l'application se comporte de manière inattendue. Inutile de dire que ce jeu particulier de chat et de souris est plutôt délicat et je ne crois pas qu'il puisse y avoir une solution pare-balles.

2

Si vous croyez honnêtement qu'il existe même une faible possibilité de porte dérobée, vous ne devriez pas utiliser le code. C'est le genre de mission d'entreprise qui me déroute. Même si c'est gratuit, ça ne vaut jamais le risque. Cela étant dit, le code d'une source fiable est probablement plus sûr que le vôtre car il est testé (espérons-le) sur un ensemble plus large et plus diversifié d'utilisateurs. Si l'examen est tout simplement pour apaiser la gestion et le code est exécuté sur une machine virtuelle, vous garde avec les fonctions de sécurité de l'exécution:

Si le code est compilé en mode natif ou est interprété, les choses deviennent plus difficiles. Rechercher des inclusions de bibliothèque qui n'ont pas de sens: TCP dans une bibliothèque qui n'a rien à voir avec un réseau, fichier IO où il n'appartient pas ... Encore une fois, personnellement je ne le toucherais pas si je n'avais pas 100% de foi en cela.En ce qui concerne les performances, traitez-la comme n'importe quelle autre partie de l'application. Ne pas optimiser jusqu'à ce que vous sachiez qu'il y a un problème. Si vous constatez des problèmes de performances et que votre suivi vous conduit au code tiers, tracez plus loin et trouvez le problème. Si le problème semble important et grotesque, n'utilisez pas le code. C'est probablement une indication d'autres mauvaises choses qui se cachent.

Questions connexes