Friday, 17 November 2006

Check out the articles on it-insecurity.com

I've just restored content for it-insecurity.com and there are 3 articles that I would like to point to:
Posted by Jürgen Pabel on 17 November 2006 at 21:12

IT-insecurity.com back alive

Yeay - after a long while without any content on IT-insecurity.com I've just now restored the content in the newly installed OpenCms instance.

Posted by Jürgen Pabel on 17 November 2006 at 21:09

New toy arrived yesterday

My package from E-Way arrived yesterday, including a TU mini-little-bitty-tiny-PC (product page). I never intended to use this for a desktop system -200 MHz just aint gonna do it with KDE, but I tried booting the Kubuntu 6.10 over a USB CD drive and it did make it to the desktop....after more than 10 minutes. Today I am gonna find out how an Ubuntu 6.06LTS server fares on a 1GB CF disk...
Posted by Jürgen Pabel on 17 November 2006 at 20:01

Thursday, 16 November 2006

Transactional support everywhere

File systems nowadays support transactional writes, databases have transactions, entireprise software employs transactions - why aren't transactions embedded deeper in the computing systems? Operating systems could offer transactions for processes and network protocols could also use transactions for ensuring consistent communication states.

What am I trying to say? -I think that if we were to provide support for transactional aspects (commits, rollbacks, checkpoints, ...) at lower levels in the computing stack everyone else could use and build upon these mechanisms instead of having to make up their own at the higher levels.

For processes, it might work like checkpointing at a certain state and having the option to roll-back to the latest checkpoint (or to commit that one) - including the reversal of all modifications that have been done since the last checkpoint. This is why transactional support would need to be "everywhere" - because rolling back a process to a checkpoint might require the communications that have been sent out over the network to be also marked as reverted - here the network protocols would need to tie into the operating systems view of transactions.

Again, keep in mind that this is an idea - a place to start from, not a full concept. I might explore this further another time (or I might completely forget about it).

Posted by Jürgen Pabel on 16 November 2006 at 21:45

Wednesday, 15 November 2006

Native support for strings in CPUs - Part 2

OK, so one point I realized after reading my entry just now is that my explanation of the string types wasn't all that clear, so here goes my second attempt (click here for the first segment).

Let's define that our imaginary CPU has 3 string types: one for strings up to 256 bytes (str1), one for strings up to 4096 bytes (str2)and one for strings up to 16MB (str3) - again, no real reason for these specific numbers. Instances of str1 would end-align on 256 byte memory boundaries; the last byte of a string of such type would always fall on an address with the last 8 bit being all set:

  • 0x000000ff
  • 0x000001ff
  • 0x000002ff
  • ...
You get the idea - so for the str2 it would be the last 12 bits of the memory address:
  • 0x00000fff
  • 0x00001fff
  • 0x00002fff
  • ...
And yes, for str3 it would be the last 24 bits (2**24 = 16M).

Unless there are designated memory regions for each string type, the correct interpretation of the strings data depends on the use of the correct/corresponding string type's processing instruction; if there were seperate memory regions, one could just simply use a single set of string instructions and the microcode would "know" what type of string it would operate on by looking the the memory location contained in the register for the instruction (all this assumes a register based cpu, unlike cpus that operate on data items on the stack). But, all this is fairly irrelevant as I am just trying to present an idea here and not a fully implementable system. I will address these issues in a future entry - so stay tuned.

Posted by Jürgen Pabel on 15 November 2006 at 23:47

Tuesday, 14 November 2006

Native support for strings in CPUs?

There's a topic that has kept me thinking for a few years: why don't CPUs have native support for strings?

