Skip to main content

Internet Explorer 7 Protected-mode vs Firefox

I'm sure you all have herd that Vista and Windows 2008 come with a different type of Internet explorer, called Protected-Mode (PE). It's available only for those 2 operating-systems not because Microsft wants to force you to upgrade from XP (well, they probably do) but it's simply impossible to run PE IE7 without the integrity mechanisms we talked about earlier.
Windows no longer sees IE just like an ordinary application. It is an untrusted application; and there's some sound logic behind that, considering the fact that you generally download the malware installer and also, several exploits target IE7. So, instead of running IE with the integrity the user is assigned, it runs with LOW integrity, meaning it cannot modify any objects that are Medium or above. That restriction gives it only a few places it can write to:

%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low
%userprofile%\AppData\Local\Temp\Low
%userprofile%\AppData\Roaming\Microsoft\Windows\Cookies\Low
HKCU\Software\LowRegistry

And that's it! IE cannot write anywhere else without your approval. That also means that any extension you might load with IE (Browser helper object, Toolbar etc) can only write to those areas, unless you allow it to write elsewhere.
So the basic concept sounds like this : if a hacker exploits an undocumented vulnerability in IE7 PE, his code will only inherit LOW integrity, thus limiting his access to the entire system. In theory, it all sounds really great, but we have already seen discussion about privilege escalation attacks.

At the last ITboard meeting I was asked by a fellow MVP, Razvan Socol, if Firefox could benefit from the new integrity mechanism. I said then that Firefox, could benefit from the integrity mechanism only if the developpers will adapt their code and declare firefox.exe and the places it needs to write to as LOW. While that is true, I didn't imagine at the time, that you can take advantage of a new privilege called SERelabelPrivilege, that allows a username to modify an objects integrity level.

When it comes to modifying the integrity level of an object, there are 2 rules to take into account:
1. Only TrustedInstaller (%windir%\servicing\TrustedInstaller.exe) can raise the integrity level of an object.
2. Any process can define for its object (or for objects with equal integrity level) a lower integrity level. Due to rule no.1 lowering the integrity level is irreversible.

Those rules apply, of course, on a default installation. If you want to mess with integrity levels, you can allow yourself the SeRelabelPrivilege (that by default, noone has except for the system) ingpedit.msc > User Rights Assignment > "Modify an object label", like I did in the screen below to the username "Victor". Make sure you log off then back on for your security token to be recreated with the SeRelabelPrivilege.





Ok, once we got that figured out you might say : "Hey, this stuff is cool, I would like to have the benefits of IE7 but run Firefox! Can I do that?" The answer is yes, but it takes an extra 10 minutes and it's not entirely compatible.
There are 2 tools we can use to modify an object's integrity level : icacls (built-in utility that replaces the cacls.exe utility in XP/2003) or chml (a tool designed by Mark Minasi which you can download here). I'm going to use both and you can decide on whicone to use.

After we have downloaded firefox, we install it with the default values. If you run it before doing the steps below, the folders that Firefox needs are going to be created. If not, you are going to have to create them yourself. Let's use chml and set the firefox.exe file to LOW integrity. We have to open up an elevated command prompt (Run as Administrator) and run from within the Firefox folder the command : chml firefox.exe -i:l like I did in the screenshot below :



Now, we have modified the integrity label of the firefox.exe object to LOW. Like we said when we talked about integrity, the system is going to choose the lowest integrity level between the iuser's integrity level (the default integrity level, MEDIUM) and the object's integrity level, in this case, LOW.
Once we have done this we have limited the areas where firefox.exe can write to/modify. However, firefox does use 3 folders in which he stores data :

C:\Users\Name\AppData\Local\Mozilla\Firefox
C:\Users\Name\AppData\Roaming\Mozilla\Firefox
C:\Users\Name\AppData\Local\Temp

We need to set this to integrity LOW aswel, because LOW integrity processes can only write to LOW integrity objects. Using the same eleveted command prompt, we can run icacls to set them to low integrity : icacls FolderName /setintegritylevel (oi)(ci)low
The "(oi)(ci)" will make chil objects inherit the low integrity.

And now, when launching Firefox you should get see that it is running low integrity. You can use Process Explorer from Sysinternals to see the Integrity level (you need to add the "Integrity" column). It should look something like this:




