ubuntuusers.de

Ubuntu Intrepid kommt mit mehr Code-Sicherheit...

kxubuntu_old.png

oder versucht es zumindest. Nachdem Ubuntu bereits in älteren Releasen durch Unterstützung von AppArmor und SELinux, der Integration des non-executable-stack Patches in GCC und dem Virtual Address Space Randomisation Patch des Kernels, bereits einiges für die Sicherheit seiner Nutzer getan hat, versucht es nun durch das standardmässige setzen der -Wformat=2 Flag in GCC Formatstring-Angriffen in Anwendungen vorzubeugen, indem die verursachenden Code-Segmente vom Compiler angemahnt werden.

Um das gesagte zu verdeutlichen ein Beispiel. Den folgenden Code speichert man in einer Datei test.c:

1
2
3
4
5
6
7
8
#include <stdio.h>

int main(void){
    char * test_string="Intrepid will warn you during compilation!"
    printf(test_string);

    return(0);
}

und kompiliert sie mit:

gcc -o test test.c 

Unter Hardy kompiliert dies noch ohne Probleme. Unter Intrepid jedoch wird dies geschehen:

$ cat test.c 
#include <stdio.h>

int main(void){
	char *test_string="Intrepid will warn you during compilation!";
	printf(test_string);

	return(0);
}
$ gcc -o test test.c
test.c: In function ‘main’:
test.c:5: warning: format not a string literal and no format arguments
$

Das Programm wird zwar weiterhin kompilieren, jedoch wird der Kompiler einen warnen, dass man eine Format-String Funktion ohne Formatstring verwendet hat. Dies ist gefährlich sobald der Inhalt der Variable durch einen Nutzer veränderbar ist, da somit ein Formatstring-Angriff ausgeführt werden kann. Dies wieder kann dann schlimmsten Falls zur Kompromitierung eines Systems führen.

Viele Programme benutzen jedoch die -Werror Flag welche dafür sorgt, dass Warnungen als Fehler interpretiert werden und die Kompilierung abgebrochen wird. So zum Beispiel beim Madwifi-Treiber 🇬🇧 , SYSLINUX 🇬🇧 und vielen anderen Projekten 🇬🇧 der Fall.

Damit der Code weiterhin in Intrepid kompiliert, haben die Programmierer also zwei Möglichkeiten: Zum einen können sie diesen schlechten Programmierstil ablegen und die Fehler fixen. Zum anderen können sie jedoch auch einfach die -Werror Flags entfernen. Der Code würde zwar beim Kompilieren Warnung ausspucken aber trotzdem fertig kompilieren. Letzteres wäre für die User und den Sinn des ganzen jedoch weniger erträglich.

Dieser Artikel stammt von Rorschach.


Diskussion & Kommentare