Now, I know that strings are rather complex for CPUs to handle - it's that they aren't fixatable in terms of memory requirements and that just ruins it for chip makers. All native CPU datatypes (if you wanna call them that) have a well-known size - for example: the %ah and %al registers on IA32 are 8bit each, the %ax is 16bit (it's actually %ah and %al combined) and %eax is 32bit and a pointer into memory is also 32bit. Now, strings are variable in size, meaning that their memory requirements depend on their actual value (on their length) and this is a stark contrast to those other types. Currently, (all the) CPUs (I know of) use C-style strings in that the CPU offers certain instructions that operate on a register which points to a memory location which in turn is interpreted as the start of the destined string. The CPU processes whatever string instruction by interpreting the memory node's content (node == byte for this matter) and either processes it and continues with the next memory node or it has determined that this must be the end-marker of the string (if the value of the memory node is 0).

Now, there are these problems with this approach:

  • there's only an implicit/indirect binding between the strings identity (it address in memory) and its content - this is hard to explain, but maybe you're getting what I am trying to say here
  • any string-type CPU instruction has an unknown runtime (in terms of cycles) - it just depends on the strings content

The idea that crossed my mind recently was to essentially keep the idea of having a register whose content identifies the location of the string in memory, but to add information about the length of the string and the (newly created) string type to the mix. The first idea is that since values on CPUs have a bounding limits (ie: 8bit = 256, 16bit=65536, ...) in term of how many values they can represent (nonwithstanding signed/unsigned interpretations), why shouldn't the same concept apply to strings. Make a string "type" that can contain a maximum length of let's say 256 bytes (just pulling this number out of thin air) and other types for strings up lengths of 4M and 4G or whatever. The benefit of this approach is that one can definitely determine the memory size that each type needs and therefore the runtime of processing instructions for these types have a well-known upper bound.

You may ask now that there's no way just yet to actually determine the length of any instance of such a string - here's the clever part: let the strings be "end"-adjusted and let the register point to the memory address where the first byte of the string is. To give an example:

  • we are dealing with a string with a defined max size of 65536 bytes
  • the strings content is "Hello World!" (without the quotes, length=12)
Now, let's assume we have reserved the memory range of 0x12340000-0x1234ffff for the string (how this is managed will be discussed later or another time). In this scheme the string's first byte would be at 0x1234fff4 (the 'H') and that's what the register would "point to". Thus, the string length can easily be computed by taking the string type's maximum length value and "subtracting" the corresponding parts (bits) of the registers value: 0x0000ffff - 0x1234fff4 + 1 -> 0x0000000c -> 12.

Hmm, I am getting distracted with work - so I will continues to write about this some other time.

Update: here's the second part

Posted by Jürgen Pabel on 14 November 2006 at 23:19

Winner

I actually beat Pit in having a blog - now that's unexpected. Pit's Blog is here: http://linnartz-online.de/?p=4
Posted by Jürgen Pabel on 14 November 2006 at 22:08

BarCamp Session Description: IT-insecurity

This entry describes a planned session for the BarCamp in Köln - thus it's in German.

Ich würde als Session eine "freie" Runde über Computersicherheit leiten. Thema und Art der Session können vollkommen frei von den Anwesenden bestimmt werden - ich werde dann entsprechend auf die Fragen/Themen eingehen. Ziel soll sein, dass die Anwesenden Fragen zu Themen stellen können, die Sie bzgl. IT-Sicherheit haben (und so hoffe ich, dann auch eine qualifizierte und verständliche Antwort bekommen).

Welche Aspekte angesprochen werden ist von meiner Seite aus nicht vorgegeben. Meine Schwerpunkte liegen in der technischen Sicherheit, eher weniger in der "formalen" Sicherheit. Will sagen: ich kenne weder die SOX Regulierungen noch ISO27001 auswendig (kenne diese aber auch), dafür kann ich aber ad-hoc tiefgreifend auf verschiedenste technische Themen eingehen.

Mögliche Themen könnten also sein (nur um ein paar Themen genannt zu haben):

  • Betriebssystemsicherheit
  • Netzwerksicherheit
  • Identity Management
  • Verschlüsselungsverfahren
  • Malware (Viren, Trojaner, ...)
  • Forensische Analysen
  • Technische Angriffe (Buffer Overflows, SQL Injection, XSS, ...)
  • Rootkits, Rootkit-Detection, Verschiedene Rootkit Typen
  • Email SPAM - wieso kriegt man das nicht in den Griff?

Posted by Jürgen Pabel on 14 November 2006 at 14:28

Monday, 13 November 2006

Recent Oracle LDAP Issue

It has been a few days since I encountered this problem, so details are coming straight from my recollection and might not be as accurate as they could/should be. The problem: a SUN Solaris system with an Oracle Internet Directory server (OID, the Oracle LDAP Server running on an Oracle DB backend) set up to provide LDAP based name services. But the system would not do reverse lookups on the passwd entries (ie: getpwnam et al). Upon truss'ing a problematic process (the easiest szenario: "ls -l" - it was unable to resolve uid numbers into account names), the LDAP query returned "Function not implemented". As you can imagine, this was highly unexpected and what it turns out to be is that the query was filtering for "gidNumber=4711" (4711 being the group ID in question). However, in the Oracle LDAP DB the gidNumber was not listed in the index table and thus the query was denied. The resolution was to add this column (and uidNumber, ...) to the index table in the OID DB via the catalog.sh script.
Posted by Jürgen Pabel on 13 November 2006 at 11:36

Wednesday, 8 November 2006

Getting up and running with blojsom

So, while I certainly don't have any real time to write and maintain a blog, I find myself ever more often in the position that something should be documented (be it for myself or for others). So I set up blojsom on our company's application server - the install steps were documented correctly and went smooth and painless. So, I will now go on and set up a blog for Martin (he expressed a desire to blog).
Posted by Jürgen Pabel on 8 November 2006 at 22:35
« First  « Prev   8 9 10 11 12   Next »  Last »
« May »
MonTueWedThuFriSatSun
 123456
78910111213
14151617181920
21222324252627
28293031