You now have a secure Firefox browser that can take advantage of the new security features in Vista. Take note that you will also need to create a downloads folder that also has LOW integrity.
This, of course, is only a workaround, and I can forsee that some extensions could have problems with Firefox running with LOW integrity. I personally, didn't experience any, but then again, I haven't tried all the extensions :)
In the end, I need to mention that this should be one layer of your security system. It is specially efficient against exploits and vulnerabilities that haven't been traced and also against scripts that try to run without your knowledge on the computer.
Mozilla developers should work with the integrity mechanisms within Vista and offer in future versions that will launch directly as Low integrity.

Comments

Farthen said…
Thanks for this information - I now have Firefox running in "low" integrity mode, but is it possible to remove the message that pops up, when I open Firefox?
Glad you found the information useful. Unfortunately you cannot remove that notification. Vista will always display it when you launch from a LOW zone.
Anonymous said…
Cool! I wonder why this is not automated and given as an option in Firefox installer.
alazif said…
check this FF in Protect Mode without notification. site is in PL

http://techpress.spaces.live.com/blog/cns!E7CEEACBDCA1B2D4!334.entry

Popular posts from this blog

Materiale de studiu pentru admiterea la INM

Atunci când am scris acest articol (23.10.2010) am dorit să ajut viitorii candidați la examenul de admitere la INM prin publicarea listei cu lucrările pe care le-am folosit pentru pregătirea examenului. În urma modificării Codului civil și a Codului de procedură civilă, precum și a intrării în vigoare a noului Cod Penal și de Procedură Penală, tot mai multe persoane m-au rugat să modific lista și să indic lucrările pe care le consider ca fiind potrivite în momentul de față pentru pregătirea examenului de admitere la INM.   A se citi și Răspunsuri la întrebări frecvente   Drept Civil Noul Cod civil – este principalul material de pregătire la această materie, mai ales având în vedere modalitatea exhaustivă a reglementării, precum și modalitatea de examinare tip grilă prof. univ. dr. Gabriel Boroi și jud. drd. Carla Anghelescu – Curs de drept civil Partea Generală – Ediția 2011 – Conform Noului Cod Civil ( Cuprins ) conf. univ. dr. Răzvan Dincă – Contracte civile speciale în n

Răspunsuri la întrebări frecvente

Unul dintre motivele pentru care am făcut acest blog este acela de a răspunde, în măsura cunoștințelor, la diverse întrebări și nelămuriri. În ultima vreme, acestea au fost axate pe examenul de admitere la INM, însă nu numai. Având în vedere că întrebările au un caracter recurent, am considerat necesar să postez public răspunsurile, în așa fel încât oricine este interesat să le poată citi. Am păstrat exact modalitatea de exprimare pe care am folosit-o la momentul respectiv, nu pentru alt motiv, dar mi se pare straniu să îmi editez propriile răspunsuri. A se citi și Materiale de studiu pentru admiterea la INM 1. Cum să noile coduri pentru examenul de admitere la INM 2014? Iată întrebarea pe care o primesc din ce în ce mai des pe acest blog. Întrebarea este legitimă pentru oricine care are în față încercarea unui examen greu de admitere în profesie și, tocmai în acest moment dificil, lipsește intrumentul ”principal” de pregătire al studentului: doctrina. Problema este reală, însă nu

Scurgerea în presă a convorbirilor interceptate. Condițiile detenției pe parcursul arestării preventive a reclamantului. Menținerea în mod justificat a măsurii arestului preventiv pentru o perioadă de 1 an, 3 luni și 19 zile - cauza Voicu c. României

În hotărârea din data de 10 iunie 2014 pronunțată în cauza Voicu c. României (cererea nr. 22015/10), Curtea a reținut că, în data de 10 decembrie 2009, Direcția Națională Anticorupție din cadrul Parchetului de pe lângă Înalta Curte de Casație și Justiție a început urmărirea penală împotriva reclamantului pentru pretinsa săvârșire a infracțiunii de trafic de influență. În mod special, procurorul a susţinut că: (i) reclamantul a acceptat suma de 200.000 EUR de la un om de afaceri, C.C., pentru a folosi relația sa cu judecătorul F.C. din cadrul Înaltei Curți de Casație și Justiție în vederea influențării soluției unui dosar care se afla pe rolul Înaltei Curți de Casație și Justiție în care era implicată societatea lui C.C. și o companie de stat. (ii) că ar fi acceptat bani de la M.L., sub pretextul achitării unor consultații juridice prin cabinetul său de avocatură, în scopul de a-i facilita întâlnirea cu șeful poliției pentru a discuta o anchetă în desfăşurată împotriva lui M.L. Pe data