Buffer Overflow in XPDF entdeckt

Michael Hass
9 Kommentare

Die Sicherheitsexperten von iDefense warnen vor einem Buffer Overflow im Unix/Linux-Programm „xpdf“. Diese Software wird von verschiedensten Distributoren, unter anderem SuSE, Debian und Gentoo, als Standard-Betrachter für PDF-Dokumente verwendet.

Aufgrund dieses Buffer Overflows sei es einem Angreifer möglich, eigenen Code, versteckt im PDF-Dokument, mittels des Betrachtens der Datei durch den Anwender in das System einzuschleusen und auszuführen. Der Fehler stecke laut iDefense im Modul „xpdf/Gfx.cc“ und dort im Speziellen in „Gfx::doimage()“:

void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) {
  Dict *dict;
  int width, height;
  int bits;
  GBool mask;
  GBool invert;
  GfxColorSpace *colorSpace;
  GfxImageColorMap *colorMap;
  Object maskObj;
  GBool haveMask;
  int maskColors[2*gfxColorMaxComps];
  Object obj1, obj2;
  int i;

  ...
    // get the mask
    haveMask = gFalse;
    dict->lookup("Mask", &maskObj);
        if (maskObj.isArray()) {
          for (i = 0; i < maskObj.arrayGetLength(); ++i) {
        maskObj.arrayGet(i, &obj1);
[!]         maskColors[i] = obj1.getInt();
            obj1.free();
          }
          haveMask = gTrue;
        }
  ...
}



Um aber ernsthaften Schaden anrichten zu können, muss der Angreifer Informationen über das attackierte System besitzen. Zudem muss das Opfer aktiv das PDF-Dokument mit dem gefährlichen Code öffnen. Zweiteres stellt sicher kein Problem dar, da viele Anwender ganz unbedarft PDF-Files öffnen, so sie doch hier keine Gefahr vermuten.

Der Fehler wurde von iDefense ab Version 3.0 von „xpdf“ festgestellt, und sie gehen davon aus, dass er auch in früheren Versionen in dieser oder ähnlicher Weise vorhanden ist. Folgende Distributionen sind von dieser Sicherheitslücke betroffen:

  • SuSE Linux
  • Red Hat Linux
  • Fedora Core
  • Debian Linux
  • Gentoo Linux
  • FreeBSD (ports)
  • OpenBSD

Als Workaround empfiehlt iDefense, nur noch PDF-Dokumente von sicheren Quellen zu öffnen, bis ein entsprechender Patch oder sogar eine neue Version (Binaries) installiert ist.