On Wed, 26 Nov 2014 11:38:28 +0900
Yusuke Iwase <[email protected]> wrote:
> Hi Fujita-san,
>
> I posted the following patch while ago,
> but I'm very sorry that I confused you because I made a mistake.
>
> When you have a time, could you review my patch again please?
Sorry, I overlooked. Applied, thanks a lot!
> Regards,
> Iwase
>
> On 2014年11月10日 13:44, Yusuke Iwase wrote:
>> I'm very sorry I didn't include rest_firewall.py and rest_qos.py in my patch.
>> I suggested for ofctl_rest.py only...
>>
>> Here is the patch for rest_firewall.py and rest_qos.py.
>>
>> ---------------------------------------------------------------
>> Subject: [PATCH] fix security problem of some RESTful apps
>>
>> It is not safe to use eval function because input data(request body) is not
>> checked
>> For example, someone can send this data to remove all files in the directory
>> "import('os').system('rm -rf .')"
>>
>> I suggest to use json.loads to parse the request body if the data is json
>> format
>> or disable builtin functions like:
>> eval(req.body, {"__builtins__":None})
>>
>> Signed-off-by: Takeshi <[email protected]>
>> Signed-off-by: IWASE Yusuke <[email protected]>
>> ---
>> ryu/app/rest_firewall.py | 4 ++--
>> ryu/app/rest_qos.py | 2 +-
>> 2 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/ryu/app/rest_firewall.py b/ryu/app/rest_firewall.py
>> index 01eb6e2..4e52b1f 100644
>> --- a/ryu/app/rest_firewall.py
>> +++ b/ryu/app/rest_firewall.py
>> @@ -492,7 +492,7 @@ class FirewallController(ControllerBase):
>>
>> def _set_rule(self, req, switchid, vlan_id=VLANID_NONE):
>> try:
>> - rule = eval(req.body)
>> + rule = json.loads(req.body)
>> except SyntaxError:
>> FirewallController._LOGGER.debug('invalid syntax %s', req.body)
>> return Response(status=400)
>> @@ -516,7 +516,7 @@ class FirewallController(ControllerBase):
>>
>> def _delete_rule(self, req, switchid, vlan_id=VLANID_NONE):
>> try:
>> - ruleid = eval(req.body)
>> + ruleid = json.loads(req.body)
>> except SyntaxError:
>> FirewallController._LOGGER.debug('invalid syntax %s', req.body)
>> return Response(status=400)
>> diff --git a/ryu/app/rest_qos.py b/ryu/app/rest_qos.py
>> index 057a3fd..537639f 100644
>> --- a/ryu/app/rest_qos.py
>> +++ b/ryu/app/rest_qos.py
>> @@ -499,7 +499,7 @@ class QoSController(ControllerBase):
>>
>> def _access_switch(self, req, switchid, vlan_id, func, waiters):
>> try:
>> - rest = eval(req.body) if req.body else {}
>> + rest = json.loads(req.body) if req.body else {}
>> except SyntaxError:
>> QoSController._LOGGER.debug('invalid syntax %s', req.body)
>> return Response(status=400)
>>
>> --
>> 1.9.1
>
>
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel