Why am I getting crossvalidation scores of 0 only
I think that perhaps the problem is that cross_val_score() in its default options for the parameter cv the documentation says:


  cv : int, cross-validation generator or an iterable, optional
  Determines the cross-validation splitting strategy. Possible inputs for cv are:
  
  None, to use the default 3-fold cross validation,
  integer, to specify the number of folds in a (Stratified)KFold,
  An object to be used as a cross-validation generator.
  An iterable yielding train, test splits.
  For integer/None inputs, if the estimator is a classifier and y is either binary or multiclass, StratifiedKFold is used. In all other cases, KFold is used.


So my guess is that, if cv not specified the split is being done without stratification. This, coupled with the fact that by default in the iris dataset the targets are perfectly sorted (50 label 0, then 50 label 1 and then 50 label 2) means that in each 3 k-fold you are training with two classes and predicting the third one and that's why the scores are 0.

Two solutions:

A) Shuffle the data:

from sklearn.datasets import load_iris  
import pandas as pd
iris = load_iris()
from catboost import CatBoostClassifier
model = CatBoostClassifier(iterations=50, 
                      learning_rate=0.1, depth=4, 
                      loss_function='MultiClass')
from sklearn.model_selection import cross_val_score
df = pd.DataFrame({'X0':iris.data[:,0],'X1':iris.data[:,1], 'X2':iris.data[:,2],'X3':iris.data[:,3],'Y':iris.target})
df = df.sample(frac=1).reset_index(drop=True)
scores = cross_val_score(model, df[['X0', 'X1', 'X2', 'X3']], df['Y'])
print(scores)


Out: 

[0.96 0.94 0.94]


B) Modify the cv parameter:

from sklearn.datasets import load_iris  
iris = load_iris()
from catboost import CatBoostClassifier
model = CatBoostClassifier(iterations=50, 
                      learning_rate=0.1, depth=4, 
                      loss_function='MultiClass')
from sklearn.model_selection import cross_val_score

scores = cross_val_score(model, iris.data, iris.target, cv = 4)
print(scores)


Out: 

[1.         0.92105263 0.91891892 0.78378378]