----- Original Message -----
From: "CORE Security Technologies Advisories" <advisories@coresecurity.com>
To: "Bugtraq" <bugtraq@securityfocus.com>
Sent: Monday, April 28, 2003 10:34 AM
Subject: CORE-2003-0305-02: Vulnerabilities in Kerio Personal Firewall
> Core Security Technologies Advisory
> http://www.coresecurity.com
>
> Vulnerabilities in Kerio Personal Firewall
>
>
>
> Date Published: 2003-04-28
>
> Last Update: 2003-04-28
>
> Advisory ID: CORE-2003-0305-02
>
> Bugtraq ID: 7179, 7180
>
> CVE Name: None currently assigned
>
> Title: Kerio Personal Firewall Replay Attack and Buffer Overflow
>
> Class: Design Error; Boundary Error Condition (Buffer Overflow)
>
> Remotely Exploitable: Yes
>
> Locally Exploitable: Yes
>
> Advisory URL:
> http://www.coresecurity.com/common/showdoc.php?idx=314&idxseccion=10
>
> Vendors contacted:
> - Kerio
> We sent notifications mails to the following addresses:
> security@kerio.com, support@kerio.com, webmaster@kerio.com,
> kpf_bugs@kerio.com several times during March and April
> (2003-03-11, 2003-03-24, 2003-04-10, 2003-04-24) and never
> received an answer from Kerio.
>
> Release Mode: USER RELEASE
>
>
> *Vulnerability Description:*
>
> Kerio Personal Firewall (KPF) is a firewall for workstations designed
> to protect them against attacks from the Internet and the local
> network. We found two security vulnerabilities in KPF's remote
> administration system:
>
> [BID 7179]
> A replay attack is possible against the authenticated/encrypted
> channel for remote administration. A design problem in the
> authentication mechanism for remote administration allows an attacker
> to replay captured packets from a valid remote administration session
> in order to reproduce the administrator's directives to the personal
> firewall.
> For example if the attacker is able to sniff a valid session in which
> the administrator disabled the firewall capabilities, then the
> attacker will gain the ability to disable the personal firewall at
> will at any time in the future.
>
> [BID 7180]
> A remotely exploitable buffer overflow exists in the administrator
> authentication process.
>
>
> *Vulnerable Packages:*
>
> Kerio Personal Firewall version 2.1.4 and previous versions.
>
>
> *Solution/Vendor Information/Workaround:*
>
> Contact the vendor for a fix.
> Workaround: disable the remote administration feature.
>
>
> *Credits:*
>
> These vulnerabilities were found by Emiliano Kargieman, Hernán Gips
> and Javier Burroni from Core Security Technologies during
> Bugweek 2003 (March 3-7, 2003).
>
>
> *Technical Description - Exploit/Concept Code:*
>
> We found two security vulnerabilities in Kerio PF's remote
> administration system.
>
> [BID 7179]
> A replay attack is possible against the authenticated/encrypted
> remote administration channel. As a result of a design problem in the
> authentication mechanism for remote administration, it is possible
> to replay a previously captured administration session.
>
> If 'S' is the workstation running Kerio personal firewall and 'C' is
> the administrator workstation, the following scheme shows the initial
> key exchange and authentication packets for a remote administration
> session:
>
> S C
> <--- connect
> ---> 10 bytes (0f 00 0a 00 01 00 00 00 02 00)
> [*] ---> 128 bytes (the initial 64 bytes are 0 and the last
> 64 bytes are the 'public' key)
> ---> 128 bytes (Everything is 0ed except the last 4 bytes
> [01 00 01 00])
> [0] <--- 4 bytes (00 00 00 40)
> [1] <--- 64 bytes (This 64 bytes change from session to session)
> [2] <--- 32 bytes (From now on, everything is encrypted and differs
> from session to session)
> ---> 4 bytes ()
> [3] <--- 64 bytes (user authentication)
> ........
> ........ (The session continues with commands and responses)
> ........
>
> [*] The last 64 bytes of this packet are read from the file
> 'persfw.key' on the Kerio installation directory.
>
> It was noted from analyzing these sessions that the first differences
> between different sessions come from the administrator's workstation
> 'C'. This led us to try replaying an administration session as a
> whole, with the unexpected result that it was deemed valid by 'S'.
> This shows that in fact no randomization or serialization is used on
> the 'server' side 'S', and thus there is no way for Kerio to ensure
> that the session is new and not a replay of an old one.
>
> As a result, an attacker with access to an encrypted administration
> session can record the session and replay it to the server at a later
> time to reissue the administration commands to the personal firewall.
> The commands replayed can include enabling/disabling the firewall,
> adding firewall rules, etc.
>
>
> [BID 7180]
> A remotely exploitable buffer overflow exists in the administrator
> authentication process. When Administrator connects to the firewall a
> handshake occurs in order to establish an encrypted session. The 4th
> packet of the handshake (the first packet sent by the administrator)
> is a 4 byte packet data, with a fixed number of 0x40 (64) indicating
> the size of the following packet expected to contain the
> administrator's key.
> No boundary checks exist at the firewall side for processing this
> data, and the recv() reads the 4 bytes and then attempts to read the
> amount of data indicated by the 4 bytes to a buffer on the stack.
> As a result an attacker connecting to the administration port on the
> personal firewall can construct a packet sequence that will overflow
> the buffer on the stack, allowing her to execute arbitrary code on
> the machine running the personal firewall.
>
> It is important to note that these packets are accepted by the
> personal firewall before authentication of the administrator takes
> place.
>
> The following proof of concept Python script will make the program
> jump to address 0x41414141. Note that there is enough space in the
> buffer (approx. 1800 bytes) to insert a shell code.
>
> ---------------------
> import os
> import socket
> import struct
> import string
>
> def g():
> fd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> try:
> fd.connect(('192.168.66.160', 44334))
> fd.recv(10)
> fd.recv(256)
> fd.send(struct.pack('!L', 0x149c))
> astr = 'A'*0x149c
> fd.send(astr)
>
> except Exception, e:
> print e
> pass
>
> fd.close()
>
> g()
> ---------------------
>
>
>
> *About Core Security Technologies*
>
> Core Security Technologies develops strategic security solutions for
> Fortune 1000 corporations, government agencies and military
> organizations. The company offers information security software and
> services designed to assess risk and protect and manage information
> assets.
> Headquartered in Boston, MA, Core Security Technologies can be
> reached at 617-399-6980 or on the Web at http://www.coresecurity.com.
>
> To learn more about CORE IMPACT, the first comprehensive penetration
> testing framework, visit:
> http://www.coresecurity.com/products/coreimpact
>
>
> *DISCLAIMER:*
>
> The contents of this advisory are copyright (c) 2003 CORE Security
> Technologies and may be distributed freely provided that no fee is
> charged for this distribution and proper credit is given.
>
> $Id: Kerio-advisory.txt,v 1.6 2003/04/28 14:52:05 carlos Exp $
>
>
TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2025 AOH