vuln.sg  

vuln.sg Vulnerability Research Advisory

AGEphone における SIP パケット処理に関するバッファオーバーフロー脆弱性

by Tan Chew Keong タン チュー ケオン
Release Date: 2006-07-25

   [en] [jp]

概要

AGEphone にバッファオーバーフローの脆弱性があります。悪意のある人は、この脆弱性を利用しAGEphoneユーザのシステムに、任意のコードを実行ことがで きます。


問題を確認したバージョン

AGEphone for Windows version 1.24 and 1.38.1


問題

AGEphone にバッファオーバーフローの脆弱性があります。それが、巧妙に細工された SIP パケットを処理するとき、バッファオーバーフローが発生します。悪意のある 攻撃者 は、この問題を利用し AGEphone を実行するユーザの権限で任意のコードを実行できる可能性があります。

バッファオーバーフローの脆弱性が AGEphone の "sipd.dll" にあります。


バッファオーバーフローの脆弱性が "sipd.dll" の以下の似ているの function にあります。

function_100115D0(char *receivedSIPdata)
{
DWORD value;
char buffer1[20];
char buffer2[40];

if(receivedSIPdata != NULL)
{
// Skip leading SPACE and TAB characters
while(*receivedSIPdata != NULL)
{
if(*receivedSIPdata == 0x20 || *receivedSIPdata == 0x09)
receivedSIPdata++;
else
break;
}

if(strnicmp(receivedSIPdata, "SIP/", 4) == 0)
{
// BUFFER OVERFLOW when string read into buffer1 or buffer2 is overly long!!!
// "SIP/" が SIP パケットで異常に長いならば、バッファオーバーフローが発生します。
 
sscanf(receivedSIPdata, "%s %d %s\r\n", buffer1, value, buffer2);
return value;
}
else if(strnicmp(receivedSIPdata, "INVITE", 6) == 0)
{
...
}
else if(...) // Other else-if statements to determine the SIP command
{
}
}
}

悪意のSIPパケットの例 1:

SIP/AAAAAAAA[約-68-個]AAAAAA 1 A
From: test
To: test

悪意のSIPパケットの例 2:

SIP/A 1 AAAAAAAA[約-48-個]AAAAAA
From: test
To: test
 


脆弱性のテストコード

これは脆弱性のテストのために POC コードです。この POC コードは、バッファオーバーフローを利用し calc.exe を実行します。このPOC コードは、英語版のWindows XP SP2 か 日本語版のWindows 2000 SP4 が必要です。

  • AGEphoneExp.cpp (バッファオーバーフローを利用し calc.exe を実行します)

Usage : AGEphoneExp.exe <destIP> <destSIP_PORT>
 
例:
AGEphoneExp.exe 192.168.1.111 16100
 


対策

Version 1.40 へのバージョンアップをしてください。修正版のダウンロード


発見と報告の経緯

2006年07月21日 - 脆弱性の発見。
2006年07月22日 - ベンダに報告しました。
2006年07月24日 - ベンダは修正版をリリースしました。
2006年07月25日 - 本脆弱性の公開。


Contact
For further enquries, comments, suggestions or bug reports, simply email them to