[
https://issues.apache.org/jira/browse/ZOOKEEPER-2693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15870415#comment-15870415
]
ASF GitHub Bot commented on ZOOKEEPER-2693:
-------------------------------------------
Github user eribeiro commented on a diff in the pull request:
https://github.com/apache/zookeeper/pull/179#discussion_r101587208
--- Diff:
src/java/main/org/apache/zookeeper/server/command/FourLetterCommands.java ---
@@ -153,13 +155,33 @@
*/
public final static int telnetCloseCmd = 0xfff4fffd;
- final static HashMap<Integer, String> cmd2String =
- new HashMap<Integer, String>();
+ private static final String ZOOKEEPER_4LW_COMMANDS_WHITELIST =
"zookeeper.4lw.commands.whitelist";
+
+ final static Map<Integer, String> cmd2String = new HashMap<Integer,
String>();
+
+ final static Set<String> whiteListedCommands = new HashSet<String>();
public static Map<Integer, String> getCmdMapView() {
return Collections.unmodifiableMap(cmd2String);
}
+ // ZOOKEEPER-2693: Only allow white listed commands.
+ public static Set<String> getWhiteListedCmdView() {
+ if (!whiteListedCommands.isEmpty()) {
+ return Collections.unmodifiableSet(whiteListedCommands);
+ }
+
+ String commands =
System.getProperty(ZOOKEEPER_4LW_COMMANDS_WHITELIST);
+ if (commands != null) {
+ String[] list = commands.split(",");
+ for (String cmd : list) {
+ whiteListedCommands.add(cmd.trim());
--- End diff --
I guess we if we have "ruok, ,cons", it will insert an empty string in the
collection, that is, need to check `if (!cmd.trim().isEmpty())`, right?
> 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
>
>
> 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)