[
https://issues.apache.org/jira/browse/ZOOKEEPER-2693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15872834#comment-15872834
]
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_r101877413
--- Diff:
src/java/main/org/apache/zookeeper/server/command/FourLetterCommands.java ---
@@ -153,11 +159,69 @@
*/
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";
+
+ private static final Logger LOG =
LoggerFactory.getLogger(FourLetterCommands.class);
+
+ private static final Map<Integer, String> cmd2String = new
HashMap<Integer, String>();
+
+ private static final Set<String> whiteListedCommands = new
HashSet<String>();
+
+ private static boolean whiteListInitialized = false;
+
+ // @VisibleForTesting
+ public static void resetWhiteList() {
+ whiteListInitialized = false;
+ whiteListedCommands.clear();
+ }
+
+ /**
+ * Return the string representation of the specified command code.
+ */
+ public static String getCommandString(int command) {
+ return cmd2String.get(command);
+ }
+
+ /**
+ * Check if the specified command code is from a known command.
+ *
+ * @param command The integer code of command.
+ * @return true if the specified command is known, false otherwise.
+ */
+ public static boolean isKnown(int command) {
+ return cmd2String.containsKey(command);
+ }
- public static Map<Integer, String> getCmdMapView() {
--- End diff --
While I am on this, this legacy method can be optimized as a boolean query
instead of returning a collection, so did the change for this as well (in
addition to the white list collection.).
> 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)