Résumé
Twitter
Work Blog
Guestbook
Login

Securing Your .NET and Other Applications

Share |
<= Previous Post | Next Post =>

I recently discussed the need to effectively authenticate an application's execution context with several members of the development community, including the Open Web Application Security Project and AZGroups.com. Here are some important points to consider when securing your application's execution context (i.e. verifying that your application is executing from trusted installation sites):

*The following points are made from the perspective of a .NET implementation, so please modify them as necessary for other languages, including any examples or references in your comments.
  1. Secure the code itself
    • "Strong name" your assemblies
    • Use internal declarations and "InternalsVisibleTo" attributes to expose objects to trusted assemblies (make informed decisions about keywords that expose your code)
    • Obfuscate your code
  2. Authenticate the Execution Environment
    • Upon installation (even "copy-paste"), generate a unique, encrypted install key for the assembly in the trusted execution environment
      • Could be in the registry (can be found and possibly cracked if a weak encryption algorithm was used)
      • Could check IP (can be spoofed)
      • Could check domain-name (can be spoofed)
      • Could reside in memory (requires constant execution)
    • Validate the key on execution

*A simple example for an ASP.NET application would be to have the application log itself on start-up (an application signature like a GUID, IP, domain name, etc.) and monitor the log.

Share |
<= Previous Post | Next Post =>

Comments

Submit New Comment

*Your e-mail is not shared with others. If provided, I simply use it as a method of contacting you about your comment(s) on this website. If you have a direct question, simply contact me.

*Cannot contain HTML and NO SPAM!