zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2693) DOS attack on wchp/wchc four letter words (4lw)
Date Tue, 21 Feb 2017 17:57:44 GMT

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15876398#comment-15876398
] 

ASF GitHub Bot commented on ZOOKEEPER-2693:
-------------------------------------------

Github user hanm commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/179#discussion_r102273810
  
    --- Diff: src/java/main/org/apache/zookeeper/server/NettyServerCnxn.java ---
    @@ -267,10 +267,17 @@ private boolean checkFourLetterWord(final Channel channel,
         {
             // We take advantage of the limited size of the length to look
             // for cmds. They are all 4-bytes which fits inside of an int
    -        String cmd = FourLetterCommands.getCmdMapView().get(len);
    -        if (cmd == null) {
    +        if (!FourLetterCommands.isKnown(len)) {
                 return false;
             }
    +
    +        // ZOOKEEPER-2693: don't execute 4lw if it's not enabled.
    +        String cmd = FourLetterCommands.getCommandString(len);
    +        if (!FourLetterCommands.isEnabled(cmd)) {
    +            LOG.debug("Command {} is not executed because it is not white listed.", cmd);
    +            return true;
    --- End diff --
    
    Thanks @arshadmohammad for your suggestion, I like this approach from a user experience
point of view as it provides nice error message on client side.
    
    I am a little bit concerned that instead of doing a (nearly) NOP on server side to block
a command the way the patch is doing now (which just cost a look up), any command including
garbage now costs some string printing plus has to go through network stack to send the bytes
back. This may lead potential vulnerable point, though it might also be OK as one could argue
if we are in such case (ZK server is wide open, every bets is off.). I tend to lean towards
the safer side though so I'll wait for a while for other comments regarding this issue.


> DOS attack on wchp/wchc four letter words (4lw)
> -----------------------------------------------
>
>                 Key: ZOOKEEPER-2693
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2693
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: security, server
>    Affects Versions: 3.4.0, 3.5.1, 3.5.2
>            Reporter: Patrick Hunt
>            Assignee: Michael Han
>            Priority: Blocker
>             Fix For: 3.4.10, 3.5.3
>
>         Attachments: ZOOKEEPER-2693-01.patch
>
>
> The wchp/wchc four letter words can be exploited in a DOS attack on the ZK client port
- typically 2181. The following POC attack was recently published on the web:
> https://webcache.googleusercontent.com/search?q=cache:_CNGIz10PRYJ:https://www.exploit-db.com/exploits/41277/+&cd=14&hl=en&ct=clnk&gl=us
> The most straightforward way to block this attack is to not allow access to the client
port to non-trusted clients - i.e. firewall the ZooKeeper service and only allow access to
trusted applications using it for coordination.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message